MinIO on Aruba Cloud
Deploy MinIO — a high-performance S3-compatible object storage server — on Aruba Cloud. Use it as a local S3 backend for Nextcloud, GitLab, Loki, or any S3-compatible application.
Provider version: arubacloud/arubacloud
~> 0.5| Terraform: ≥ 1.9
Introduction
MinIO runs as a single binary managed by systemd. This example deploys the single-node, single-drive configuration — suitable for development, staging, and small production workloads. For high availability, a distributed multi-node setup is required (see the Phase 3 roadmap).
Architecture Overview
Infrastructure Created
| Resource | Description |
|---|---|
arubacloud_cloudserver | minio-prod-vm |
arubacloud_blockstorage | 100 GB boot disk (data storage) |
arubacloud_elasticip | Public IP |
arubacloud_securitygroup | TCP 9000 (API), 9001 (console), 22 (SSH) |
VM Sizing
| Use case | vCPU | RAM | Disk | Flavor |
|---|---|---|---|---|
| Dev / small | 2 | 4 GB | 100 GB | CSO2A4 (default) |
| Production | 4 | 8 GB | 500 GB+ | CSO4A8 |
Set vm_disk_size_gb to your expected data volume. MinIO stores all objects on the boot disk in this example.
Estimated Monthly Cost
| Resource | Spec | Est. cost/mo |
|---|---|---|
| CSO2A4 VM | 2 vCPU / 4 GB | ~€20 |
| 100 GB disk | Performance | ~€13 |
| Elastic IP | — | ~€5 |
| Total | ~€38/mo |
Variables
Required
arubacloud_client_id, arubacloud_client_secret, ssh_public_key, minio_root_password
Optional
| Variable | Default | Description |
|---|---|---|
minio_root_user | "minioadmin" | S3 access key |
minio_root_password | — | S3 secret key (min 8 chars) |
minio_data_dir | "/data/minio" | Object storage path |
api_cidr | "0.0.0.0/0" | CIDR for S3 API port |
console_cidr | "0.0.0.0/0" | CIDR for web console — restrict to your IP |
vm_disk_size_gb | 100 | Total disk size in GB |
vm_flavor | "CSO2A4" | VM size |
Deployment
cd terraform-arubacloud-examples/minio
cp terraform.tfvars.example terraform.tfvars
# Set minio_root_password
terraform init && terraform apply
After deployment:
terraform output console_url # http://203.0.113.10:9001
terraform output s3_endpoint # http://203.0.113.10:9000
# Use mc (MinIO Client) to create a bucket
mc alias set aruba $(terraform output -raw s3_endpoint) minioadmin <password>
mc mb aruba/my-bucket
Destroy
terraform destroy
Security Recommendations
- Restrict
console_cidr— the console exposes full admin access. Limit to your IP. - Use TLS for production — put MinIO behind a reverse proxy (Traefik/Caddy) with a valid certificate, or configure MinIO's built-in TLS.
- Create application-specific access keys — use the console or
mcto create users with bucket-level policies; don't use the root credentials in application configs. - Back up object data — MinIO itself has no built-in backup. Use
mc mirrorto sync to a remote location.
Troubleshooting
MinIO not starting
ssh ubuntu@$(terraform output -raw public_ip)
sudo systemctl status minio
sudo journalctl -u minio -n 50
Disk full
df -h /data/minio
Destroy and re-apply with a larger vm_disk_size_gb. Note: data will be lost; snapshot the disk first.