MinIo

MinIo - это open-source объектное хранилище, совместимое с Amazon S3 API. Выпускается под лицензией Apache v2. Позволяет организовать собственное облачное хранилище на сервере.

Установка

Пример установки на Ubuntu 24.04. 

1. Получаем исходники с сервера MinIo:

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

2. Переносим его в директорию на сервере, где он будет располагаться:

mv minio /usr/local/bin/minio

3. Создаем группу и пользователя для MinIo:

groupadd -r minio-user
useradd -M -r -g minio-user minio-user

4. Создаем директорию, где будут хранится данные:

mkdir /mnt/data

5. Меняем права и владельцев для директории и бинарного файла:

chmod u+rxw /mnt/ /usr/local/bin/minio
chown -R minio-user /mnt/ /usr/local/bin/minio

6. Создаем systemd файл для управления MinIo:

nano /etc/systemd/system/minio.service

и добавляем строки:

[Unit]
Description=MinIO High Performance Object Storage
Documentation=https://docs.min.io
Wants=network-online.target
After=network-online.target

[Service]
User=minio-user
Group=minio-user
WorkingDirectory=/mnt/data
ExecStart=/usr/local/bin/minio server /mnt/data --console-address ":9090"
Restart=always
RestartSec=5

# Set environment variables
Environment=MINIO_ROOT_USER=admin
Environment=MINIO_ROOT_PASSWORD=password

# Allow MinIO to bind to low ports if needed
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
AmbientCapabilities=CAP_NET_BIND_SERVICE
NoNewPrivileges=true

[Install]
WantedBy=multi-user.target

В MINIO_ROOT_USER и MINIO_ROOT_PASSWORD придумываете логин и пароль, которые будут использовать для входа в WebUI-панель и для доступа к хранилищу по API.

7. Перезагружаем systemd демонов для применения изменений:

systemctl daemon-reload 

8. Запускаем и стартуем сервис MinIo:

systemctl start minio
systemctl enable minio

9. Проверяем статус сервиса MinIo:

systemctl status minio

Вывод:

● minio.service - MinIO High Performance Object Storage
     Loaded: loaded (/etc/systemd/system/minio.service; enabled; preset: enabled)
     Active: active (running) since Thu 2025-07-31 06:25:05 UTC; 2 weeks 5 days ago
       Docs: https://docs.min.io
   Main PID: 860 (minio)
      Tasks: 8 (limit: 2268)
     Memory: 338.2M (peak: 580.7M swap: 432.0K swap peak: 432.0K)
        CPU: 39min 49.791s
     CGroup: /system.slice/minio.service
             └─860 /usr/local/bin/minio server /mnt/data --console-address :9090

Вход в MinIO Web UI

Для перехода в панель MinIo используйте IP-адрес вашего сервера и порт, который был указан в п.6 в параметре --console-address ":9090"

http://your-server-ip:9000

Вы должны увидеть страницу для входа:

Логин и пароль был задан в п.6 при настройке MinIo.

После авторизации необходимо выбрать в левом меню "Create Bucket" и назвать бакет. Например, hostcms.

Настройка CDN

Пример указания настроек бакета в модуле CDN

Во вкладке Настройки необходимо снять все флажки, кроме Активность и По-умолчанию.

Настройка nginx для доступа к MinIo WebUI

Для того чтобы не обращаться к панели через IP-адрес можно настроить обращение через поддомен. Необходимо на хостинге создать поддомен основного сайта, например, minio.mysite.ru и внести изменения в конфиг nginx:

server {
  listen 80;
  server_name minio.mysite.ru;

  client_max_body_size 1G;

  location / {
    proxy_set_header Host $http_host;
    proxy_pass http://minio.mysite.ru:9000;
  }
}

Обратите внимание, что порт должен быть именно 9000. Именно на нем работает сам сервис MinIo.

Далее перезапускаем nginx:

sudo service nginx restart

После этого можем обращаться к http://minio.mysite.ru для доступа к панели MinIo WebUI

Смена типа бакета

Стандартно бакет создается с типом PRIVATE. Для того чтобы переключить его в PUBLIC необходимо:

1. Установить консоль MinIo по инструкции по ссылке:

https://docs.min.io/community/minio-object-store/reference/minio-mc.html#command-mc

Далее сделать alias для хранилища:

mc alias set myminio http://minio.mysite.ru:9000 LOGIN PASSWORD

где вместо LOGIN PASSWORD указываете логин и пароль, которые были заданы в п.6 при настройке MinIo.

После меняем тип бакета:

mc anonymous set public myminio/mybacket

вместо mybacket указывается название бакета.

Не нашли ответ на свой вопрос в документации? Направьте обращение в службу поддержки или онлайн чат.