Перейти к содержанию

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
2a. Создайте 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>