Learn how to install and configure MinIO on Ubuntu 26.04 with Nginx, Let's Encrypt SSL, and the MinIO Client. Build a secure self hosted S3 compatible object storage server.
MinIO is a high performance object storage server that is compatible with the Amazon S3 API. It is an excellent choice for storing backups, application uploads, media files, logs, and any data that benefits from object storage.
In this tutorial, you will install MinIO on an Ubuntu 26.04 server, configure it as a system service, access the web console, create your first storage bucket, and prepare it for HTTPS using Nginx and Certbot.
Prerequisites
Before you begin, make sure you have the following.
- Ubuntu 26.04 dedicated server
- A user with sudo privileges
- At least 2 GB RAM
- A domain name for production deployments
- Firewall access for ports 9000 and 9001
Update Your Server
Start by updating the package list and installing the latest available updates.
sudo apt update
sudo apt upgrade -y
Install MinIO
MinIO provides an official Linux binary that can be downloaded directly from the MinIO download server.
Download the latest MinIO server binary.
wget https://dl.min.io/server/minio/release/linux-amd64/minio
Make the binary executable.
chmod +x minio
Move it to the system path.
sudo mv minio /usr/local/bin/
Verify that MinIO has been installed successfully.
minio --version
You should see the installed MinIO version.
Create the MinIO User and Storage Directory
Running MinIO with a dedicated system user keeps permissions organized and improves security.
Create the MinIO system user.
sudo useradd --system --shell /usr/sbin/nologin minio
Create the storage directory where MinIO will keep your objects.
sudo mkdir -p /data/minio
Assign ownership of the storage directory to the MinIO user.
sudo chown -R minio:minio /data/minio
Configure MinIO
Create the MinIO configuration file.
sudo nano /etc/default/minio
Add the following configuration.
MINIO_ROOT_USER=minioadmin
MINIO_ROOT_PASSWORD=ReplaceWithAStrongPassword
MINIO_VOLUMES="/data/minio"
MINIO_OPTS="--console-address :9001"
Replace the example password with a strong password before saving the file.
Create the Systemd Service
Create a new systemd service file.
sudo nano /etc/systemd/system/minio.service
Paste the following configuration.
[Unit]
Description=MinIO Object Storage
Documentation=https://min.io/docs/minio/linux/
Wants=network-online.target
After=network-online.target
[Service]
User=minio
Group=minio
EnvironmentFile=/etc/default/minio
ExecStart=/usr/local/bin/minio server $MINIO_VOLUMES $MINIO_OPTS
Restart=always
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
Save and close the file.
Enable and Start MinIO
Reload systemd so it detects the new service.
sudo systemctl daemon-reload
Enable MinIO to start automatically when the server boots.
sudo systemctl enable minio
Start the MinIO service.
sudo systemctl start minio
Verify the Installation
Check whether the service is running.
sudo systemctl status minio
You should see output similar to the following.
Active: active (running)
You can also monitor the service logs in real time.
sudo journalctl -u minio -f
Open the Firewall
If UFW is enabled on your server, allow the MinIO API and Console ports.
sudo ufw allow 9000/tcp
sudo ufw allow 9001/tcp
sudo ufw reload
At this point, MinIO is installed and running. In the next part, you will access the web console, create your first bucket, install the MinIO Client, upload files, and manage users from the command line.
Access the MinIO Web Console
Once the MinIO service is running, you can access the web console from your browser.
If you are connecting directly using your server IP address, open the following URL.
http://YOUR_SERVER_IP:9001
Sign in using the credentials you configured earlier.

