MinIO
Installation
Docker Installation (Recommended)
# Pull MinIO image
docker pull minio/minio:latest
# Run MinIO container
docker run -d \
--name minio \
-p 9000:9000 \
-p 9001:9001 \
-e MINIO_ROOT_USER=minioadmin \
-e MINIO_ROOT_PASSWORD=minioadmin123 \
-v minio-data:/minio_data \
minio/minio:latest \
server /minio_data --console-address ":9001"
# View logs
docker logs -f minioDocker Compose
# Create docker-compose.yml
cat > docker-compose.yml << 'EOF'
version: '3.8'
services:
minio:
image: minio/minio:latest
container_name: minio
restart: always
ports:
- "9000:9000"
- "9001:9001"
environment:
- MINIO_ROOT_USER=minioadmin
- MINIO_ROOT_PASSWORD=minioadmin123
volumes:
- minio-data:/minio_data
command: server /minio_data --console-address ":9001"
volumes:
minio-data:
EOF
# Run compose
docker-compose up -dLinux Installation
# Download MinIO binary
wget https://dl.min.io/server/minio/release/linux-amd64/minio
# Make executable
chmod +x minio
# Move to bin
sudo mv minio /usr/local/bin/
# Create MinIO user
sudo useradd -m -d /var/minio-data -s /bin/false minio
# Create data directory
sudo mkdir -p /var/minio-data
sudo chown -R minio:minio /var/minio-data
# Start MinIO
minio server /var/minio-dataSystemd Service
# Create service file
sudo nano /etc/systemd/system/minio.service
# Add content
[Unit]
Description=MinIO Object Storage
After=syslog.target network.target
[Service]
Type=simple
User=minio
Group=minio
ExecStart=/usr/local/bin/minio server /var/minio-data --console-address ":9001"
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
# Enable and start
sudo systemctl daemon-reload
sudo systemctl enable minio
sudo systemctl start minio
sudo systemctl status minioWeb Interface Access
# MinIO Console
http://server-ip:9001
# Default credentials
username: minioadmin
password: minioadmin123
# Change credentials in environment or restartService Management
# Docker - Start/Stop
docker start minio
docker stop minio
docker restart minio
# Docker - View logs
docker logs -f minio
# Systemd - Start/Stop
sudo systemctl start minio
sudo systemctl stop minio
sudo systemctl restart minio
# View logs
sudo journalctl -u minio -fFirewall Configuration
# UFW (Ubuntu)
sudo ufw allow 9000
sudo ufw allow 9001
# Firewalld (CentOS)
sudo firewall-cmd --permanent --add-port=9000/tcp
sudo firewall-cmd --permanent --add-port=9001/tcp
sudo firewall-cmd --reloadBucket Management
Via Console
1. Access Console: http://server-ip:9001
2. Create bucket:
- Click "Create bucket" button
- Enter bucket name
- Click Create
3. Manage access:
- Set public/private
- Set access policiesVia MinIO CLI (mc)
# Install MinIO CLI
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
sudo mv mc /usr/local/bin/
# Configure alias
mc alias set minio http://localhost:9000 minioadmin minioadmin123
# List buckets
mc ls minio
# Create bucket
mc mb minio/my-bucket
# Copy files
mc cp /path/to/file minio/my-bucket/
# List bucket contents
mc ls minio/my-bucketUser Management
# Via Console
1. Navigate to: Administration > Identity > Users
2. Create new user
3. Set access keys
4. Assign policies
# Set bucket policies
1. Navigate to bucket
2. Click three dots (...) > Edit policy
3. Set access levelBackup & Restore
# Docker volume backup
docker run --rm -v minio-data:/data -v $(pwd):/backup \
ubuntu tar czf /backup/minio-backup.tar.gz /data
# Restore from backup
docker run --rm -v minio-data:/data -v $(pwd):/backup \
ubuntu tar xzf /backup/minio-backup.tar.gz -C /
# File system backup
sudo tar -czf minio-backup.tar.gz /var/minio-dataConfiguration
MinIO Environment Variables
# Set credentials
export MINIO_ROOT_USER=admin
export MINIO_ROOT_PASSWORD=secure_password
# Set region
export MINIO_REGION=us-east-1
# Start with environment
minio server /var/minio-dataAdvanced Configuration
# Edit MinIO config
# Docker: mount config volume
# Linux: ~/.minio/config.json
# Example config settings
{
"version": "10",
"credential": {
"accessKey": "minioadmin",
"secretKey": "minioadmin123"
},
"region": "us-east-1",
"api": {
"requestsMax": 0,
"requestsDeadline": 10000000000,
"corsAllowedOrigins": ["*"],
"corsAllowedMethods": ["GET", "PUT", "HEAD", "DELETE"],
"corsAllowedHeaders": ["*"],
"corsExposedHeaders": ["x-amz-request-id", "x-amz-version-id"]
}
}Monitoring
# Health check
curl http://localhost:9000/minio/health/live
# Metrics endpoint
curl http://localhost:9000/minio/v2/metrics/cluster
# Prometheus integration
# Add to Prometheus config
scrape_configs:
- job_name: 'minio'
static_configs:
- targets: ['localhost:9000']
metrics_path: '/minio/v2/metrics/cluster'Uninstall
Docker
# Stop and remove container
docker stop minio
docker rm minio
# Remove volume (optional)
docker volume rm minio-dataDocker Compose
# Stop and remove
docker-compose down
# Remove volumes
docker-compose down -vLinux/Systemd
# Stop service
sudo systemctl stop minio
# Remove binary
sudo rm /usr/local/bin/minio
# Remove data
sudo rm -rf /var/minio-data
# Remove service
sudo rm /etc/systemd/system/minio.service
sudo systemctl daemon-reload