Skip to content

Конфигурация сервиса Callbox

Callbox настраивается через переменные окружения. Ниже приведены все поддерживаемые параметры, сгруппированные по назначению.

Общие настройки сервиса

КлючОписание
PORTПорт, на котором слушает HTTP-сервер сервиса.
Пример: PORT=8081
JWT_SECRETСекрет для подписи авторизационных JWT-токенов клиентов.
Пример: JWT_SECRET=qwe123
SERVICE_TOKENТокен для межсервисного общения. Такой же токен должен быть у каждого сервиса nextbox.
Пример: SERVICE_TOKEN=qwe123
SERVICE_BACK_URLАдрес, по которому к сервису обращаются другие сервисы NB.
Пример: SERVICE_BACK_URL=http://callbox:8081
DISCOVERY_URLАдрес discovery-сервиса NB, в котором регистрируются все сервисы.
Пример: DISCOVERY_URL=http://discovery:6011
NEXTBOX_API_URLБазовый URL API Nextbox (для обращения за пользователями, группами, аватарами).
Пример: NEXTBOX_API_URL=http://gateway:6005

База данных

КлючОписание
DATABASE_DSNDSN для подключения к PostgreSQL в формате
host=<host> port=<port> user=<login> password=<password> dbname=<db> sslmode=<mode>.
Пример: DATABASE_DSN=host=postgresql port=5432 user=nextbox password=nextbox dbname=callbox sslmode=disable

Миграции схемы выполняются автоматически при первом запуске сервиса.

LiveKit

КлючОписание
LIVEKIT_SERVER_URLВнутренний HTTP-адрес LiveKit, по которому обращается callbox (внутри сети docker).
Пример: LIVEKIT_SERVER_URL=http://livekit:7880
LIVEKIT_CLIENT_URLВнешний WebSocket-адрес LiveKit, по которому к нему обращается браузер.
Пример: LIVEKIT_CLIENT_URL=ws://localhost:8095/livekit
Для продакшена: wss://calls.example.com/livekit
LIVEKIT_API_KEYAPI-ключ LiveKit. Должен совпадать с ключом в секции keys файла livekit.yaml.
Пример: LIVEKIT_API_KEY=devkey
LIVEKIT_API_SECRETAPI-секрет LiveKit. Должен совпадать с секретом в livekit.yaml и в конфигурации livekit-egress.
Пример: LIVEKIT_API_SECRET=devsecret

WARNING

LIVEKIT_API_KEY и LIVEKIT_API_SECRET используются в трёх местах: callbox, livekit-egress и livekit.yaml. Во всех трёх должны быть одинаковые значения.

Запись звонков

КлючОписание
RECORDING_ENABLEDВключить запись звонков. При true в интерфейсе появляется кнопка записи.
Пример: RECORDING_ENABLED=false
EGRESS_FILES_URLВнутренний адрес сервиса egress-files, раздающего файлы записей по HTTP.
Пример: EGRESS_FILES_URL=http://egress-files:9100

Сервис egress-files настраивается отдельными переменными:

КлючОписание
DATA_DIRКаталог с файлами записей (общий volume с livekit-egress).
Пример: DATA_DIR=/data/egress
PORTПорт HTTP-сервера.
Пример: PORT=9100
BEARER_TOKENBearer-токен для доступа к файлам. Если пусто — ссылки отдаются без авторизации.
Пример: BEARER_TOKEN=
MAX_AGEМаксимальное время хранения файлов записей. По истечении — файл удаляется.
Пример: MAX_AGE=60m
CLEANUP_INTERVALИнтервал проверки и очистки устаревших записей.
Пример: CLEANUP_INTERVAL=10m

Push-уведомления

КлючОписание
VAPID_PUBLIC_KEYПубличный VAPID-ключ. Если не задан, push-уведомления о входящих звонках не работают.
Пример: VAPID_PUBLIC_KEY=
VAPID_PRIVATE_KEYПриватный VAPID-ключ.
Пример: VAPID_PRIVATE_KEY=

Сгенерировать пару ключей:

bash
npx web-push generate-vapid-keys

LiveKit Server

Параметры самого LiveKit Server задаются в файле livekit.yaml и передаются в контейнер через volume.

ПараметрОписание
portHTTP/WebSocket-порт LiveKit.
По умолчанию: 7880
rtc.tcp_portTCP fallback для RTC-трафика в сетях, где UDP заблокирован.
По умолчанию: 7881
rtc.port_range_start / rtc.port_range_endДиапазон UDP-портов для медиа-потоков. При большом числе участников — расширить.
По умолчанию: 5000050060
rtc.use_external_ipАвтоматически определять и сообщать клиентам внешний IP. Для продакшена — true.
По умолчанию: false
keysПары <api_key>: <api_secret>. Должны совпадать с LIVEKIT_API_KEY / LIVEKIT_API_SECRET в callbox и livekit-egress.
пример livekit.yaml
yaml
port: 7880
rtc:
  tcp_port: 7881
  port_range_start: 50000
  port_range_end: 50060
  use_external_ip: false
keys:
  devkey: devsecret
logging:
  level: info

Volumes

VolumeНазначение
callbox_dataВнутренние данные сервиса (загрузки, canvas). Смонтирован в /var/callbox.
egress_dataФайлы записей звонков. Общий для livekit-egress и egress-files.

Открытые порты

ПортПротоколСервисНазначение
7880TCPlivekitHTTP/WebSocket LiveKit (для браузеров пользователей)
7881TCPlivekitRTC через TCP (fallback, если UDP заблокирован)
50000-50060UDPlivekitRTC-медиапотоки (основной транспорт)

Сервисы callbox и egress-files наружу не публикуются — к ним обращаются через nginx и внутри сети nextbox.