BinVault is a lightweight, open-source file storage service designed to upload, transform, and serve static files effortlessly.
Built in Go and optimized for containerized environments, it’s ideal for developers, CI/CD pipelines, and edge platforms.
- 🗃️ Bucket-based file organization (public/private)
- 🛠️ Extensible CLI-based file processing
- 🌐 REST API for uploads, downloads, and management
- 🔐 Optional JWT authorization (RSA, JWKS, PEM)
- ☁️ Ready for Docker, Kubernetes, and Swarm deployments
Get started with Docker:
docker pull ghcr.io/kalevski/binvault:quickstart
docker run -d -p 8080:80 ghcr.io/kalevski/binvault:quickstart
Then open: http://localhost:8080
BinVault exposes a REST API to upload and serve files. Files are grouped into buckets and can be processed using configurable CLI commands. Public buckets are accessible via NGINX; private buckets require authorization.
BinVault provides CRUD endpoints for managing files and buckets.
Method | Endpoint | Description |
---|---|---|
POST | /api/buckets |
Create a bucket |
GET | /api/buckets |
List all buckets |
GET | /api/buckets/{name} |
Get bucket details |
DELETE | /api/buckets/{name} |
Delete a bucket |
GET | /api/buckets/{name}/files |
List files in a bucket |
POST | /api/buckets/{name}/files |
Upload a file |
Customize behavior using environment variables:
SERVER_PORT=8080
DATA_PATH=./data
PROCESSOR_CONFIG_PATH=./processors.cfg
RSA_PUBLIC_KEY=./keys/id_rsa.pub
- Fork this repo
- Create a new branch:
git checkout -b feature/your-feature
- Commit your changes
- Open a pull request
See CONTRIBUTING.md for details.
Released under the Apache 2.0 License.