Найти в Дзене
Эникей на передержке

Установка и настройка MinIO community | CLI

Команда MinIO прекратила активное развитие бесплатной (community) версии, т.е. новые функции и улучшения теперь доступны только в коммерческой версии MinIO AIStor, а бесплатная версия получает лишь фиксы критических уязвимостей. Более того, в свежих бесплатных версиях существенно сокращён функционал веб-интерфейса, т.е. полноценное управление теперь доступно только через инструмент командной строки mc admin. Тем не менее MinIO остаётся достаточно популярным решением хранения данных, которое совместимостимо с API Amazon S3. Ниже рассмотрим пример установки и начальной настройки MinIO из интерфейса командной строки с использованием платформы контейнеризации Docker. Образ Docker со свежей версией соберём из исходников, доступных на github. Устанавливаем необходимые для сборки пакеты: sudo apt update && sudo apt install git golang-go Клонируем репозиторий и переключаемся на релизную точку: git clone https://github.com/minio/minio
cd minio/ && git checkout RELEASE.2025-10-15T17-29-55Z *RE
Оглавление

Команда MinIO прекратила активное развитие бесплатной (community) версии, т.е. новые функции и улучшения теперь доступны только в коммерческой версии MinIO AIStor, а бесплатная версия получает лишь фиксы критических уязвимостей. Более того, в свежих бесплатных версиях существенно сокращён функционал веб-интерфейса, т.е. полноценное управление теперь доступно только через инструмент командной строки mc admin.

Тем не менее MinIO остаётся достаточно популярным решением хранения данных, которое совместимостимо с API Amazon S3.

Ниже рассмотрим пример установки и начальной настройки MinIO из интерфейса командной строки с использованием платформы контейнеризации Docker.

Подготовка к развёртыванию

Сборка Docker‑образа

Образ Docker со свежей версией соберём из исходников, доступных на github.

Устанавливаем необходимые для сборки пакеты:

sudo apt update && sudo apt install git golang-go

Клонируем репозиторий и переключаемся на релизную точку:

git clone https://github.com/minio/minio
cd minio/ && git checkout RELEASE.2025-10-15T17-29-55Z

*RELEASE.2025-10-15T17-29-55Z — это последняя доступная версия на момент написания статьи. Актуальный релиз можно подсмотреть, например, в списке релизов.

Собираем Docker‑образ с тегом myregistry.local/minio/minio:RELEASE.2025-10-15T17-29-55Z:

sudo TAG=myregistry.local/minio/minio:RELEASE.2025-10-15T17-29-55Z make docker

В случае успешного выполнения образ будет добавлен в хранилище автоматически. Проверить наличие можно командой docker images | grep minio.

Подготовка docker-compose.yaml

Создадим каталог проекта и файл docker-compose.yaml:

mkdir /opt/minio && cd /opt/minio
touch docker-compose.yaml

Добавьте в созданный файл содержимое по аналогии со скриншотом ниже.

Пример заполнения docker-compose.yaml
Пример заполнения docker-compose.yaml

К сожалению, Дзен не поддерживает форматирование кода. Вы можете скопировать готовый docker-compose.yaml из моего tg.

Рассмотрим значение некоторых переменных:

  • MINIO_ROOT_USER — имя администратора MinIO.
  • MINIO_ROOT_PASSWORD — пароль администратора MinIO.
  • MINIO_SERVER_URL — публичный URL‑адрес API MinIO, на который клиенты будут отправлять s3-запросы. Обязательно при использовании HTTPS.
  • MINIO_BROWSER_REDIRECT_URL — URL веб‑интерфейса MinIO. Обязательно при использовании HTTPS.

Подготовка точек монтирования

В каталоге с docker-compose.yaml создадим ещё 2 каталога:

  • data — для хранения данных, которые будут загружаться в бакеты;
  • config — для хранения конфигов и сертификатов.
mkdir data config

Добавление сертификатов

Если планируете использовать зашифрованное соединение, добавьте сертификат и ключ в config/certs/ и обязательно ограничьте к ним права доступа, иначе minio их проигнорирует:

mkdir config/certs
cp private.key public.crt config/certs/
chmod 644 config/certs/public.crt
chmod 600 config/certs/private.key

Запуск

Выполните docker compose up -d для запуска minio.

