v0.1.0 — open source

Share files already
on your server

No uploading. No third parties. Browse your server's filesystem and create share links instantly — with expiry, passwords, and download limits.

Try interactive demo View on GitHub Docker Hub ↗
$ docker compose up -d Copied!
localhost:8080
selfdrop
Shares Settings
+ New Share
A
Active Shares
4
Total Downloads
28
Expired
2
Total Shares
6
All Shares
All 6
Active 4
Expired 2
Q4-Report-Final.pdf active 7 / ∞ expires 3d
vacation-photos.zip (4 files) active 3 / 10 expires 12d
setup-macos.dmg expired 12 / 12
Features

Everything you need.
Nothing you don't.

Built for self-hosters who want direct control without complexity.

Browse your filesystem
Navigate any directory on your server and pick files to share — no uploading required.
Expiry & download limits
Every share link has a configurable expiry date and optional download count limit.
Password protection
Optionally protect any share with a password. The plain-text password is shown once at creation.
Multi-file & ZIP download
Share multiple files in one link. Recipients can download them individually or as a ZIP.
In-browser preview
Images, audio, and video play directly in the browser before downloading.
Masked filenames
Hide real filenames from recipients. Files are served with anonymised names like sdrop-a3f9c2-1.pdf.
Single Docker container
Nginx, Node.js, and the React frontend ship as one image. No external databases or services.
Dark mode
Full dark mode support with system preference detection and manual toggle in the admin menu.

How it works

Up and running in three steps

Mount your files, pick what to share, send the link.

01 — Deploy
Mount your files
Point SelfDrop at any directory on your server. It reads files in-place — nothing is moved or copied.
volumes:
  - /srv/files:/data/files:ro
02 — Browse
Pick a file
Use the admin dashboard to browse your filesystem and select one or more files to share. Set an expiry, password, and download limit.
03 — Share
Send the link
Copy the share link and send it. Recipients get a clean download page — no account required.

Deployment

Works with your proxy

Designed to sit behind Nginx, Traefik, or Caddy with minimal configuration.

Nginx
x-accel-redirect
Best performance. Nginx serves files directly, bypassing Node entirely. Recommended for large files.
Traefik
stream mode
Set SENDFILE_MODE=stream. Works out of the box with Docker labels and automatic TLS.
Caddy
stream mode
Two lines in your Caddyfile. Automatic HTTPS with Let's Encrypt and the simplest configuration of the three.
Free & open source — MIT License

Ready to self-host?

One container. Your files. Your server.

View on GitHub Try the demo