К содержимому
TolkTak
RU EN
Скачать
На этой странице

Обратный прокси

В конфигурации с HTTPS прокси принимает запросы на порту 443 и передаёт их локальным сервисам. Сертификаты хранятся на нём; TolkTak и LiveKit слушают 127.0.0.1. В установке через Compose так уже настроен Caddy; эта страница — для своего прокси.

Путь на chat.example.com Локальный адрес
/rtc и всё внутри http://127.0.0.1:7880 (LiveKit)
всё остальное http://127.0.0.1:8080 (TolkTak)

Это пример с портами по умолчанию. Сами звонки идут к LiveKit через отдельные порты, а не через прокси. Другие пути LiveKit, например /twirp, наружу не передавайте: это его служебный API.

Сервер должен знать, что работает за прокси: задайте TOLKTAK_TRUST_PROXY=1. Тогда приложение получит адрес LiveKit wss://chat.example.com, а лимиты запросов будут брать адрес участника из X-Forwarded-For. В установке через Compose этот параметр уже задан.

nginx

Скачать пример конфигурации

Тот же файл находится в репозитории: deploy/nginx.conf.example. Он содержит оба пути, настройки WebSocket и лимиты тела запроса, а также закрывает вебхук.

  1. Добавить содержимое примера в конфигурацию nginx, например в /etc/nginx/conf.d/tolktak.conf.
  2. Заменить домен, локальные порты и пути к сертификатам.
  3. Проверить конфигурацию и применить её:
sudo nginx -t && sudo systemctl reload nginx

Команда systemctl подходит для системы с systemd. Пример использует http2 on из nginx 1.25.1 и новее; в более ранних версиях эту строку можно убрать.

Основные параметры

Параметр Назначение
Upgrade, Connection Передача WebSocket для событий чата и подключения к звонкам.
client_max_body_size Лимит тела запроса: 60m для загрузок в /api/v1/files при лимите файла TolkTak в 50 МБ, 1m для остального.
proxy_read_timeout Ожидание данных от сервиса: 120 секунд для TolkTak и 3600 для LiveKit в примере.
X-Forwarded-For Адрес участника для ограничения частоты запросов. TolkTak читает последний адрес в заголовке, поэтому прокси должен задавать его или дописывать в конец. В примере это адрес, который видит nginx.
X-Forwarded-Proto https: по нему сервер отдаёт приложению адрес LiveKit с wss://.
Strict-Transport-Security Браузеры открывают домен только по HTTPS.
/api/v1/livekit/webhook Закрыт снаружи: LiveKit обращается к нему по локальному адресу. Если LiveKit работает в другом месте, например в LiveKit Cloud, уберите этот блок.

При изменении TOLKTAK_MAX_UPLOAD_MB лимит nginx должен оставаться выше с учётом служебных данных запроса. Превышение лимита возвращает HTTP 413. Передача WebSocket описана в документации nginx.

Caddy

chat.example.com {
    header Strict-Transport-Security max-age=31536000
    reverse_proxy /rtc* 127.0.0.1:7880
    reverse_proxy 127.0.0.1:8080
}

Caddy сам получает сертификат и без дополнительных настроек передаёт WebSocket и заголовки X-Forwarded-*.

Проверка

curl https://chat.example.com/healthz
curl https://chat.example.com/api/v1/server

Вместо примера нужен свой домен. Ответ ok на первую команду подтверждает доступ к TolkTak через HTTPS. Во второй livekit_url должен быть wss://chat.example.com; ws://...:7880 означает, что сервер не видит заголовков прокси. Звонок и трансляция проверяются отдельно с двух аккаунтов, желательно из разных сетей.

Для другого прокси сохраняются те же маршруты, поддержка WebSocket и лимит загрузки файлов. При проблемах — диагностика подключения.

Исходник страницы