Username
minioadmin
Password
YourStrongPassword
After signing in, you will see the MinIO Dashboard where you can create buckets, upload files, manage users, and monitor storage.
Create Your First Bucket
A bucket is similar to a folder at the top level of your object storage. Every object you upload is stored inside a bucket.
- Click Create Bucket.
- Enter a bucket name.
- Click Create Bucket.
Example bucket name.
backups
Your bucket is now ready to store objects.
Install the MinIO Client
The MinIO Client, also known as mc, provides an easy way to manage your storage directly from the terminal.
Download the latest MinIO Client.
wget https://dl.min.io/client/mc/release/linux-amd64/mc
Make the binary executable.
chmod +x mc
Move it to the system path.
sudo mv mc /usr/local/bin/
Verify the installation.
mc --version
Connect the MinIO Client
Create an alias that connects the client to your MinIO server.
mc alias set local http://YOUR_SERVER_IP:9000 minioadmin YourStrongPassword
Verify the connection.
mc admin info local
If everything is configured correctly, information about your MinIO server will be displayed.
Create a Bucket from the Terminal
Create a new bucket using the MinIO Client.
mc mb local/backups
List all available buckets.
mc ls local
Example output.
[2026-08-03 12:00:00 UTC] 0B backups/
Upload Your First File
Create a sample file.
echo "Hello MinIO" > test.txt
Upload the file to your bucket.
mc cp test.txt local/backups
List the files stored inside the bucket.
mc ls local/backups
Download a File
Download the object from your bucket.
mc cp local/backups/test.txt .
Display its contents.
cat test.txt
Example output.
Hello MinIO
Create a New User
Instead of using the root account for everyday work, create a dedicated user.
Create the user.
mc admin user add local developer StrongPassword123
Grant the user read and write permissions.
mc admin policy attach local readwrite --user developer
The new user can now access your MinIO server using the assigned permissions.
Common Management Commands
The following commands are useful when managing your MinIO server.
Restart the service.
sudo systemctl restart minio
Stop the service.
sudo systemctl stop minio
Start the service.
sudo systemctl start minio
Check the service status.
sudo systemctl status minio
View the service logs.
sudo journalctl -u minio -f
Display server information.
mc admin info local
List all buckets.
mc ls local
List objects inside a bucket.
mc ls local/backups
At this point, your MinIO server is fully operational. In the next part, you will configure Nginx as a reverse proxy, secure MinIO with a free Let's Encrypt SSL certificate using Certbot, and access both the S3 API and the MinIO Console over HTTPS.
Configure Nginx as a Reverse Proxy
Using Nginx allows you to access MinIO with a domain name instead of an IP address and provides HTTPS support using Let's Encrypt.
For this tutorial, the following domains are used.
- storage.example.com for the MinIO S3 API
- console.storage.example.com for the MinIO Web Console
Replace these with your own domain names.
Install Nginx
Install Nginx using the Ubuntu package manager.
sudo apt update
sudo apt install nginx -y
If UFW is enabled, allow HTTP and HTTPS traffic.
sudo ufw allow 'Nginx Full'
Configure Nginx for the MinIO S3 API
Create a new Nginx configuration file.
sudo nano /etc/nginx/sites-available/minio
Paste the following configuration.
server {
listen 80;
server_name storage.example.com;
client_max_body_size 0;
location / {
proxy_pass http://127.0.0.1:9000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_http_version 1.1;
proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
}
}
Save the file and enable the site.
sudo ln -s /etc/nginx/sites-available/minio /etc/nginx/sites-enabled/
Configure Nginx for the MinIO Console
Create another configuration file for the MinIO Web Console.
sudo nano /etc/nginx/sites-available/minio-console
Paste the following configuration.
server {
listen 80;
server_name console.storage.example.com;
client_max_body_size 0;
location / {
proxy_pass http://127.0.0.1:9001;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_http_version 1.1;
proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
}
}
Enable the configuration.
sudo ln -s /etc/nginx/sites-available/minio-console /etc/nginx/sites-enabled/
Verify that the Nginx configuration is valid.
sudo nginx -t
Reload Nginx to apply the changes.
sudo systemctl reload nginx
You can now access the MinIO services using the following URLs.
MinIO S3 API
http://storage.example.com
MinIO Web Console
http://console.storage.example.com
Install Certbot
Install Certbot and the Nginx plugin.
sudo apt update
sudo apt install certbot python3-certbot-nginx -y
Obtain SSL Certificates
Run Certbot to request free SSL certificates from Let's Encrypt.
sudo certbot --nginx -d storage.example.com -d console.storage.example.com
During the installation you will be asked to complete a few simple steps.
- Enter your email address.
- Accept the Let's Encrypt terms.
- Choose whether you want to share your email address.
- Select the option to redirect all HTTP traffic to HTTPS.
After the process finishes successfully, your SSL certificates will be installed automatically.
Verify Automatic Certificate Renewal
Let's Encrypt certificates are valid for 90 days. Ubuntu automatically installs a systemd timer that renews certificates before they expire.
Run a test renewal.
sudo certbot renew --dry-run
Verify that the renewal timer is active.
systemctl status certbot.timer
Update the MinIO Client
Since HTTPS is now enabled, update your MinIO Client alias to use the secure endpoint.
mc alias set local https://storage.example.com minioadmin YourStrongPassword
Verify the connection.
mc admin info local
Final URLs
Use the following URLs to access your MinIO deployment.
MinIO S3 API
https://storage.example.com
MinIO Web Console
https://console.storage.example.com
Conclusion
You have Learned how to install and configure MinIO on Ubuntu 26.04 with Nginx, Let's Encrypt SSL, and the MinIO Client. Configured it as a system service, created your first bucket, installed the MinIO Client, uploaded and downloaded objects, created additional users, and secured the deployment with Nginx and a free Let's Encrypt SSL certificate.
MinIO provides fast, scalable, and Amazon S3 compatible object storage, making it an excellent solution for backups, application assets, media storage, log archives, and private cloud storage.

