MinIO is a self-hosted, open-source object storage server that is fully S3-compatible. This guide walks you through connecting your MinIO server to HeftySend.
Custom storage requires a Premium or Ultra plan. MinIO is a good choice if you want to host storage on your own servers. See Using your own storage with HeftySend for an overview.
Step 1: Make sure MinIO is running and accessible
- Your MinIO server must be running and reachable from the internet
- Default ports are 9000 for the API and 9001 for the Console
- Verify you can access the MinIO Console at your server's address
If your server is only accessible on a local network, you can use a tunnel service to expose it temporarily for testing.
Step 2: Create a bucket
- Log into your MinIO Console
- Go to "Buckets" then "Create Bucket"
- Enter a bucket name (for example, heftysend)
- Click "Create Bucket"
Step 3: Set up CORS (required for browser uploads)
CORS must be configured using the MinIO command line client (mc). Run the following commands on your server:
# Add your MinIO server as an alias
mc alias set myminio https://your-minio-server:9000 ACCESS_KEY SECRET_KEY
# Save this as cors.json
# {
# "CORSRules": [{
# "AllowedOrigins": ["*"],
# "AllowedMethods": ["GET", "PUT", "POST", "DELETE", "HEAD"],
# "AllowedHeaders": ["*"],
# "ExposeHeaders": ["ETag"]
# }]
# }
# Apply CORS to your bucket
mc cors set cors.json myminio/your-bucket-name
CORS cannot be set through the MinIO web console — it must be done via the mc command line tool. Without it, browser uploads will fail.
Step 4: Create access keys
- In the MinIO Console, go to "Access Keys"
- Click "Create Access Key"
- Optionally set a name and expiration
- Click "Create"
- Save both the Access Key and Secret Key
Step 5: Connect to HeftySend
- Go to Settings > Storage in your HeftySend dashboard
- Click "Configure S3 Storage"
- Enter your MinIO endpoint URL (for example, https://your-minio-server.com:9000)
- Enter your Access Key and Secret Key
- Enter your bucket name
- For region, enter any value (for example, us-east-1) — MinIO ignores this field
- Click "Test Connection" then "Save"
Troubleshooting
If connection fails, make sure your MinIO server is publicly accessible and you are using the correct port. Self-signed SSL certificates may cause browser errors — use a certificate from Let's Encrypt or a reverse proxy with valid SSL for production setups. For CORS errors, apply the CORS config using mc and restart MinIO if the problem persists.