К содержимому

Домен и HTTPS ​

После start приложение доступно только во внутренней сети Docker. HTTPS включает отдельный сервис proxy в профиле public. Сначала организуйте ограниченный доступ операторов, проверьте вход и рабочие сценарии; затем открывайте доступ пользователям. Имя профиля public само по себе не ограничивает круг посетителей.

Подготовка ​

Если ещё нет Docker, Compose и административной сессии, сначала выполните подготовку нового сервера. Здесь команды выполняются на сервере от root; DNS меняется отдельно — в панели провайдера домена.

Выберите домен, например helpdesk.example.com, и задайте DOMAIN=helpdesk.example.com в .env, без протокола и пути. Этот параметр участвует в настройке Caddy и AUTH_ORIGIN приложения. Домен в браузере и ожидаемый origin должны совпадать.

Настройте DNS-записи A и, при использовании IPv6, AAAA на сервер. Доступ к TCP 80 и 443 определите по порядку приёмки ниже. Неверная AAAA-запись может направить часть посетителей на другой сервер. MX-записи относятся к почте: изменение веб-домена само по себе не требует их замены.

Убедитесь, что порты не заняты другим веб-сервером, а firewall и правила провайдера согласованы. PostgreSQL и порт приложения наружу не публикуйте. Постоянные тома Caddy хранят его состояние; не удаляйте их при обычном перезапуске.

Привязать домен: что вводить в панели DNS ​

Для примера используем helpdesk.example.com. Замените его своим адресом. Интерфейсы провайдеров разные, поэтому ориентируйтесь на назначение полей, а не на название конкретной панели.

  1. Откройте управление DNS-зоной домена example.com. Оно может находиться не там, где куплен сервер, и даже не у регистратора домена: нужен провайдер, чьи DNS-серверы обслуживают зону.
  2. Найдите существующие записи для helpdesk. Если там уже работает другой сайт, остановитесь и согласуйте переключение; не заменяйте адрес чужой системы.
  3. Для нового поддомена добавьте запись из таблицы. Не меняйте NS, MX и остальные имена ради одного поддомена.
  4. Сохраните запись и дождитесь её появления в DNS. Обновление не всегда мгновенное; время зависит от TTL и кэшей.
  5. Только затем переходите к ограничению доступа и запуску HTTPS ниже.
ПолеПример для helpdesk.example.com
ТипA
Имя / хостhelpdesk; если панель требует полное имя — helpdesk.example.com
Значение / адресПубличный IPv4 нового сервера из панели хостинга, без http://
TTLЗначение по умолчанию провайдера, если администратор не указал другое

AAAA добавляйте только при настроенном и проверенном IPv6 сервера. Если используете корень домена вместо поддомена, поле имени обычно обозначается @ или пустым значением — проверьте подсказку своего провайдера. Для простого прямого подключения режим записи должен направлять трафик на сервер; CDN или проксирование провайдера требуют отдельной проверки TLS и сетевых ограничений.

Проверка с вашего компьютера Windows (PowerShell):

powershell
Resolve-DnsName helpdesk.example.com -Type A
Resolve-DnsName helpdesk.example.com -Type AAAA

Для A ожидается IPv4 вашего сервера. Отсутствие AAAA нормально, если IPv6 не используете; неверный IPv6 — не нормально. Это проверка DNS, ещё не проверка доступности сайта.

На сервере откройте настройки:

sh
cd /opt/ngensia/deploy
nano .env

Укажите DOMAIN=helpdesk.example.com со своим доменом. Сохраните Ctrl+O, Enter и выйдите Ctrl+X. Не добавляйте к DOMAIN протокол, порт или путь /docs/.

Закрытая приёмка и доступ пользователей ​

До запуска proxy настройте внешний firewall провайдера или сетевой шлюз: TCP 443 разрешён только с согласованных IP операторов либо выхода их VPN, остальным запрещён. Правило должно действовать для IPv4 и IPv6 и реально закрывать опубликованный Docker-порт; одного предположения о локальном firewall недостаточно.

TCP 80 оставьте доступным для HTTP-проверки домена при выдаче сертификата Caddy. В штатной конфигурации обычные HTTP-запросы перенаправляются на HTTPS, где действует ограничение доступа. Если политика запрещает такой доступ к 80 или центр сертификации не может проверить домен, сначала согласуйте отдельную схему выдачи сертификата; не отключайте проверку TLS в браузере.

Запустите proxy следующими командами. С разрешённого подключения откройте именно https://helpdesk.example.com/login, чтобы совпадали сертификат и AUTH_ORIGIN. С другого внешнего адреса убедитесь, что HTTPS недоступен. Затем проверьте вход и нужные сценарии. Только после приёмки расширьте сетевое правило на пользователей и повторите проверку.

При восстановлении можно использовать отдельный согласованный домен приёмки. При смене на рабочий домен обновите DOMAIN, повторите sh ngensia.sh start, запуск proxy и проверки сертификата и входа. Схема firewall и выдача сертификата должны быть проверены на целевой инфраструктуре; наличие этой инструкции не означает их приёмку.

Включение proxy ​

Для локального хранения файлов:

sh
cd /opt/ngensia/deploy
sh ngensia.sh start
docker compose --env-file .env -f compose.yml --profile public run --rm --no-deps proxy caddy validate --config /etc/caddy/Caddyfile
docker compose --env-file .env -f compose.yml --profile public up -d --wait proxy

Для S3 используйте тот же overlay, что и приложение:

sh
cd /opt/ngensia/deploy
sh ngensia.sh start
docker compose --env-file .env -f compose.yml -f compose.s3.yml --profile public run --rm --no-deps proxy caddy validate --config /etc/caddy/Caddyfile
docker compose --env-file .env -f compose.yml -f compose.s3.yml --profile public up -d --wait proxy

Проверку caddy validate выполните отдельно: при ошибке не переходите к запуску.

Caddy обслуживает заданный домен и направляет запросы к app. Проверьте в браузере https://helpdesk.example.com: сертификат, страницу входа, успешный вход и открытие вложения. Доступность главной страницы ещё не доказывает работоспособность всех функций.

Диагностика ​

При ошибке сертификата проверьте DNS, внешнюю доступность портов и журнал proxy. При 502 — состояние app и его внутреннюю готовность. Публичные /health, /health/* и /version намеренно отвечают 404; используйте внутреннюю диагностику, не снимайте это ограничение ради внешнего монитора.

Штатная команда stop останавливает app и PostgreSQL, но не proxy. Для закрытия внешнего входа остановите proxy отдельной Compose-командой с тем же набором файлов. Смена домена требует повторной проверки origin, сертификата и настроек интеграций.

Готовность и журналы · Параметры установки

Сверено с версией 0.9 · редакция 13.10.2026

Документация NGENSIA · Работа, настройка и эксплуатация