
MinIO is a high-performance, open-source object storage server that is fully compatible with the Amazon S3 API. It is designed for modern cloud-native workloads, making it suitable for backups, media storage, data lakes, analytics, and application storage.
This article demonstrates how to deploy MinIO on Ubuntu 24.04 using Docker Compose and secure both the API and the Console using a Traefik reverse proxy.
Before you begin:
console.example.com (For the Web UI).s3.example.com (For the S3 API endpoint).MinIO stores object data on disk and relies on environment variables for credentials, domains, and TLS configuration. This section prepares the required directory structure for persistent storage and defines the environment variables used by Docker Compose and Traefik during deployment.
Create the project folders.
data - Stores the actual object data.letsencrypt - Stores Traefik ACME certificates.Navigate to the root MinIO directory.
Create an .env file to store your credentials and domain configurations.
Add the following values:
Replace the placeholders with your own values:
STRONG_PASSWORD – A secure password for the MinIO admin user.console.example.com – Domain for the MinIO web console.s3.example.com – Domain for the MinIO S3 API endpoint.admin@example.com – Email address for Let’s Encrypt notifications.Save and close the file.
This section deploys the MinIO server behind Traefik. The configuration exposes two services: the Console (Web UI) on port 9001 and the API (S3 access) on port 9000.
Add your user account to the docker user group.
Apply the new group membership.
Create the Docker Compose manifest file.
Add the following contents:
Save and close the file.
This Docker Compose configuration deploys MinIO and exposes it securely over HTTPS using Traefik. The setup separates MinIO’s S3 API and web console onto different domains while keeping all TLS management centralized in Traefik.
minio service
minio/minio image, providing high-performance, S3-compatible object storage./data directory, which is persistently mounted from ./data on the host.MINIO_ROOT_USER, MINIO_ROOT_PASSWORD).MINIO_BROWSER_REDIRECT_URL so that the web console redirects correctly through Traefik over HTTPS.Traefik integration (via labels)
${DOMAIN_API} to MinIO’s S3 API on port 9000.${DOMAIN_CONSOLE} to the MinIO web console on port 9001.websecure entrypoint.le) to automatically obtain and renew TLS certificates.traefik service
./letsencrypt directory.Start the services.
Verify the containers are running.
For more information on managing a Docker Compose stack, see the How To Use Docker Compose article.
Open your web browser and navigate to your Console domain https://console.example.com.
Log in using the MINIO_ROOT_USER and MINIO_ROOT_PASSWORD you configured in the .env file.
On your first login, a License Disclaimer window appears. Click Acknowledge to accept the terms and proceed to the dashboard.
Upon successful login, the Buckets dashboard loads. You can now create your first storage bucket.
To test the API connection, you can use any S3-compatible client (like s3cmd) using the following details:
https://s3.example.comMINIO_ROOT_USERMINIO_ROOT_PASSWORDBy following this article, you successfully deployed the MinIO object storage server on Ubuntu 24.04. You configured Traefik to securely route traffic to both the S3 API and the web administration console. Your server is now ready to store data for applications, backups, or AI workloads. For more information, refer to the MinIO Documentation.
0 Comments
Be the first to comment and share your perspective with the community.