Перейти к основному содержимому
Версия: Пульт 2.2.0

Включить HTTPS

После установки контейнера pult-web (см. Установка Docker) веб-интерфейс по умолчанию доступен по HTTP. Чтобы открывать его по HTTPS, положите сертификат, ключ и файл dhparam.pem в каталог, который монтируется в контейнер как /etc/ssl/nginx. HTTPS работает поверх протокола TLS: браузер устанавливает защищённое соединение с nginx внутри pult-web.

В промышленной среде используйте сертификат, выданный удостоверяющим центром. Имена файлов должны быть теми же: ssl.crt, ssl.key, dhparam.pem. Ниже — пример самоподписанного сертификата для стенда.

Команды выполняйте в каталоге установки Пульта (/opt/pult).

Сгенерировать сертификат и ключ

mkdir -p ssl
cd ssl
openssl req -x509 -nodes -days 365 \
-newkey rsa:2048 \
-keyout ssl.key \
-out ssl.crt \
-subj "/C=RU/ST=Moscow/L=Moscow/O=Pult/CN=pult.example.ru"

Сгенерировать dhparam

openssl dhparam -out dhparam.pem 2048

Генерация dhparam.pem может занять несколько минут.

Структура каталога

ssl/
├── ssl.crt
├── ssl.key
└── dhparam.pem

Права доступа

Назначьте владельца каталога ssl по UID:GID пользователя nginx в контейнере (по умолчанию 1997:1995):

chown -R 1997:1995 ssl

Подключить каталог к pult-web

Примонтируйте каталог ssl в контейнер как /etc/ssl/nginx. Дальше зависит от сети сервиса pult-web в docker-compose.yml.

network_mode: host (базовая установка)

В примере docker-compose.yml для pult-web используется network_mode: host. Проброс портов (ports:) в этом режиме не задают. Достаточно volume:

pult-web:
# ... остальные параметры без изменений ...
network_mode: host
volumes:
- ./ssl:/etc/ssl/nginx

После перезапуска nginx слушает на хосте HTTP на порту 8080 и HTTPS на порту 8443.

Без network_mode: host

Если у сервиса нет network_mode: host, пробросьте порты, в том числе 443:8443:

pult-web:
# ... остальные параметры без изменений ...
ports:
- "80:8080"
- "443:8443"
volumes:
- ./ssl:/etc/ssl/nginx

Перезапустить контейнер

Если pult-web уже запущен, примените изменения:

docker compose up -d pult-web

При старте docker-entrypoint.sh проверяет наличие файлов ssl.crt, ssl.key и dhparam.pem в /etc/ssl/nginx. Если все три файла на месте, nginx дополнительно слушает внутренний порт 8443.

Проверка

Сеть pult-webАдрес веб-интерфейса
network_mode: hosthttps://<ip>:8443
проброс 443:8443https://<ip>

<ip> — адрес хоста, на котором запущен pult-web.

Для самоподписанного сертификата браузер покажет предупреждение о недоверенном сертификате — это ожидаемо на стенде.