Holdfast is self-hosted file storage that's fast and Dropbox-simple. Upload, browse, and share files with revocable links. Single Docker image, SQLite-backed, no external database, no cloud dependency. Deploy in minutes, own your data.
Hey everyone, shiv here
I've been self-hosting for 8+ years and slowly moved off Google Drive along the way. File storage was the one piece I never actually solved well. Nextcloud technically does it, but it's slow, the UI feels a decade old, and it ships as an entire app suite when all I wanted was upload, browse, and share a link. Handing someone SMB credentials just to grab one file was never a real answer either.
So I stripped it down and built Holdfast. It only does what I actually use: fast upload and browsing, resumable uploads over tus so big files survive flaky connections, anonymous share links you can revoke anytime, trash with retention instead of instant deletes, and async previews for images, video, and PDFs. It ships as a single Docker image or a static binary, backed by SQLite and a plain directory on disk, so there's nothing extra to run or maintain.
Full transparency, a large share of the code was written with AI-assisted tooling. I own the product direction, design decisions, and testing, but that's the honest answer on how this came together solo in the time I had. It's still early and under active development, so expect some rough edges, and I wouldn't trust it as your only copy of anything important yet.
Repo and Docker Compose quick start are here: https://github.com/shivsarthak/h...
Would love to hear what you think, especially if you're already running Nextcloud, Seafile, or Filerun and can tell me what would actually get you to switch.
Report
Curious how revoking a shared link actually works on the recipient side, like does the file get blocked mid-download or is it more of a soft disable that only kicks in on the next request?
Flowripple
Curious how revoking a shared link actually works on the recipient side, like does the file get blocked mid-download or is it more of a soft disable that only kicks in on the next request?
Flowripple
@emelkorkune7b0 that's actually an interesting edge case i haven't tested out , revoking a link mid download , thanks for sharing this