Установка Min.io
Обновляем пакеты
sudo apt update
Грузим бинарный файл сервера Minio с официального веб-сайта:
wget https://dl.min.io/server/minio/release/linux-amd64/minio
После завершения загрузки файл с именем minio
будет находиться в вашей рабочей директории. Получаем исполняемый файл:
sudo chmod +x minio
Перемещаем файл в каталог /usr/local/bin
, где скрипт запуска Minio systemd
ожидает его найти:
sudo mv minio /usr/local/bin
Делаем пользователя для запуска min.io
sudo useradd -r minio-user -s /sbin/nologin
Передаем право владения для двоичного файла Minio пользователю minio-user
:
sudo chown minio-user:minio-user /usr/local/bin/minio
Создаем директорию, в которой Minio будет хранить файлы
sudo mkdir /usr/local/share/minio
Передаем права владения каталогом пользователю minio-user
:
sudo chown minio-user:minio-user /usr/local/share/minio
Создаем каталог в etc и файл конфигурации:
sudo mkdir /etc/minio
sudo chown minio-user:minio-user /etc/minio
редактируем конфигурационный файл
sudo nano /etc/default/minio
добавляем строки
MINIO_ACCESS_KEY="minio"
MINIO_VOLUMES="/usr/local/share/minio/"
MINIO_OPTS="-C /etc/minio --address your_server_ip:9000"
MINIO_SECRET_KEY="miniostorage"
ставим свои значения в поля key, opts (ip сервера), secret
загружаем официальный файл дескриптора службы Minio с помощью следующей команды
curl -O https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service
копируем в systemd
sudo mv minio.service /etc/systemd/system
перезагружаем юниты
sudo systemctl daemon-reload
активируем запуск minio при загрузке
sudo systemctl enable minio
запускаем сервис minio
sudo systemctl start minio
проверяем состояние
sudo systemctl status minio
правим брендмауер добавлением правил для 9000 порта minio
sudo ufw allow 9000
активируем брендмауер (если он был неактивен, добавляем необходимые порты 80, 443, 21, 22
sudo ufw allow 80
sudo ufw allow 443
sudo ufw allow 21
sudo ufw allow 22 и потом активируем)
настройка nginx по 80 порту
в конфигурационные nginx добавляем файл например minio
nano /etc/nginx/sites-available/minio
server { listen 80;
server_name minio.dev;
location / {
proxy_set_header
Host $http_host;
proxy_pass http://localhost:9000;
} }
где minio.dev — имя сайта, который привязали по А записи
в некоторых случаях срабатывает при изменении localhost на 127.0.0.1, либо IP сервера.
Создаем симлинк на созданный конфигурационный файл
sudo ln -s /etc/nginx/sites-available/minio /etc/nginx/sites-enabled/
проверяем корректность конфигурационного файла
nginx -t
перезапускаем nginx
service nginx restart
Выпуск сертификата Let’s Encrypt и привязка к домену
Сначала установим утилиту Certbot, позволяющую автоматически настроить https и в дальнейшем запрашивать обновление сертификата при истечении по расписанию (на данный момент сертификат Let’s Encrypt нужно перевыпускать каждые 3 месяца). Для установки запустим команду
sudo apt install certbot
После установки Certbot, создайте файл для Let’s Encrypt для валидации домена ${webroot-path}/.well-known/acme-challenge директории. Создадим директорию и дадим Nginx права на нее
sudo mkdir -p /var/lib/letsencrypt/.well-known sudo chgrp www-data /var/lib/letsencrypt sudo chmod g+s /var/lib/letsencrypt
Далее создаем файл с конфигурацией
sudo nano /etc/nginx/snippets/well-known
Копируем содержание в файл
location ^~ /.well-known/acme-challenge/ { allow all; root /var/lib/letsencrypt/; default_type "text/plain"; try_files $uri =404; }
Добавляем в файл конфигурации /etc/nginx/sites-available/minio строку
include snippets/well-known;
Получим сертификат
sudo certbot certonly --agree-tos --email admin@example.com --webroot -w /var/lib/letsencrypt/ -d minio.dev -d www.minio.dev
Если все корректно с А-записью получаем сообщение
IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/example.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/example.com/privkey.pem Your cert will expire on 2019-08-18. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
Подключаем сертификат. Сначала генерируем 2048 битный сертификат.
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Редактируем конфигурационный файл
sudo nano /etc/nginx/sites-available/minio
server {
listen 80;
server_name minio.dev;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name minio.dev;
access_log /var/log/nginx/minio.dev-ssl-access.log;
error_log /var/log/nginx/minio.dev-ssl-error.log;
ssl on;
ssl_certificate /etc/letsencrypt/live/minio.dev/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/minio.dev/privkey.pem;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
ssl_ciphers ‘EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH’;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
include snippets/well-known;
# To allow special characters in headers ignore_invalid_headers off;
# Allow any size file to be uploaded. Set to a value such as 1000m; to
# restrict file size to a specific value
client_max_body_size 8192M;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
# To disable buffering
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;
# Default is HTTP/1, keepalive is only enabled in HTTP/1.1
proxy_http_version 1.1;
proxy_set_header Connection «»;
chunked_transfer_encoding off;
proxy_pass http://localhost:9000;
# If you are using docker-compose this would be the hostname i.e. minio
# Health Check endpoint might go here. See
# https://www.nginx.com/resources/wiki/modules/healthcheck/
# /minio/health/live;
}
}
проверяем nginx
nginx -t
Перезапускаем службу service nginx restart
при необходимости проверяя конфигурацию и делаем перевыпуск сертификата по расписанию в час ночи 1 числа каждого месяца.
sudo crontab -e
0 1 1 * * /usr/bin/certbot renew & > /dev/null