This project offers a complete S3-compatible file storage solution that runs on your own hardware. With features like erasure coding, JWT authentication, and Kubernetes support, it provides all the benefits of S3 without the cloud expenses or vendor lock-in. Enjoy full control and transparency in your storage solutions.
The Distributed File Storage Service is an S3-compatible object storage solution that enables users to leverage cloud storage capabilities on their own hardware, eliminating the costs associated with public cloud services. With features such as erasure coding, replication, and a comprehensive metadata store powered by PostgreSQL, this service allows for efficient and reliable data management.
Moving to self-hosted storage can significantly reduce costs while providing full control over data:
| Cost Comparison | AWS S3 | Distributed File Storage Service |
|---|---|---|
| Monthly Cost | ~$23 for 1 TB/month | Free (utilizes existing hardware) |
| Vendor Lock-in | Yes | No |
| Erasure Coding | No | Yes (Reed-Solomon) |
| Pricing Transparency | Opaque | 100% Transparent |
To set up and validate the service, execute the following commands:
# 1. Clone the repository
git clone https://github.com/aman179102/distributed-file-storage-service.git
cd distributed-file-storage-service
# 2. Start services
docker compose up -d
# 3. Verify the service health
curl http://localhost:8080/health
# 4. User login
curl -s -X POST http://localhost:8080/api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"admin@example.com","password":"admin123"}' | jq .
# 5. Create a new bucket
TOKEN="<your-jwt-token>"
curl -s -X POST http://localhost:8080/api/v1/buckets \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"my-first-bucket"}' | jq .
# 6. Upload a file
echo "Hello S3!" > test.txt
curl -s -X PUT "http://localhost:8080/api/v1/buckets/1/objects/test.txt" \
-H "Authorization: Bearer $TOKEN" \
--data-binary @test.txt | jq .
# 7. Download the file
curl -s "http://localhost:8080/api/v1/buckets/1/objects/test.txt" \
-H "Authorization: Bearer $TOKEN"
# 8. Access metrics via Prometheus
curl http://localhost:8080/metrics | head -20
The service is built with a modular architecture to facilitate easy updates and integration:
┌──────────────────────────────────────────┐
│ HTTP/REST API │
│ (S3-Compatible Endpoints) │
├──────────────────────────────────────────┤
│ Auth & Authorization Layer │
│ JWT + RBAC + IAM Policies │
├──────────────────────────────────────────┤
│ Business Logic Layer │
│ File Service · Bucket Service · Policy │
├──────────────────────────────────────────┤
│ Storage Layer │
│ Chunking · Dedup · Erasure · Replication│
├──────────────────────────────────────────┤
│ Infrastructure │
│ PostgreSQL │ Redis │ Local Disk Store │
├──────────────────────────────────────────┤
│ Observability │
│ Metrics │ JSON Logs │ Audit Trails │
└──────────────────────────────────────────┘
This Distributed File Storage Service is ideal for those looking for a reliable, cost-effective solution for managing file storage with S3 compatibility. It harnesses the power of open-source technology to provide a production-grade environment suitable for enterprises.
No comments yet.
Sign in to be the first to comment.