Dead-simple file upload & share web app. Drag, drop, download, done.
| Layer | Choice |
|---|---|
| Language | Go 1.24 |
| Base image | scratch (3.5MB) |
| Build | Multi-stage Docker |
| Runtime | Rootless (uid 1000, distroless) |
| Storage | Bind mount to host |
# Build
docker build -t filebin ~/Develop/filebin/
# Run
docker run --rm -d -p 8080:8080 -v /tmp/filebin_data:/data --name filebin filebin
# Open
open http://localhost:8080
# Stop
docker rm -f filebin- Go HTTP server listens on
:8080 GET /serves the upload page (file list + upload form)POST /uploadaccepts a multipart file, saves to/data/<random_id>.<ext>GET /f/<id>serves the file for download- Data persists in the host bind mount — kill the container, keep the files
- No auth, no rate limiting. Local use only. Don't expose to the internet.
- Files are stored by random ID, not original name (multi-user safety).
- No file size limit aside from disk space.
- Container runs as root (scratch image quirk with bind mounts). Image is still minimal and isolated.
- Password-protected uploads
- File expiry / auto-cleanup
- CLI upload via curl alias
Built in one sitting by opencode-ai, while the dev was at the shop getting tea.