MinIO Role¶
S3-compatible object storage for testing backup workflows and object storage integrations without AWS costs.
Features¶
- Rootless Podman deployment
- S3-compatible API
- Web-based management console
- Versioning support
- Policy-based access control
- Multi-user support
Quick Start¶
Configuration¶
Key Variables¶
minio_state: present
minio_data_dir: "~/minio-data"
minio_api_port: 9000
minio_console_port: 9001
minio_root_user: "minioadmin"
minio_root_password: "your_secure_password"
Usage¶
Access¶
- S3 API:
http://localhost:9000 - Web Console:
http://localhost:9001
Web Console¶
- Open
http://localhost:9001 - Login with root credentials
- Create buckets
- Manage users and policies
- Upload/download files
AWS CLI Integration¶
# Configure AWS CLI
aws configure --profile minio
# AWS Access Key ID: minioadmin
# AWS Secret Access Key: your_password
# Default region: us-east-1
# Default output format: json
# Create bucket
aws --profile minio --endpoint-url http://localhost:9000 \
s3 mb s3://mybucket
# Upload file
aws --profile minio --endpoint-url http://localhost:9000 \
s3 cp file.txt s3://mybucket/
# List objects
aws --profile minio --endpoint-url http://localhost:9000 \
s3 ls s3://mybucket/
MC Client (MinIO Client)¶
# Install mc
curl -O https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
# Add alias
./mc alias set minio http://localhost:9000 minioadmin your_password
# Create bucket
./mc mb minio/mybucket
# Upload file
./mc cp file.txt minio/mybucket/
# List buckets
./mc ls minio/
Python boto3 Example¶
import boto3
s3 = boto3.client('s3',
endpoint_url='http://localhost:9000',
aws_access_key_id='minioadmin',
aws_secret_access_key='your_password'
)
# Create bucket
s3.create_bucket(Bucket='mybucket')
# Upload file
s3.upload_file('file.txt', 'mybucket', 'file.txt')
# List objects
response = s3.list_objects_v2(Bucket='mybucket')
Use Cases¶
- S3 integration testing
- Backup workflow testing
- Object storage development
- Multi-cloud compatibility testing
- Data lake prototyping
- File upload/download testing
Bucket Management¶
Versioning¶
# Enable versioning
./mc version enable minio/mybucket
# Check versioning status
./mc version info minio/mybucket
Policies¶
# Set public read policy
./mc anonymous set download minio/mybucket
# Set custom policy
./mc policy set policy.json minio/mybucket
Lifecycle Rules¶
User Management¶
Create User¶
# Via mc
./mc admin user add minio newuser password123
# Set policy
./mc admin policy attach minio readwrite --user newuser
Performance¶
Benchmark¶
# Test write performance
./mc admin speedtest minio --bucket mybucket --size 100M
# Continuous benchmark
./mc support perf object minio/mybucket
Backup¶
# Backup entire data directory
tar czf minio-backup-$(date +%Y%m%d).tar.gz ~/minio-data
# Mirror buckets
./mc mirror minio/source-bucket minio/backup-bucket
Troubleshooting¶
Cannot Access Console¶
-
Check service running:
-
Verify ports:
-
Check logs:
S3 API Errors¶
- Verify credentials
- Check endpoint URL
- Review bucket policies
- Check region settings
Service Management¶
# Status
systemctl --user status minio-pod
# Logs
podman logs minio-svc
# Restart
systemctl --user restart minio-pod
Removal¶
# Keep data
./manage-svc.sh minio remove
# Delete all
./manage-svc.sh minio remove -e minio_delete_data=true
License¶
MIT
Author¶
Created by jackaltx and Claude.