Проверка

В случае успешного запуска веб-интерфейс будет доступен на 9001 порту. В моём случае в адресной строке браузера необходимо указать: https://minio.test.local:9001

Траблшутинг

Если что-то пошло не так, проверьте правильность выполнения предыдущих шагов и изучите логи:

docker compose logs -f

Настройка

Так как веб-интерфейс в актуальных версиях урезан, все действия по настройке будем выполнять с помощью консольного клиента mc.

Установка MinIO Client

Cкачиваем клиент и делаем его исполняемым:

curl https://dl.min.io/client/mc/release/linux-amd64/mc -o mc
chmod +x ./mc

Подключение

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

./mc alias set minio https://minio.test.local:9000 admin Administrator

*вместо https://minio.test.local:9000 укажите ваш адрес
**вместо admin и Administrator укажите ваши MINIO_ROOT_USER и MINIO_ROOT_PASSWORD соответственно

Создание бакета

Бакет (bucket) в S3 представляет собой контейнер, который служит для хранения сгруппированных (по по проектам, приложениям или типам информации) данных.

Его можно представить как сетевую папку в Windows, доступ к которой ограничен политиками. Бакет может быть публичным или приватным, быть доступным только для чтения,только для записи или и того, и другого.

Команда создания тестового бакета:

./mc mb minio/my-test-bucket

Генерация ключей

Для аутентификации и авторизации сторонних сервисов в S3 принято использовать AWS Access Key ID (аналог логина) и AWS Secret Access Key (аналог пароля). Первый идентифицирует приложение, а второй подтверждает подлинность.

Чтобы сгененировать ключи, выполните:

./mc admin user add minio <ACCESS_KEY> <SECRET_KEY>

Например:

./mc admin user add minio awscli 1GfdVspCtohaEdCu6HXy2T5gHZDV7AXW8knE61/pkmU=

*SECRET_KEY сгенерирован командой `openssl rand -base64 32`

Назначение политик

Политики в MinIO — это правила доступа, определяющие, какие действия для каких ресурсов разрешены конкретному пользователю или группе.

Стандартные политики:

  • consoleAdmin — полный доступ ко всем операциям;
  • readonly — только чтение объектов;
  • readwrite — чтение и запись во все бакеты;
  • diagnostics — разрешения на диагностические действия.

Для тестовых сред будет достаточно назначить пользователю политику readwrite:

./mc admin policy attach minio readwrite --user=awscli

В продовых средах могут быть требования к использованию более гибких политик, например, ограничим пользователя awscli только тестовым бакетом.

Создадим файл политики policy-test-bucket-only.json и заполним его содержимым:

{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Action":["s3:GetObject","s3:PutObject","s3:DeleteObject","s3:ListBucket"],"Resource":["arn:aws:s3:::my-test-bucket","arn:aws:s3:::my-test-bucket/*"]}]}

*готовый файл в более читаемом виде также доступен в tg

Загрузим политику и назначим её пользователю:

./mc admin policy create minio policy-test-bucket-only ./policy-test-bucket-only.json
./mc admin policy attach minio policy-test-bucket-only --user=awscli

Если сторонние программы не хотят работать с хранилищем

Для проверки настроек и доступности s3 можно воспользоваться утилитой awscli:

sudo apt update && sudo apt install awscli

Подключение

Создадим профиль подключения:

aws configure --profile minio

*заполнение региона и формата вывода можно пропустить

Убедимся, что awscli видно только тестовый бакет:

aws --profile minio --endpoint-url https://minio.test.local:9000 s3api list-buckets

*будет работать, если вы применили кастомную политику

Проверка

Запись в бакет:

echo "test data" > testfile.txt
aws --profile minio --endpoint-url https://minio.test.local:9000 s3api put-object --bucket my-test-bucket --key testfile.txt --body testfile.txt

Чтение из бакета:

aws --profile minio --endpoint-url https://minio.test.local:9000 s3api get-object --bucket my-test-bucket --key testfile.txt downloaded_testfile.txt
cat downloaded_testfile.txt

Заключение

На этом установка и начальная настройка MinIO завершена.

Если статья была полезна — ставьте лайк или подписывайтесь на канал, чтобы чаще видеть в ленте подобный контент. Всем добра!)