Growth Dudes
Join free

✓ VERIFIED S3-compatible No per-GB Unlimited storage

MinIO

Your own S3-compatible storage. Upload, store, and serve files without per-GB pricing or vendor lock-in.

⏱ 15 min ◆◇◇ copy, paste, done ↺ reversible

What it does

An S3-compatible object storage server you run on your own hardware. Upload files via the web UI, CLI, or any S3-compatible tool. Set buckets, policies, and access keys - identical API to AWS S3.

Why it's on the shelf

AWS S3 charges $0.023/GB/month plus request costs plus egress. A 100GB media library costs ~$2.30/month in storage, but egress fees can multiply that tenfold. MinIO on a $5 VPS with a 100GB disk costs $5 flat. No egress fees, no surprise bills, no vendor lock-in.

What it replaces

AWS S3, Cloudflare R2, Backblaze B2, Google Cloud Storage. Whatever you pay for that today is what this page is here to delete. Worth being honest with yourself first though: if the bill is already small, the answer may still be that this isn't worth your Saturday.

Skip this one if... You don't want a server you're responsible for. MinIO runs on your own box, which is what makes it free and what makes it yours - but it also means the backups, the updates and the 11pm restart are on you. If that's a no, close the tab; it'll cost you 15 min to find out the hard way.

Setting it up

These are the steps in order. The time on the bar above is what this took us end to end, including the reading.

  1. Provision a VPS with enough disk space for your needs
  2. Install Docker
  3. Run the MinIO container with your access key and secret key
  4. Visit the web console on port 9001
  5. Create buckets and generate access keys for your apps

The code

The actual configuration, not a sketch of one. The highlighted lines are the ones you have to change.

What this doesMinIO in one container. Simple, fast, S3-compatible.
docker-compose.yml
services:  minio:    image: minio/minio:latest    ports:      - "9000:9000"  # S3 API      - "9001:9001"  # Web console    environment:      - MINIO_ROOT_USER=admin  ← change this      - MINIO_ROOT_PASSWORD=change-this-now  ← 8+ characters    command: server /data --console-address=":9001"    volumes:      - minio_data:/datavolumes:  minio_data:
Before you run this Backups are your responsibility. If the disk fails without replication, your data is gone. Set up MinIO's built-in replication to a second node for production.

What it costs to run

Disk is the constraint, not RAM. Runs on any $5 VPS. Add a block storage volume for more space.

This keeps working without us MinIO runs on your own box under the AGPL-3.0, with your data in your own database. If Growth Dudes stops existing tomorrow, nothing on this page stops working. That is deliberate, and it's the only promise here we can actually keep.

Field notes

What people found when they actually ran it - dated, named and specific, including the times our setup number turned out to be optimistic.

Nobody has posted one for MinIO yet.

We're not going to invent them. Run it, then tell the room what actually happened - the time you got, and the step that wasn't in the instructions.

Join and post one

NEXT

Others people run alongside it