A self-hosted file drop for your home network. Drag files in from your phone or laptop, they land on a server you control — no cloud, no accounts.
- Chunked uploads (handles large files without choking the browser or server)
- Automatic video compression and audio extraction via
ffmpeg - Lightweight vanilla JS/HTML frontend, no build step
- Single Node/Express process, easy to run on a Raspberry Pi, NAS, or spare machine
npm install
npm startThe server listens on http://localhost:3000 by default. Set a PORT environment variable to change it:
PORT=8080 npm startOpen the printed URL from any device on the same network to upload and browse files.
This is built for a trusted local network, not the public internet. There is currently no authentication — anyone who can reach the server can upload and download files. Do not port-forward this or expose it directly to the internet without adding your own auth layer (reverse proxy with basic auth, VPN/Tailscale, etc.).
- The frontend uploads files in chunks to
POST /upload, tagging each chunk with an upload UUID so the server can reassemble it. - Uploaded files are stored in
app/uploads/; metadata (original filename, size, type, timestamps) is tracked server-side and exposed read-only viaGET /filesuploaded. GET /makeCompressedVideoServerFilenameandGET /makeAudioExtractedServerFilenamekick off anffmpegjob against an uploaded video and write the result alongside the original.
- Node.js
- No system
ffmpeginstall needed —ffmpeg-staticbundles a binary for you.