Skip to main content
Эта инструкция нужна, если вы ставите Yahont CE на сервер с публичным адресом. Docker Compose из репозитория публикует порты на всех сетевых интерфейсах, а сертификатов и HTTPS в нём нет. Поэтому перед Yahont ставят обратный прокси. Здесь описан Nginx на хосте (Debian или Ubuntu) и сертификаты Let’s Encrypt. Домен в примерах: yahont.example.ru. Замените его на свой.

Как это работает

  • Nginx на хосте принимает порты 80 и 443, расшифровывает HTTPS и проксирует запросы на локальный порт.
  • Nginx в Docker Compose распределяет запросы между веб-сервером и API.
  • Порт 127.0.0.1:3100 не виден снаружи.

Шаг 1. Привяжите Yahont к локальному адресу

В каталоге deployment/docker_compose создайте файл docker-compose.override.yml (нужен Docker Compose 2.24.4 или новее):
Без !override список портов склеится со стандартным, и порты 80 и 3000 останутся открытыми. В .env укажите адрес сайта:
Затем запустите Yahont, как описано на странице Docker: docker compose up -d. Если стек уже запущен, после правки .env выполните docker compose up -d. Проверка: curl -s -o /dev/null -w "%{http_code}\n" http://127.0.0.1:3100/ должна вернуть 200.

Шаг 2. Установите Nginx и Certbot

Положите в /etc/nginx/conf.d/upgrade-map.conf карту для WebSocket. Файл нужен один раз для всех сайтов на сервере, и он должен существовать до сайтов, которые его используют:

Шаг 3. Выпустите сертификат

DNS-запись A вашего домена должна указывать на этот сервер. Сначала включите только HTTP-блок: HTTPS-блок ссылается на сертификат, которого ещё нет, и Nginx не примет такой конфиг. /etc/nginx/sites-available/yahont.example.ru.conf:

Шаг 4. Добавьте HTTPS-блок

Допишите в тот же файл:
Если ответы модели обрываются раньше срока, проверьте тайм-ауты и здесь, и в .env (NGINX_PROXY_READ_TIMEOUT и соседние переменные для nginx в Compose).
Ожидаем HTTP/2 200 или перенаправление на страницу входа.

Шаг 5. Включите автопродление сертификатов

После продления Nginx нужно перечитать сертификаты:
Let’s Encrypt может временно ответить rateLimited при частых пробных запусках renew --dry-run. Это не ошибка настройки: подождите 10–15 минут.

По желанию: закройте OAuth-провайдер

Yahont публикует адреса /api/oauth-provider/* (регистрация клиентов и выдача токенов), если WEB_DOMAIN начинается с https (или это адрес HTTP на localhost). Переменной, которая бы это отключала, нет. Если вам эти адреса не нужны, закройте их в блоке server до остальных location:
Не закрывайте их, если подключаете к Yahont MCP-клиенты с входом через OAuth: им эти адреса нужны.

Что ещё проверить

  • Смените пароли по умолчанию в .env (Postgres, S3, OpenSearch). Подсказки есть в самом файле.
  • Брандмауэр ufw не закрывает порты, которые публикует Docker. Поэтому привязка к 127.0.0.1 из шага 1 обязательна.
  • Первый зарегистрированный пользователь становится администратором. Зарегистрируйтесь сами сразу после запуска.