besoeasy 16ebba7e2a Refactor Nostr handler to support multiple NPUBs and update admin interface to dashboard
- 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.
2026-01-04 22:34:11 +05:30

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.

filedrop

Why File Drop

  • Anonymous uploads: no accounts, no tracking, no logs
  • Resilient by design: served from IPFS; your node neednt 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

Install on Umbrel

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 GC
  • FILE_LIMIT (default: 5GB) Max size per upload
  • NPUB 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

  1. Upload Files stream to your local IPFS node (unpinned)
  2. Propagate Content spreads via IPFS as peers request it
  3. Repopulate If garbage collected, your node repopulates content when it comes online
  4. 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 /upload with form field file
Description
A decentralized, open-source solution for sharing images, videos, and any other files.
Readme 1.3 MiB
Languages
JavaScript 52.5%
HTML 46.3%
Dockerfile 1.2%