< the skull

COPYPARTY IS THE FILE SERVER I DID NOT KNOW I NEEDED
====================================================
2026-07-19

A practical love letter to a portable file server that keeps surprising me.

You know that rare kind of software that solves the problem you installed it
for, then quietly reveals that it can solve another five?

Well, I think I found one.

I have been using copyparty [1], and I am honestly loving it. At first, the idea
sounded almost too simple: run a program, point it at a directory, open a
browser, and there are your files. But copyparty is one of those projects where
“simple” describes the entrance, not the building.

Behind that browser window is a remarkably capable file server. It can handle
resumable uploads, searchable indexes, duplicate detection, user accounts,
per-folder permissions, media previews, WebDAV, SFTP, FTP and several other
useful things. It runs on an absurd variety of systems. It can be a quick file
drop, a personal web drive, a media shelf, a bridge between old machines or the
front end of a much larger storage setup.

And somehow it still feels light.

The first thing I loved: almost no ceremony
-------------------------------------------

There is a particular exhaustion that comes with self-hosted software. Sometimes
you want one useful service and receive, as a bonus, a database, a cache, an
identity platform, six containers and a small career in YAML maintenance.

Copyparty goes in the opposite direction.

The server itself only needs Python; its additional dependencies are optional
and unlock extra features. The official project provides a self-contained Python
version, a Python zipapp, a Windows executable and a Docker image. It can run on
Linux, Windows, macOS, Android, iOS and a rather entertaining list of less
common architectures and operating systems.

The fastest test is almost suspiciously easy:

  python copyparty-sfx.py

That is enough to turn the current directory into a browser-accessible file
server. For a quick transfer on a trusted network, a temporary lab or an
emergency involving two machines that refuse to cooperate, this is wonderful.

There is an important warning, however: running copyparty without arguments
gives everyone who can reach it read and write access to the current folder.
That default is convenient for testing, not a production security policy. Before
exposing it beyond a trusted network, configure accounts, volumes and
permissions, and place it behind properly configured HTTPS when appropriate.

Easy to start does not mean safe to forget.

It is much more than a page with files
--------------------------------------

The web interface is where copyparty stopped feeling like a clever transfer
utility and started feeling like infrastructure I could actually keep.

From the browser, I can navigate directories, upload and download files, create
folders, rename items, move or copy them and undo accidental uploads when the
server allows it. Folders can be downloaded as ZIP or TAR archives. There is a
navigation pane, keyboard shortcuts, thumbnails, an image gallery, a Markdown
viewer and even media-oriented features such as audio playback, playlists and
server-side transcoding when the optional tools are available.

This matters because a file server should not require every person to understand
a file server.

Give someone a clean web address and the interaction is already familiar. They
do not need to mount a network share. They do not need an FTP client. They do
not need to learn which operating system is running on the other side. A browser
is enough.

But if a browser is not enough for your workflow, copyparty also speaks WebDAV,
SFTP, FTP, TFTP and SMB/CIFS, depending on configuration and platform support.
It can announce services on a local network through Zeroconf, mDNS and SSDP. The
same collection of files can therefore meet modern browsers, desktop file
managers, command-line tools and old machines without forcing everything through
one narrow door.

That flexibility is not decorative. It is useful.

Resumable uploads are the feature you appreciate after something fails
----------------------------------------------------------------------

Large uploads are easy to advertise when the connection is perfect. Real
networks are less polite.

Copyparty's main browser uploader, called up2k, supports resumable and
multithreaded transfers. If an upload is interrupted, the useful response is not
to punish the user by starting again from zero. The server and browser can
continue the work.

This is one of those features that sounds technical until you need it. Then it
becomes the entire reason you trust the software.

It also supports write-only folders, filename randomization, self-destructing
uploads and content-based duplicate handling. A write-only volume is especially
interesting for collecting files: people can submit material without receiving
permission to browse everything that other people have uploaded. With the right
volume permissions, copyparty can behave like a private drop box instead of a
public cupboard.

Search, indexing and the quiet intelligence of deduplication
------------------------------------------------------------

Enable file indexing with `-e2dsa`, and copyparty can scan the shared volumes
and make them searchable from the web interface. Searches can use names, paths,
dates and sizes. With media indexing enabled, metadata such as audio tags can
also become part of the search.

The clever part is that indexing is connected to duplicate detection. Copyparty
can compare content and avoid storing the same upload repeatedly. You can even
drag a local file into the search interface to check whether identical content
already exists somewhere on the server.

