Trove
Self-hosted file storage. Single Docker container, ~18MB image, no JavaScript framework.
docker run -d -p 8080:8080 -v ./data:/app/data -v /tmp \
-e SESSION_SECRET="$(openssl rand -base64 32)" \
-e DB_TYPE=sqlite \
ghcr.io/agjmills/trove:latestTrove is a file storage server written in Go. Upload, organise, and share files from a single binary. It uses local disk or S3-compatible storage, and PostgreSQL or SQLite.
It doesn’t have a mobile app, a cloud sync daemon, or a premium tier.
File management
Upload, rename, move, trash, and restore files. Folder hierarchy. Natural sort order.
Storage backends
Local disk, AWS S3, Cloudflare R2, MinIO, Backblaze B2, or rustfs.
Multi-user
Per-user quotas. Admin panel for user management. OIDC/SSO via Authentik, Authelia, or Keycloak.
Resumable uploads
Chunked upload with pause and resume. SHA-256 integrity check. No client-side JS framework.
Sharing
Share files or folders via link. Optional password, expiry date, and download limit.
Search
Search by filename, folder path, and tags. Tags can be set at upload time.