AWS S3 charges for storage, requests, and egress. MinIO gives you the same S3 API — on your own hardware, with zero egress fees.
What is MinIO?
MinIO is a high-performance, S3-compatible object storage system. Use any S3 SDK, any S3-compatible tool — they all work with MinIO. Self-host or use their cloud offering.
Why MinIO
1. S3 API Compatible
import boto3
s3 = boto3.client('s3',
endpoint_url='http://localhost:9000',
aws_access_key_id='minioadmin',
aws_secret_access_key='minioadmin',
)
# Upload
s3.upload_file('report.pdf', 'my-bucket', 'reports/2026/report.pdf')
# Download
s3.download_file('my-bucket', 'reports/2026/report.pdf', 'local.pdf')
# List
response = s3.list_objects_v2(Bucket='my-bucket', Prefix='reports/')
for obj in response['Contents']:
print(obj['Key'], obj['Size'])
2. Docker Deployment
docker run -p 9000:9000 -p 9001:9001 \
-e MINIO_ROOT_USER=admin \
-e MINIO_ROOT_PASSWORD=password \
-v /data:/data \
minio/minio server /data --console-address ":9001"
Admin console at :9001. S3 API at :9000.
3. Erasure Coding (Fault Tolerant)
# 4-drive setup — survives 2 drive failures
minio server /data{1...4}
# 16-drive setup — survives 8 drive failures
minio server /data{1...16}
4. Event Notifications
{
"Event": [
{
"EventName": "s3:ObjectCreated:*",
"Records": [{
"s3": {
"bucket": { "name": "uploads" },
"object": { "key": "photo.jpg", "size": 1024 }
}
}]
}
]
}
Webhooks, Kafka, NATS, Redis, PostgreSQL, MySQL — trigger actions on upload.
5. Performance
Single server, NVMe drives:
Read: 183 GB/s
Write: 171 GB/s
This is NOT a typo. MinIO is designed for AI/ML workloads where speed matters.
MinIO vs S3 vs Cloudflare R2
| MinIO | AWS S3 | Cloudflare R2 | |
|---|---|---|---|
| S3 compatible | Yes | Native | Yes |
| Self-hosted | Yes | No | No |
| Egress fees | $0 | $0.09/GB | $0 |
| Storage cost | Hardware only | $0.023/GB/mo | $0.015/GB/mo |
| Performance | 183 GB/s | Fast | Fast |
| License | AGPL v3 | Proprietary | Proprietary |
Getting Started
# Docker
docker run -p 9000:9000 -p 9001:9001 minio/minio server /data --console-address ":9001"
# Binary
wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
./minio server /data
The Bottom Line
MinIO is S3 on your terms. Same API, extreme performance, zero egress fees. If you're spending too much on S3, MinIO cuts that bill to hardware costs only.
Need data tools? I build scraping solutions. Check my Apify actors or email spinov001@gmail.com.
Top comments (0)