mirror of
https://github.com/besoeasy/file-drop.git
synced 2026-01-08 12:20:06 -06:00
main
File Drop
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.
Why File Drop
- 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
Supported Platforms
FileDrop is integrated into the following platforms:
| Platform | Description | Link |
|---|---|---|
| 0xchat | Private, decentralized Nostr chat | 0xchat.com |
Quick Start
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:main
Open http://localhost:3232 after starting.
For full Docker configuration options and Docker Compose setup, see docker.md.
How It Works
- 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
Nostr Mode (Optional)
- 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
API Endpoints
File Upload
Upload a file directly from your local system:
curl -X POST -F "file=@yourfile.pdf" http://localhost:3232/upload
Response:
{
"status": "success",
"cid": "QmX...",
"url": "https://dweb.link/ipfs/QmX...?filename=yourfile.pdf",
"size": 12345,
"type": "application/pdf",
"filename": "yourfile.pdf"
}
Remote URL Upload
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"
}
Description
A decentralized, open-source solution for sharing images, videos, and any other files.
Languages
JavaScript
52.5%
HTML
46.3%
Dockerfile
1.2%