Install MinIO on Ubuntu 26.04 Server with Nginx

Open-source

By Chandrashekhar Fakirpure

Updated on Aug 04, 2026

Install MinIO on Ubuntu 26.04 Server with Nginx

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.

install minio on ubuntu 26.04 with nginx

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.

  1. Click Create Bucket.
  2. Enter a bucket name.
  3. 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.