Что такое MinIO, для чего нужен и как его использовать подробно расписал в моём телеграм канале:
Поймёт даже новичок. Здесь только практика.
До RELEASE.2025-05-24… консоль в Community Edition включала полный набор функций, включая администрирование пользователей, управление ключами, и т.п.
Начиная с этой версии (24 мая 2025), все административные функции были удалены: осталась только возможность просмотра и управления объектами.
Вся остальная функциональность, особенно админская, теперь требует использования CLI-инструмента mc или перехода на Enterprise Edition
В данном примере настроим Распределенный кластер MinIO. Это режим работы, в котором несколько экземпляров MinIO объединяются в один логический сервер хранения объектов.
Это может быть полезно для повышения производительности и надежности, поскольку рабочая нагрузка может быть распределена по нескольким экземплярам, а данные могут храниться на нескольких дисках или серверах.
Требуемые ресурсы
Созданы и именованы 4 сервера для minio:
В файле hosts каждого сервера, или в DNS записи:
1
2
3
4
5
| 192.168.10.140 minio-1
192.168.10.141 minio-2
192.168.10.142 minio-3
192.168.10.143 minio-4
192.168.10.139 minio-web
|
192.168.10.139 minio-web
Это 5-ый сервер для доступа к веб-интерфейсу с Nginx.
На всех серверах устанавливаем: docker, docker-compose
Конфигурация docker-compose
На первом сервере создаём конфигурацию:
1
2
3
4
| mkdir /opt/minio
sudo mkdir -p /mnt/minio-data
sudo chown 1000:1000 /mnt/minio-data
nano /opt/minio/docker-compose.yaml
|
Наполняем:
1
2
3
4
5
6
7
8
9
10
| services:
minio-1:
image: minio/minio:RELEASE.2025-04-22T22-12-26Z
command: server --console-address ":9001" http://minio-1/data http://minio-2/data http://minio-3/data http://minio-4/data
environment:
MINIO_ROOT_USER: admin
MINIO_ROOT_PASSWORD: SuperSecretPassword #Меняем пароль на свой
volumes:
- /mnt/minio-data:/data
network_mode: host
|
На втором сервере создаём конфигурацию:
1
2
3
4
| mkdir /opt/minio
sudo mkdir -p /mnt/minio-data
sudo chown 1000:1000 /mnt/minio-data
nano /opt/minio/docker-compose.yaml
|
Наполняем:
1
2
3
4
5
6
7
8
9
10
| services:
minio-2:
image: minio/minio:RELEASE.2025-04-22T22-12-26Z
command: server --console-address ":9001" http://minio-1/data http://minio-2/data http://minio-3/data http://minio-4/data
environment:
MINIO_ROOT_USER: admin
MINIO_ROOT_PASSWORD: SuperSecretPassword #Меняем пароль на свой
volumes:
- /mnt/minio-data:/data
network_mode: host
|
На третьем сервере создаём конфигурацию:
1
2
3
4
| mkdir /opt/minio
sudo mkdir -p /mnt/minio-data
sudo chown 1000:1000 /mnt/minio-data
nano /opt/minio/docker-compose.yaml
|
Наполняем:
1
2
3
4
5
6
7
8
9
10
| services:
minio-3:
image: minio/minio:RELEASE.2025-04-22T22-12-26Z
command: server --console-address ":9001" http://minio-1/data http://minio-2/data http://minio-3/data http://minio-4/data
environment:
MINIO_ROOT_USER: admin
MINIO_ROOT_PASSWORD: SuperSecretPassword #Меняем пароль на свой
volumes:
- /mnt/minio-data:/data
network_mode: host
|
На четвертом сервере создаём конфигурацию:
1
2
3
4
| mkdir /opt/minio
sudo mkdir -p /mnt/minio-data
sudo chown 1000:1000 /mnt/minio-data
nano /opt/minio/docker-compose.yaml
|
Наполняем:
1
2
3
4
5
6
7
8
9
10
| services:
minio-4:
image: minio/minio:RELEASE.2025-04-22T22-12-26Z
command: server --console-address ":9001" http://minio-1/data http://minio-2/data http://minio-3/data http://minio-4/data
environment:
MINIO_ROOT_USER: admin
MINIO_ROOT_PASSWORD: SuperSecretPassword #Меняем пароль на свой
volumes:
- /mnt/minio-data:/data
network_mode: host
|
Настраиваем веб-сервер
На сервере с nginx:
1
2
| mkdir /opt/nginx
nano /opt/nginx/nginx.conf
|
Содержимое файла:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
| worker_processes auto;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 4096;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
keepalive_timeout 65;
upstream minio {
server minio-1:9000;
server minio-2:9000;
server minio-3:9000;
server minio-4:9000;
}
server {
listen 443 ssl;
server_name your.domain.com;
ssl_certificate /etc/nginx/certs/minio.crt;
ssl_certificate_key /etc/nginx/certs/minio.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
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_read_timeout 300;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_pass http://minio;
}
}
}
|
Открываем:
1
| nano /opt/nginx/docker-compose.yml
|
И наполняем:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| version: '3.7'
services:
nginx:
image: nginx:1.21-alpine
container_name: nginx_minio_proxy
ports:
- "443:443"
volumes:
- ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
- ./certs:/etc/nginx/certs:ro
- nginx_logs:/var/log/nginx
restart: unless-stopped
volumes:
nginx_logs:
|
Создаём директорию:
1
2
| cd /opt/nginx
mkdir -p ./certs
|
И генерим сертификаты:
1
2
3
| openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout ./certs/minio.key -out ./certs/minio.crt \
-subj "/CN=your.domain.com/O=YourOrg"
|
Мы поставили TLS на входе в nginx’e. Поэтому между кластером MinIO в закрытой сети допускается хождение нешифрованного трафика.
Запуск
Запустите распределенный кластер MinIO: Чтобы запустить распределенный кластер MinIO, перейдите в корневой каталог на каждом сервере и поочередно выполните следующую команду:
1
2
| cd /opt/minio/
docker-compose up -d
|
Это запустит экземпляры MinIO в отсоединенном режиме, то есть они будут работать в фоновом режиме. Вы можете использовать следующую команду для просмотра журналов для экземпляров MinIO:
Это загрузит образ Minio Docker и запустит сервер Minio.
Вы можете получить доступ к веб-интерфейсу Minio, перейдя в вашем веб-браузере по адресу, который вы указали в nginx конфигурации.

Вы можете проверить работоспособность распределенного кластера MinIO, перейдя по ссылке https://mys3.domain.local/tools/metrics
Установка завершена.