Skip to content

Guide to Setting up Standalone Minio Node on Ubuntu 20.04 using Docker-Compose

17/01/2023

:   Alexander

Server Requirements

Minio's offical requirements are .. a lot however I've managed to run it for the past several months in production on nodes with the following hardware.

vCPU: 1+
RAM: 512MB+ # 512MB+ Swap also needed)
HDD: 10GB+ # it's S3 storage, you'll want lots lets be real

Step 1 - Install docker & docker-compose

Firstly update your system, on Debian you can use the below command.

sudo apt-get update && sudo apt upgrade
Then install docker if it's not already installed, I use typically use the docker install script found at github.com/docker/docker-install
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
After the script is complete, install docker-compose.
sudo apt install docker-compose

Step 2 - Setup your directories & docker-compose file.

Start by creating a directory & the required subdirectories

mkdir /minio
mkdir /minio/data
CD into the newly created minio directory.
cd minio
Create the docker-compose file.
nano docker-compose.yml
Paste the following into it.
version: '3.3'

services:
  minio:
    image: docker.io/bitnami/minio:latest
    ports:
      - '9000:9000'
      - '9001:9001'
    volumes:
      - /path/to/minio-persistence:/data
    environment:
      MINIO_ROOT_USER: your_username_here
      MINIO_ROOT_PASSWORD: your_password_here
    restart: unless-stopped
volumes:
  minio_data:
    driver: local
Edit the following variables as needed
/path/to/minio-persistence
MINIO_ROOT_USER:
MINIO_ROOT_PASSWORD:

Step 3 - Setting permissions for the persistent data folder

As this is using the Bitnami docker image for Minio, it will run as UID 1001 so you'll need to make sure the mounted files and directories have the proper permissions for the UID 1001. There is a few ways to do this, the easiest I've found is the simple chown one-liner.

sudo chown 1001 /path/to/minio-persistence

Step 4 - Starting the container

You should now be able to start the container, the easiest way is to ensure you're working in the minio directory then running the following command.

docker-compose up -d
This will launch Minio in the background as a detached container. To check the container is running:
docker ps
Output:
root@vps:~# docker ps
CONTAINER ID   IMAGE                  COMMAND                  CREATED          STATUS          PORTS                                                           NAMES
74cb45fc4bd7   bitnami/minio:latest   "/opt/bitnami/script…"   27 minutes ago   Up 27 minutes   0.0.0.0:9000-9001->9000-9001/tcp, :::9000-9001->9000-9001/tcp   minio_minio_1

Step 5 - Signing in

Using a web browser navigate over to the IP address of your VPS/Server using port 9001 to access the WebUI.

192.168.0.1:9001
You should now be able to sign into the WebUI & start configuring access keys, buckets & more.

Final Notes

Congratulations on successfully installing Minio in a docker container, for easy SSL connections, you can setup a cloudflare tunnel with the below configurations using your own domain name.

Screenshot