A self-hostable, privacy-first file sharing system with both hosted upload and direct P2P transfer capabilities.
See Dropgate in action here: dropgate.link
To prevent and monitor for abuse, DEBUG-level logging and strict rate limits are enforced.
Dropgate is a modern, privacy-respecting file sharing system designed to be easy to self-host and easy to use.
It ships as three parts:
- Dropgate Client: A lightweight Electron app for uploading, encrypting, and sharing files.
- Dropgate Server: A Node.js backend that hosts the API + Web UI, with optional end-to-end encryption and configurable storage.
- @dropgate/core: A headless TypeScript library that powers the client and server, usable in custom projects.
Dropgate supports two ways to transfer files:
- Hosted upload (classic mode) — you upload to your server, share a link, and the server holds the file temporarily.
- Direct transfer (P2P) — the file can move device-to-device, with the server only helping peers find each other.
In today’s world, privacy and anonymity are more important than ever. Dropgate was built to make secure file sharing accessible, transparent, and fully self-hostable — whether on a home NAS, a VPS, or in Docker.
- 🔐 End-to-End Encryption (E2EE) – Encrypt on the sender device, decrypt on the recipient device. Encryption keys never need to reach the server.
- 🕵️ Privacy First – No analytics, no tracking, and no logging of file contents.
- 🔗 Share Links That “Just Work” – Simple links for recipients that expire based on download count or lifetime.
- 🚀 Direct Transfer (P2P) – Great for big files or “zero-storage” sharing (when enabled).
- 🧩 Built-in Web UI – Send and receive from a browser, no install required.
- ⚙️ Configurable Server Controls – Tune size limits, rate limits, retention, and storage caps.
- 🧰 Self-Host Ready – Works behind common reverse proxies and tunnels.
/Dropgate
├── client/ # Electron-based uploader app (GPL-3.0)
├── server/ # Node.js server + Web UI (AGPL-3.0)
├── packages/
│ ├── dropgate-core/ # Shared TypeScript library (Apache-2.0)
├── docs/ # Privacy, troubleshooting, and technical notes
git clone https://github.com/WillTDA/Dropgate.git
cd DropgateSee the client README for installation, usage, and build instructions.
See the server README for configuration, Docker setup, and deployment.
See the core README for API documentation and usage examples.
Dropgate’s design is built around you staying in control of your data:
- E2EE means even the server operator can’t read encrypted uploads.
- Hosted uploads are intended to be temporary (downloaded and/or expired, then removed).
- Direct transfer can avoid server storage entirely (when enabled).
If you self-host, you decide how strict you want to be — from private-only to public-facing with limits.
- Client: GPL-3.0 License – See
client/LICENSE - Server: AGPL-3.0 License – See
server/LICENSE - Core Library: Apache-2.0 License – See
packages/dropgate-core/LICENSE
- Logo designed by TheFuturisticIdiot
- Built with Electron and Node.js
- Inspired by the growing need for privacy-respecting, open file transfer tools
- 💬 Need help or want to chat? Join our Discord Server
- 🐛 Found a bug? Open an issue
- 💡 Have a suggestion? Submit a feature request
