Portainer
Для включения Portainer необходимо изменить docker-compose.yml и site.conf для Nginx.
1. Создайте новый файл docker-compose.override.yml в корневом каталоге animails и вставьте следующую конфигурацию:
services:
portainer-animails:
image: portainer/portainer-ce
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./data/conf/portainer:/data
restart: always
dns:
- 172.22.1.254
dns_search: animails-network
networks:
animails-network:
aliases:
- portainer
data/conf/nginx/portainer.conf:
upstream portainer {
server portainer-animails:9000;
}
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
2b. Добавьте новый location в стандартный сайт animails, создав файл data/conf/nginx/site.portainer.custom:
location /portainer/ {
proxy_http_version 1.1;
proxy_set_header Host $http_host; # необходимо для клиента docker
proxy_set_header X-Real-IP $remote_addr; # передача реального IP клиента
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 900;
proxy_set_header Connection "";
proxy_buffers 32 4k;
proxy_pass http://portainer/;
}
location /portainer/api/websocket/ {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_pass http://portainer/api/websocket/;
}
3. Примените изменения:
docker compose up -d && docker compose restart nginx-animails
docker-compose up -d && docker-compose restart nginx-animails
Теперь вы можете просто перейти по адресу https://${MAILCOW_HOSTNAME}/portainer/ для просмотра страницы мониторинга контейнеров Portainer. Вам будет предложено установить новый пароль для учетной записи admin. После установки пароля вы сможете подключиться к интерфейсу Portainer.
Обратный прокси (Reverse Proxy)¶
Если вы используете обратный прокси, вам необходимо настроить его для корректной пересылки запросов WebSocket.
Это требуется для работы консоли Docker и других компонентов.
Пример для Apache:
<Location /portainer/api/websocket/>
RewriteEngine on
RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
RewriteCond %{HTTP:CONNECTION} Upgrade$ [NC]
RewriteRule /portainer/api/websocket/(.*) ws://127.0.0.1:8080/portainer/api/websocket/$1 [P]
</Location>