Swap Alibaba Cloud OSS for MinIO and Save Thousands a Year on Object Storage
Managed object storage bills grow quietly with usage, and many small-to-medium projects never need the CDN, multi-AZ replication, or compliance features that justify the premium. Running MinIO on existing server disk turns a recurring line item into a fixed cost of zero, with an API that requires no code rewrites.
Small outsourcing projects can bleed money on managed object storage — one project with a few thousand contract scans hit 200 yuan a month on Alibaba Cloud OSS. Across three clients, that's several thousand yuan a year for disk space that already sits idle on the application server. MinIO, deployed as a single Docker container, drops into the same S3 API surface and eliminates the per-GB and per-request charges entirely. The setup uses two buckets — public for avatars and cover images, private for contracts and ID documents — with presigned URLs controlling access to sensitive files. Spring Boot integration requires one Maven dependency and a configuration class; a utility wrapper reduces upload, download, presigned-URL generation, and delete to one-liners in business code. Multipart upload with a 5 MB part size prevents out-of-memory crashes on large files, and an nginx proxy or the MINIO_SERVER_URL env var fixes the internal-IP problem in presigned links. The trade-offs are real: no built-in CDN, single-machine availability, and extra work if compliance demands audit logs or cross-region backup. For projects that don't hit those constraints, the cost goes to zero while the server's idle disk gets used.
The cost argument flips once you realize the server already has idle disk: you're paying OSS for storage you've already provisioned and aren't using.
MinIO's S3 API compatibility means the migration is a config change, not a rewrite — the same code that talks to S3 talks to MinIO, which lowers the risk of switching.
The three disqualifiers — CDN, HA, compliance — draw a clean line: if your project doesn't need them, managed object storage is pure overhead.