Установка и запуск сервиса S3 MinIO на Linux

Обновлено Обновлено: Опубликовано Опубликовано:

Используемые термины: MinIOLinux.

В инструкции мы рассмотрим базовые действия для развертывания собственного хранилища, доступного по S3. Установка будет выполняться путем загрузки и установки бинарного файла. Мы получим:

  • Веб-интерфейс для управления MinIO.
  • Хранилище, доступное по S3 (через HTTP API).
  • Сервис для автозапуска MinIO с помощью systemd.

Руководство подойдет для Linux RPM (Rocky, РЕД ОС, CentOS) и DEB (Debian, Ubuntu, Astra Linux).

Предварительная настройка

Выполним несколько подготовительных действий для корректной работы сервера.

1. Время

Для корректного отображения атрибутов создаваемых файлов, настроим время и его синхронизацию.

Задаем часовой пояс:

timedatectl set-timezone Europe/Moscow

* В данном примере мы задаем зону по московскому времени.

Список всех доступных зон можно посмотреть командой:

timedatectl list-timezones

Если мы увидим только одну зону UTC, скорее всего, у нас установлена минимальная версия Ubuntu. Для установки всех зон вводим:

apt install tzdata

Устанавливаем утилиту для синхронизации времени, разрешаем запуск демона и стартуем его.

а) если на системе DEB (Astra Linux / Ubuntu / Debian):

apt install chrony

б) если на системе RPM (Rocky Linux / CentOS / РЕД ОС):

dnf install chrony

systemctl enable chronyd --now

2. Настройка брандмауэра

Для полноценной работы MinIO нам нужно будет открыть 2 порта:

  • 9000 — для запросов по API. К нему подключаемся для доступа к бакетам по S3.
  • 9001 — управление хранилищем по HTTP.

В зависимости от Linux, у нас могут использоваться различные утилиты управления фаерволом. Рассмотрим наиболее популярные iptables и firewalld.

а) iptables (как правило, в системах на базе DEB):

iptables -I INPUT -p tcp --dport 9000 -j ACCEPT

iptables -I INPUT -p tcp --dport 9001 -j ACCEPT

Для сохранения правил можно использовать утилиту iptables-persistent:

apt install iptables-persistent

netfilter-persistent save

б) firewalld (как правило, в системах на базе RPM):

firewall-cmd --permanent --add-port=9000/tcp

firewall-cmd --permanent --add-port=9001/tcp

firewall-cmd --reload 

3. Обновление кэша репозитория и установка пакетов

Для установки актуальных пакетов, кэш репозитория должен быть обновлен. Также для загрузки бинарного файла нам нужна утилита curl. В зависимости от Linux, наши команды будут отличаться:

а) DEB системы:

apt update

apt install curl

б) RPM системы:

dnf install curl

Мы готовы приступить к установке и настройке сервера MinIO.

Установка и запуск MinIO

Скачиваем бинарный файл:

curl -sL https://dl.min.io/server/minio/release/linux-amd64/archive/minio.RELEASE.2025-04-22T22-12-26Z -o minio

Обратите внимание, что мы скачиваем не последней версии minio. В последней версии урезаны функциональные возможности. Но если требуется, именно, эта версия, то скачиваем ее командой:

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

Даем ему права на выполнение:

chmod +x minio

Перемещаем скачанный minio в каталог /usr/bin:

mv minio /usr/bin/

Создаем пользователя, от которого будет запускаться и работать сервис:

useradd minio -r

* в данном случае это сервисная учетная запись с именем minio.

Создаем каталог, где будут храниться данные на сервере:

mkdir -p /var/lib/minio/data

Назначаем в качестве владельца этой папки созданного пользователя:

chown -R minio:minio /var/lib/minio

Делаем пробный запуск:

sudo -u minio minio server --address ':9000' --console-address ':9001' /var/lib/minio/data

Приложение должно запуститься, а мы можем открыть браузер и перейти на страницу http://<IP-адрес сервера>:9001 — откроется панель управления хранилищем S3.

Пробуем пройти аутентификацию, введя логин и пароль minioadminminioadmin.

На этом пока можно завершить тестирование и прервать работу приложения, введя в консоли комбинацию CTRL + C.

Настроим автоматический запуск minio в качестве сервиса.

Настройка systemd

На предыдущем шаге мы убедились в работе сервера minio. Теперь настроим, чтобы он автоматически запускался при старте системы.

Для этого создаем юнит в systemd:

vi /usr/lib/systemd/system/minio.service

[Unit]
Description=Service Minio S3
After=network.target

[Service]
User=minio
Group=minio
Type=simple
Environment=MINIO_ROOT_USER=admin
Environment=MINIO_ROOT_PASSWORD=admin123
ExecStart=/usr/bin/minio server --address ':9000' --console-address ':9001' /var/lib/minio/data
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

