Skip to content

Instantly share code, notes, and snippets.

@sanikkenway
Last active December 1, 2021 06:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sanikkenway/a4858416f91b02345e46d86d252b0d65 to your computer and use it in GitHub Desktop.
Save sanikkenway/a4858416f91b02345e46d86d252b0d65 to your computer and use it in GitHub Desktop.
MinIO Setup

Setup MinIO on Ubuntu 20.04 LTS with Let's Encrypt SSL

Download Link for Go!

https://golang.org/dl/

Install Go

wget -c https://golang.org/dl/go1.17.2.linux-amd64.tar.gz
tar xvf go1.17.2.linux-amd64.tar.gz
sudo chown -R root:root ./go
sudo mv go /usr/local
sudo echo 'export PATH=$PATH:/usr/local/go/bin' >> /etc/profile
source /etc/profile
go version
rm go1.17.2.linux-amd64.tar.gz

Install MinIO on Ubuntu 20.04 LTS

cd ~
wget https://dl.min.io/server/minio/release/linux-amd64/minio

sudo useradd --system minio --shell /sbin/nologin
sudo usermod -L minio
sudo chage -E0 minio

sudo mv minio /usr/local/bin
sudo chmod +x /usr/local/bin/minio
sudo chown minio:minio /usr/local/bin/minio

sudo touch /etc/default/minio
sudo echo 'MINIO_ROOT_USER="minio"' >> /etc/default/minio
sudo echo 'MINIO_VOLUMES="/home/minio/"' >> /etc/default/minio
sudo echo 'MINIO_OPTS="-C /etc/minio --address 127.0.0.1:9000 --console-address 127.0.0.1:8000"' >> /etc/default/minio
sudo echo 'MINIO_ROOT_PASSWORD="miniostorage"' >> /etc/default/minio

sudo mkdir /home/minio
sudo mkdir /etc/minio

sudo chown minio:minio /home/minio
sudo chown minio:minio /etc/minio

cd ~

wget https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service

sed -i 's/User=minio-user/User=minio/g' minio.service
sed -i 's/Group=minio-user/Group=minio/g' minio.service

sudo mv minio.service /etc/systemd/system

sudo systemctl daemon-reload
sudo systemctl enable minio
sudo systemctl start minio

sudo systemctl status minio

cd ~

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw enable
sudo ufw allow ssh
sudo ufw allow 'Nginx Full'
sudo ufw status verbose

Nginx Proxy Setup - Console

server {
    listen 80;
    listen [::]:80;

    server_name minio.example.com;

    location / {
        proxy_pass http://127.0.0.1:8000;
    }
}

Nginx Proxy Setup - Server

server {
    listen 80;
    listen [::]:80;

    server_name api.minio.example.com;
    
    ignore_invalid_headers off;
    client_max_body_size 0;
    proxy_buffering off;

    location / {
        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 Host $http_host;

        proxy_connect_timeout 300;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        chunked_transfer_encoding off;
        
        proxy_pass http://127.0.0.1:9000;
    }
}

SSL Setup

sudo apt install software-properties-common
sudo add-apt-repository universe
sudo apt update
sudo apt install certbot
sudo certbot certonly --standalone -d minio.your_domain -d api.minio.your_domain

Upgrading Minio

wget https://dl.min.io/server/minio/release/linux-amd64/minio

sudo mv minio /usr/local/bin
sudo chmod +x /usr/local/bin/minio
sudo chown minio:minio /usr/local/bin/minio
@sanikkenway
Copy link
Author

If you are not running as a root, might consider these alternatives

From

sudo echo 'export PATH=$PATH:/usr/local/go/bin' >> /etc/profile
sudo echo 'MINIO_ROOT_USER="minio"' >> /etc/default/minio
sudo echo 'MINIO_VOLUMES="/home/minio/"' >> /etc/default/minio
sudo echo 'MINIO_OPTS="-C /etc/minio --address 127.0.0.1:9000 --console-address 127.0.0.1:8000"' >> /etc/default/minio
sudo echo 'MINIO_ROOT_PASSWORD="miniostorage"' >> /etc/default/minio

Into

echo 'export PATH=$PATH:/usr/local/go/bin' | sudo tee -a /etc/profile
echo 'MINIO_ROOT_USER="minio"' | sudo tee -a /etc/default/minio
echo 'MINIO_VOLUMES="/home/minio/"' | sudo tee -a /etc/default/minio
echo 'MINIO_OPTS="-C /etc/minio --address 127.0.0.1:9000 --console-address 127.0.0.1:8000"' | sudo tee -a /etc/default/minio
echo 'MINIO_ROOT_PASSWORD="miniostorage"' | sudo tee -a /etc/default/minio

@sanikkenway
Copy link
Author

Setting config is located at

/home/minio/.minio.sys/config/config.json

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment