BeamDrop, Self-Hosted File Sharing in Go

Single-binary file sharing with an S3-compatible API, shareable links and real-time stats.

BeamDrop, Self-Hosted File Sharing in Go, BeamDrop is a self-hosted file sharing server in Go: single binary, embedded React UI, …

Built with Go, React, SQLite, Docker · Live site · GitHub

BeamDrop started with a simple problem: sharing files between my own devices without handing them to a cloud provider. One afternoon project later, it had become a full-stack system: a Go HTTP server, an embedded React frontend, SQLite storage, JWT auth, WebSockets and an S3-compatible API, all shipping as a single binary. I wrote up how that happened in I Think I Accidentally Built a Full-Stack Framework.

What it does

  • Upload, download, move, copy, rename and search files from a fast web UI
  • Password protection plus shareable links with expiry
  • S3-compatible API (buckets, objects, presigned URLs) so CI/CD and scripts can talk to it
  • Real-time stats over WebSockets and Prometheus metrics for observability
  • QR code in the terminal so your phone connects in seconds

Why it is built this way

No web framework: just Go’s net/http and ServeMux. No CGO: a pure-Go SQLite driver keeps cross-compilation (GOOS/GOARCH) trivial. No sidecars: the React build is baked into the binary with embed.FS, so deployment is one file. These are the same boring-reliability choices behind ekilie.cloud.

Run it

beamdrop -dir ~/Documents -p secretpassword

BeamDrop is open source at github.com/ekilie/beamdrop and there is a mobile client (BeamDrop Mobile) plus a SaaS control plane in the same repo.

More projects

Browse all 50 projects →