Open Source Project of the Day (Part 40): copyparty - Single-File Portable File Server with Resumable Uploads, Dedup, and Multi-Protocol Support

A deep dive into copyparty, a dependency-free portable file server in one file: accelerated resumable uploads, dedup, WebDAV, SFTP, FTP, TFTP, zeroconf, media indexer, thumbnails, and browser-based management

·8 min read·Tool Recommendations

Introduction

"Portable file server with accelerated resumable uploads, dedup, WebDAV, SFTP, FTP, TFTP, zeroconf, media indexer, thumbnails++ all in one file."

This is Part 40 of the "Open Source Project of the Day" series. Today we look at copyparty (GitHub).

Need a file server on a LAN or a temporary machine without installing Nginx, Samba, or a pile of dependencies? copyparty packs a full file server into one file: run copyparty-sfx.py (a self-extracting archive plus a small Python script) or copyparty.pyz (a Python zipapp) on any machine with Python, with zero required dependencies (all deps are optional). It supports accelerated resumable uploads, dedup, WebDAV / SFTP / FTP / TFTP, zeroconf, media indexing, thumbnails, and browser-based cut/paste/rename/batch rename, RSS/OPDS, media playback, Markdown preview, and directory download as ZIP/TAR — and even “download while still uploading” (race the beam). It fits ad-hoc sharing, LAN storage, Raspberry Pi/NAS, or a USB stick.

Why this project?

  • 📦 Single-file deployment — One .py or .pyz; no pip install, just Python
  • Resumable uploads/downloads — Large files and flaky networks are handled better
  • 🔄 Dedup — Same content stored once, saving space
  • 🌐 Multi-protocol — HTTP(S), WebDAV, SFTP, FTP(S), TFTP, SMB/CIFS
  • 🖼️ Media and thumbnails — Indexing, thumbnails, built-in player and playlists
  • 📂 Manage in the browser — Cut, paste, rename, batch rename, ZIP/TAR pack, Markdown preview

What You'll Learn

  • What copyparty is and its “one file, no deps” design
  • Ways to run it: sfx, zipapp, Docker, Windows EXE, mobile
  • Core features: resumable transfers, dedup, multi-protocol, zeroconf, media and thumbnails
  • Browser features and “race the beam”
  • Quick start and configuration ideas
  • How it compares to other lightweight file servers

Prerequisites

  • Python installed (version 2 or 3 per project docs)
  • Basic idea of “file server” and “WebDAV” helps

Project Background

Project Introduction

copyparty is a portable file server whose main idea is “all in one file”: a single executable (self-extracting sfx or Python zipapp) provides full file-serving with no mandatory external dependencies (optional deps for extra features).

Problems it solves:

  • You need file sharing on a LAN or ad-hoc setup without complex services or many dependencies
  • You want resumable uploads, dedup, and multiple protocols (WebDAV, FTP, SFTP, etc.) in a lightweight stack
  • You want something that runs on Raspberry Pi, NAS, USB stick, or any Python-capable environment with no install step
  • You want to manage files in the browser (upload, download, rename, pack, preview)

Target users:

  • Individuals or small teams doing LAN or ad-hoc file sharing
  • Users who like “single-file portable” tools
  • Developers who want one service exposing WebDAV/FTP/SFTP
  • People running a file server on embedded or resource-limited devices

Author and Resources

Project Data

Stack: Python (2 or 3 per version), mostly stdlib; optional deps. Runs as zipapp, self-extracting sfx, Docker, Windows EXE, Android/iOS, etc.


Main Features

Core Purpose

copyparty’s job is to start a full-featured file server from a single file on any Python-capable system, providing:

  1. HTTP(S) web UI — Browse, upload, download, cut/paste, rename, delete, batch rename, pack directories (ZIP/TAR)
  2. Resumable uploads and downloads — Better for large files and unstable networks
  3. Dedup — Same content stored once
  4. Multi-protocol — WebDAV, SFTP, FTP(S), TFTP, SMB/CIFS on the same storage
  5. zeroconf — Auto-discovery on the LAN (e.g. mDNS)
  6. Media and index — Media indexing, thumbnails, built-in player and playlists
  7. Extras — RSS, OPDS (e-books), Markdown preview, etc.

