Включить 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: host | https://<ip>:8443 |
проброс 443:8443 | https://<ip> |
<ip> — адрес хоста, на котором запущен pult-web.
Для самоподписанного сертификата браузер покажет предупреждение о недоверенном сертификате — это ожидаемо на стенде.