Private, decentralized file sharing for Nostr and the web.
One all-in-one storage backend you can drop into anything: your own apps, screenshot tools, pastebin-style pastes, Nostr clients, Reddit posts, forum embeds—anything that needs durable, anonymous file hosting. One File Drop to rule them all and keep you anonymous.
- Anonymous uploads: no accounts, no tracking, no logs
- Resilient by design: served from IPFS; your node needn’t be online 24/7
- Nostr-optimized: you are your own media host (no domain or servers)
- Self-healing: content repopulates across IPFS when your node comes online
FileDrop is integrated into the following platforms:
| Platform | Description | Link |
|---|---|---|
| 0xchat | Private, decentralized Nostr chat | 0xchat.com |
Minimal setup:
docker run -d --restart unless-stopped \
-p 3232:3232 \
-p 4001:4001/tcp \
-p 4001:4001/udp \
-e STORAGE_MAX=200GB \
ghcr.io/besoeasy/file-drop:mainOpen http://localhost:3232 after starting.
For full Docker configuration options and Docker Compose setup, see docker.md.
- Upload – Files stream to your local IPFS node (unpinned)
- Propagate – Content spreads via IPFS as peers request it
- Repopulate – If garbage collected, your node repopulates content when it comes online
- Optional Nostr mode – Automatically fetches your notes, extracts IPFS CIDs, and pins them
- Supports multiple NPUBs (comma-separated)
- Fetches all posts from each configured NPUB (with pagination) and filters out expired notes
- Extracts IPFS CIDs and pins them locally (permanent)
- Caches media from people you follow for redundancy (ephemeral, garbage collected)
- Runs automatically every 3 hours; view status in the admin
Upload a file directly from your local system:
curl -X POST -F "[email protected]" http://localhost:3232/uploadResponse:
{
"status": "success",
"cid": "QmX...",
"url": "https://dweb.link/ipfs/QmX...?filename=yourfile.pdf",
"size": 12345,
"type": "application/pdf",
"filename": "yourfile.pdf"
}Download and upload content from any URL to IPFS:
curl -X POST http://localhost:3232/remoteupload \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com/image.png"}'Response:
{
"status": "success",
"cid": "QmX...",
"url": "https://dweb.link/ipfs/QmX...",
"filename": "image.png",
"size": 12345,
"type": "image/png",
"sourceUrl": "https://example.com/image.png",
"timing": {
"download_ms": 1234,
"upload_ms": 5678,
"total_ms": 6912
},
"timestamp": "2026-01-07T03:18:00.000Z"
}