Use Cases

  1. Ad-hoc LAN sharing — Move files between devices in a room or at home without USB or cloud
  2. Dev/test — Quick WebDAV/FTP server on your machine or VM for scripts and tools
  3. Raspberry Pi / NAS — Copy one file and run; use zeroconf for discovery
  4. USB / mobile — Run on Android, iOS, or Windows where Python is available
  5. Read-only demo — Mount read-only and share for browsing (e.g. Demo)

Quick Start

Requirement: Python installed (see project for version).

Option 1: Self-extracting sfx (recommended)

Download copyparty-sfx.py from copyparty.eu or GitHub Releases, then:

chmod +x copyparty-sfx.py
./copyparty-sfx.py
 
# Or specify share path and options
./copyparty-sfx.py -e2 /path/to/share

Open the URL shown (e.g. http://0.0.0.0:3923) in a browser. More options: Quickstart, CLI.

Option 2: Python zipapp (.pyz)

Download copyparty.pyz (or copyparty-en.pyz for English-only), then:

python3 copyparty.pyz -e2 /path/to/share

Option 3: Docker / Windows EXE / mobile

Core Features

  1. Single file, no required deps — sfx or zipapp runs as-is; all extra deps are optional
  2. Accelerated resumable transfers — Both upload and download can resume
  3. Dedup — One copy per unique content
  4. Multi-protocol — HTTP(S), WebDAV, SFTP, FTP(S), TFTP, SMB/CIFS
  5. zeroconf — LAN discovery (when enabled)
  6. Media index and thumbnails — Auto index, thumbnails, player, playlists
  7. Browser management — Cut/paste, rename, delete, batch rename, RSS, OPDS, Markdown, ZIP/TAR pack
  8. “Race the beam” — Download while file is still uploading
  9. Read-only and permissions — Configurable read-only shares and access control (see CLI/docs)
  10. Multi-platform — Windows EXE, Docker, Android, iOS, etc.

Project Advantages

AspectcopypartyNginx static/WebDAVCloud/NAS apps
DeployOne file + PythonInstall and configureAccount or device
DependenciesNone requiredWeb server, etc.Vendor service
Resumable✅ Built-inConfigure yourselfVaries
Dedup✅ Built-inNoSome products
Multi-protocolWebDAV/FTP/SFTP/…Often multiple appsVaries
Portable✅ Single fileNoNo
Media/thumbs✅ Built-inExtra solutionVaries

Why choose copyparty?

  • One file, zero deps — good for temporary or “just run something” setups
  • Resumable and dedup out of the box — friendly to large and duplicate files
  • One service for Web, WebDAV, FTP, SFTP, etc.
  • Manage everything in the browser (or use any protocol client)
  • Official demo and video make it easy to try

Project Deep Dive

Architecture and Run Modes

  • sfx (self-extracting) — File contains a tar.gz and a small Python script; extracts and starts the server when run.
  • zipapp (.pyz) — A zipapp-format zip executed by Python; no extract step.
  • Process — Single process serves HTTP(S), WebDAV, etc.; SFTP/FTP/TFTP/SMB can be enabled depending on build/packaging.

Flow: client → HTTP/WebDAV/FTP → copyparty → local filesystem (with optional dedup, thumbnails, index) → response.

Configuration

  • Command-line — Share path, port, read-only, auth, zeroconf, protocol toggles, etc.
  • Full options: copyparty.eu/cli, GitHub Quickstart.

Security Notes

  • Default may be no authentication; fine for LAN or temporary use, but avoid exposing to the internet without reading the docs.
  • For production or public use, check auth, HTTPS, and bind address in the documentation.

Official

Mirrors and Variants

Who It’s For

  • Anyone who needs LAN or ad-hoc file sharing without complex setup
  • Users who like single-file, portable tools
  • Developers who want WebDAV/FTP/SFTP from one service
  • People running a lightweight file server on Raspberry Pi, NAS, USB, or mobile

Visit my homepage for more guides and projects.