This changes how the server feels as a collection grows. It is no longer only a
directory exposed over HTTP. It begins to understand enough about the collection
to help you navigate it.

Not everything needs artificial intelligence.

Sometimes a good index is the intelligent thing.

Accounts and volumes make it practical
--------------------------------------

The permission model is another reason I can imagine copyparty serving very
different roles without becoming a mess.

A volume maps a real directory to a location in the web interface. Each volume
can have its own access rules, and permissions can be assigned to users. One
folder may be public and read-only. Another may allow uploads but hide its
contents. A private directory may be visible only to one account, while an
administrator receives broader file-management permissions.

This separation is simple enough to understand and flexible enough to matter. I
can think in terms of actual use:

  * a public download area;
  * a private family archive;
  * an upload-only inbox;
  * a music library with browser playback;
  * a working directory available through WebDAV;
  * a temporary share with limited permissions.

One service. Different doors. Different keys.

For longer-lived installations, the project recommends using a configuration
file rather than accumulating a heroic command line. The official example shows
global options, accounts and volumes in one readable file, and account or volume
changes can be reloaded without restarting the entire service in supported
setups.

It respects small machines
--------------------------

Perhaps this is the part I like most.

Copyparty does not begin with the assumption that every useful service deserves
a new server. Its project philosophy is wonderfully direct: run anywhere,
support everything, require little preparation and keep dependencies minimal.

That makes it useful on a home server, naturally. But it also makes it
interesting on an old laptop, a small single-board computer, a temporary virtual
machine or some forgotten device that still has a disk, a network connection and
enough life left to be useful.

Software like this gives hardware a second purpose.

And there is something deeply satisfying about that. We are surrounded by
machines that are declared obsolete long before they become incapable. A
portable file server will not solve electronic waste, naturally, but it can turn
an idle computer into a useful point of exchange again. Sometimes the difference
between junk and infrastructure is one good piece of software.

Docker when I want it, plain Python when I do not
-------------------------------------------------

I also appreciate that copyparty does not turn deployment preference into a
religion.

If I want the direct route, I can run the standalone Python package. If I want a
container, the project maintains the `copyparty/ac` image and provides Compose
examples. If I am on Windows, there is an executable. If I want to integrate it
with a service manager, reverse proxy or a more carefully designed storage
layout, the configuration is there.

This is how portable software should behave. It offers choices without making
every choice mandatory.

For a serious deployment, I would still treat it like any other internet-facing
service: use a dedicated account, expose only the directories that are
necessary, grant the smallest useful permissions, keep the software updated, use
HTTPS, understand the reverse-proxy headers and review the project's hardening
guidance. Anonymous uploads deserve additional care, particularly around
browser-rendered HTML, SVG and Markdown content.

Copyparty makes the first ten minutes easy. Security remains our job after that.

Why I am enjoying it so much
----------------------------

There are larger platforms. There are more polished cloud suites. There are
systems with calendars, collaborative documents, contact synchronization and
enough plugins to recreate an office building inside a browser.

Copyparty is not trying to become all of that.

It is trying to move, organize, expose, search and play files extremely well
across an unreasonable number of environments. Its own documentation jokes about
following an “inverse Unix philosophy”: do all the things, and do an okay job.
The joke is fair, but it hides the impressive part. The features do not feel
like a random pile. They orbit the same practical question:

How can I make these files useful from another device?

That question appears simple. It is not. Different users, unreliable uploads,
old protocols, browsers, media, permissions, duplicate data, reverse proxies and
strange operating systems all arrive eventually. Copyparty has apparently met
most of them already.

And this is why I am loving it.

It does not demand that I build my life around the software. It arrives, points
at the files and becomes useful. Then, when I need more, there is usually
another switch, another protocol or another carefully strange feature waiting in
the documentation.

Some software wants to be a platform.

Copyparty wants to be invited to the party, carry every box through the door and
make sure nothing gets lost on the way.

Honestly, it can stay.

Useful official links
---------------------

  * Copyparty on GitHub [2]
  * Official project website and downloads [3]
  * Example configuration [4]
  * Basic Docker Compose example [5]

Links:
  [1] https://github.com/9001/copyparty
  [2] https://github.com/9001/copyparty
  [3] https://copyparty.eu/
  [4] https://github.com/9001/copyparty/blob/hovudstraum/docs/example.conf
  [5] https://github.com/9001/copyparty/blob/hovudstraum/docs/examples/docker/basic-docker-compose/docker-compose.yml


< the skull