MinIO – программное обеспечение, позволяющее развернуть собственное S3-совместимое хранилище объектов на виртуальном или физическом сервере. Фактически, MinIO является альтернативой облачному сервису Amazon S3, которая при этом полностью контролируется администратором. В отличие от AWS, MinIO не требует подписки и оплаты за использование и не ограничивает пространство и скорость. Все данные в такой конфигурации физически хранятся на дисках собственного или арендованного сервера.
В статье разберём, как развернуть S3-хранилище при помощи MinIO на виртуальном выделенном сервере, работающем под управлением Ubuntu или Debian.
Как развернуть S3-хранилище при помощи MinIO на Ubuntu и Debian
Поскольку организация объектного хранилища подразумевает использование достаточного для этого дискового пространства, размещение ресурса, предназначенного для хранения файлов, не всегда возможно в пределах раздела сервера, являющегося системным. Для подобных задач хостинг RUVDS предлагает услугу «Большой Диск», при подключении которой виртуальный сервер получает дополнительный диск достаточного объёма. Раздел, созданный на дополнительном диске, можно смонтировать к системе и использовать для размещения объектов хранения.
Загрузка и настройка MinIO
Дистрибутив MinIO, предназначенный для настройки на Linux-системах, доступен на официальном сервере загрузок. Перейдите в свой домашний каталог и при помощи утилиты wget загрузите бинарный файл MinIO:
$ cd ~
$ wget https://dl.min.io/server/minio/release/linux-amd64/minio
Затем при помощи одной команды создайте рабочую директорию MinIO и каталог для его конфигурации:
$ sudo mkdir -p /opt/minio/config
После чего переместите в рабочий каталог загруженный бинарный файл:
$ sudo mv minio /opt/minio/
Далее сделайте бинарный файл MinIO исполняемым:
$ sudo chmod +x /opt/minio/minio
Затем создайте файл окружения, который будет использоваться для хранения настроек, задаваемых через переменные окружения:
$ sudo nano /opt/minio/config/minio.env
В файл окружения добавьте следующие переменные и их значения:
MINIO_ROOT_USER– логин администратора веб-панели MinIO;MINIO_ROOT_PASSWORD– пароль администратора веб-панели MinIO;MINIO_VOLUMES– путь к директории, предназначенной для хранения файлов;MINIO_OPTS– параметр, определяющий номер порта для подключения к веб-панели.
MINIO_ROOT_USER=miniouser
MINIO_ROOT_PASSWORD=P@ssw0rd
MINIO_VOLUMES="/mnt/datastore"
MINIO_OPTS="--console-address :9001"
Сохраните файл при помощи Ctrl O, после чего закройте его, используя комбинацию клавиш Ctrl X.
Если на данной стадии у вас пока нет директории, которую вы планируете использовать для хранения файлов, создайте её либо в каталоге /mnt/, как указано в файле окружения, либо в рабочей директории MinIO:
$ sudo mkdir /mnt/datastore
Либо:
$ sudo mkdir /opt/minio/datastore
Настройка работы MinIO в качестве системной службы
Чтобы MinIO работал постоянно и в фоновом режиме, а также чтобы запускался вместе со стартом системы, необходимо настроить его работу в качестве системной службы.
На данном этапе создайте пользователя, от имени которого будет запускаться служба MinIO:
$ sudo useradd --system --no-create-home --shell /usr/sbin/nologin minio
В данной команде:
--system– создаёт системного пользователя, предназначенного не для входа в систему, а для запуска служб и демонов;--no-create-home– указывает на то, что у пользователя не будет создан домашний каталог;--shell /usr/sbin/nologin– запрещает создаваемому пользователю интерактивное подключение к системе;minio– имя создаваемого пользователя.
Далее измените владельца файлов и каталогов в рабочей директории MiNIO и в каталоге, предназначенном для хранения файлов, чтобы они принадлежали пользователю и группе minio, под именем которого будет работать служба MinIO:
$ sudo chown -R minio:minio /opt/minio
$ sudo chown -R minio:minio /mnt/datastore/
Настройка работы любого приложения в качестве системного сервиса подразумевает прежде всего создание юнит-файла для новой службы. Юнит-файл – текстовый файл, в котором описано, какой будет запускаться исполняемый файл, какие будут использоваться параметры и переменные окружения, под именем какого пользователя должен работать процесс и т.д.
Для создания юнит-файла выполните команду:
$ sudo nano /etc/systemd/system/minio.service
В файл вставьте следующие строки:
[Unit]
Description=MinIO Object Store
Wants=network-online.target
After=network-online.target
[Service]
User=minio
Group=minio
EnvironmentFile=/opt/minio/config/minio.env
ExecStart=/opt/minio/minio server $MINIO_VOLUMES $MINIO_OPTS
Restart=always
LimitNOFILE=65536
ProtectHome=yes
ProtectSystem=full
PrivateTmp=yes
[Install]
WantedBy=multi-user.target
Закройте файл, сохранив изменения, после чего обновите конфигурацию systemd, запустив перечитывание системой всех юнит-файлов после добавления нового:
$ sudo systemctl daemon-reload
Затем запустите новую службу:
$ sudo systemctl start minio
Установите новую службу в автозагрузку:
$ sudo systemctl enable minio
Чтобы убедиться в отсутствии ошибок в работе службы, выведите на экран её текущее состояние:
$ systemctl status minio
В выводе команды не должно быть сообщений о каких-либо ошибках.

Поскольку в файле окружения указано, что веб-панель будет доступна по порту 9001, необходимо открыть доступ к серверу через этого порт. Чтобы это сделать, добавьте в брандмауэр UFW соответствующее разрешающее правило:
$ sudo ufw allow 9001/tcp
После чего откройте браузер и перейдите на http://X.X.X.X:9001, где замените X.X.X.X на IP-адрес вашего VPS. Для подключения к веб-панели используйте логин и пароль, указанные в файле окружения.

