MinIO S3 Object Storage
For file persistence, media uploads, and static vector map tile archives, I run MinIO, a high-performance, S3-compatible object storage server.
Why MinIO for Storage & Persistence?
- Stateless Application Server: Storing user uploaded photos or map tiles directly on container local disk limits horizontal scaling and breaks pod mobility. Decoupling storage to MinIO keeps application pods stateless.
- S3 API Standard: MinIO provides a standard S3 API interface. If needed in the future, switching from self-hosted MinIO to AWS S3, Cloudflare R2, or Backblaze B2 requires zero code changes.
- HTTP Byte-Range Requests for Vector Maps: MinIO supports native HTTP
Range: bytes=X-Yrequests, enabling MapLibre GL JS to fetch vector map tiles directly from single.pmtilesarchives with zero backend compute.
Built-in Portability
By writing the application against the standard S3 API rather than a bespoke file storage driver, I can migrate my data to AWS S3, Cloudflare R2, or any other compliant provider tomorrow by simply updating a connection string. Zero code changes required.