mirror of
https://github.com/besoeasy/file-drop.git
synced 2026-01-25 12:49:04 -06:00
16ebba7e2a949f33e34ee4e4a69c3ec579473103
- Updated the Nostr handler to accept an array of NPUBs and return relevant statistics. - Removed the old admin.html file and replaced it with a new dashboard.html for better user experience. - Modified index.html to link to the new dashboard instead of the old admin page. - Enhanced the dashboard layout and functionality to display multiple operators and their statuses. - Improved error handling and loading states in the dashboard.
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
docker run -d --restart unless-stopped \
-p 3232:3232 \
-p 4001:4001/tcp \
-p 4001:4001/udp \
-v file-drop-data:/data \
-e STORAGE_MAX=200GB \
-e FILE_LIMIT=5GB \
-e NPUB=npub1yourkey1...,npub2yourkey2...,npub3yourkey3... \
--stop-timeout 15 \
--name file-drop \
ghcr.io/besoeasy/file-drop:main
Docker Compose:
services:
file-drop:
image: ghcr.io/besoeasy/file-drop:main
container_name: file-drop
restart: unless-stopped
stop_grace_period: 15s
ports:
- "3232:3232"
- "4001:4001/tcp"
- "4001:4001/udp"
volumes:
- file-drop-data:/data
environment:
- STORAGE_MAX=200GB
- FILE_LIMIT=5GB
- NPUB=npub1yourkey1...,npub2yourkey2...,npub3yourkey3...
volumes:
file-drop-data:
Open http://localhost:3232 after starting.
Configuration
STORAGE_MAX(default: 200GB) – IPFS storage cap before GCFILE_LIMIT(default: 5GB) – Max size per uploadNPUB– Comma-separated list of Nostr pubkeys (npub or hex) to enable Nostr mode. Example:npub1abc...,npub2def...,npub3ghi...
Persist your IPFS repo by mounting /data (recommended).
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
Dashboard & API
- Dashboard: /dashboard.html
- Upload API:
PUT /uploadwith form fieldfile
Description
A decentralized, open-source solution for sharing images, videos, and any other files.
Languages
JavaScript
52.5%
HTML
46.3%
Dockerfile
1.2%