* обратите внимание, что мы указываем логин/пароль, порты, на которых будет слушать сервис, а также путь хранения данных.

Разрешаем автозапуск сервиса и сразу стартуем его:

systemctl enable minio --now

Посмотреть статус можно командой:

systemctl status minio

Сервис готов к работе.

Обратный прокси через NGINX

С помощью веб-сервера, в нашем примере nginx, можно настроить возможность обращаться к хранилищу S3 с использованием красивых URL.

На официальном сайте есть инструкция по настройке обратного прокси, но она, на момент обновления инструкции, не до конца работала, поэтому на ее основе написана данная часть инструкции.

Будет необходимо, чтобы API часть и страница управления хранилищем работали на отдельных доменных именах, предположим, это:

  • minio-api.dmosk.local
  • minio-ui.dmosk.local

Приступим. Устанавливаем nginx. В зависимости от системы команды будут разные.

а) DEB системы:

apt install nginx

б) RPM системы:

dnf install nginx

После установки разрешим автозапуск сервиса.

Вводим команду:

systemctl enable nginx --now

Создадим конфигурационный файл:

vi /etc/nginx/sites-enabled/minio.conf

server {
   listen       80;
   server_name  minio-api.dmosk.local;
   ignore_invalid_headers off;
   client_max_body_size 0;
   proxy_buffering off;
   proxy_request_buffering off;

   location / {
      proxy_set_header Host $http_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_connect_timeout 300;
      proxy_http_version 1.1;
      proxy_set_header Connection "";
      chunked_transfer_encoding off;
      proxy_pass http://127.0.0.1:9000;
   }
}

server {
   listen       80;
   server_name  minio-ui.dmosk.local;
   ignore_invalid_headers off;
   client_max_body_size 0;
   proxy_buffering off;
   proxy_request_buffering off;

   location / {
      proxy_set_header Host $http_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 X-NginX-Proxy true;
      real_ip_header X-Real-IP;
      proxy_connect_timeout 300;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
      chunked_transfer_encoding off;
      proxy_pass http://127.0.0.1:9001;
   }
}

* обратите внимание на значения опций server_name и proxy_pass. Они, соответственно, отвечают за адрес, на котором слушает виртуальный каталог и на какой адрес будет перенаправляться запрос.

Проверяем корректность конфигурации nginx и перечитываем ее:

nginx -t && nginx -s reload

Теперь можно протестировать подключения, перейдя на адреса S3 — в нашем примере http://minio-api.dmosk.local и http://minio-ui.dmosk.local.

В продуктивной среде рекомендуется использовать https, для которого нужен сертификат. Можно получить бесплатный по инструкции Получение бесплатного SSL сертификата Let's Encrypt.

Утилита MC

Управлять нашем minio из командной строки можно с помощью утилиты mc (MinIO Client). Для его установки достаточно скачать бинарный файл и скопировать его в /usr/local/bin (на любом компьютере, с которого можно подключиться к minio). Для этого выполняем команды:

curl -sL https://dl.min.io/client/mc/release/linux-amd64/mc -o /usr/local/bin/mc

chmod +x /usr/local/bin/mc

Чтобы подключаться к s3 добавим или отредактируем алиас в файле:

vi ~/.mc/config.json

Если мы установили утилиту на тот же сервер, что и minio, достаточно отредактировать подключение:

                "local": {
                        "url": "http://localhost:9000",
                        "accessKey": "Q3AM3UQ867SPQQA43P2F",
                        "secretKey": "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG",
                        "api": "S3v4",
                        "path": "auto"
                },

* в нашем примере мы добавили токены для аутентификации при подключении к s3.

Теперь мы можем обращаться к хранилищу с помощью созданного в настройке алиаса:

mc ls local

Получить подробный список возможностей утилиты можно командой:

mc --help 

Приведем немного примеров

1. Посмотреть список бакетов в хранилище:

mc ls local

2. Разрешить анонимный доступ на скачивание файлов из указанного бакета MinIO:

mc anonymous set download local/my-bucket

# DevOps # Linux # Серверы
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет

Дмитрий Моск
— IT-специалист.
Настройка серверов, услуги DevOps.

Заказать настройку облака

Нужна бесплатная консультация?

Мини-инструкции

Установка и настройка кластера Ceph на Ubuntu для организации дискового хранилища

Настройка Dovecot Solr для ускорения поиска по почте

Установка и настройка Signaling Server (High-performance backend) для Nextcloud Talk на Ubuntu Server

Как установить и настроить сервис S3 на базе Minio на Linux

Организация сервиса календаря и адресной книги Baikal на Linux Debian

Установка и запуск Aptly API, а также примеры работы с ним

Установка различных версий python на Rocky и работа с ними

Другие инструкции

Все статьи

Нужна помощь? Пишите:






Реклама