Appearance
Конфигурация сервиса 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_DSN | DSN для подключения к 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_KEY | API-ключ LiveKit. Должен совпадать с ключом в секции keys файла livekit.yaml. Пример: LIVEKIT_API_KEY=devkey |
LIVEKIT_API_SECRET | API-секрет 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_TOKEN | Bearer-токен для доступа к файлам. Если пусто — ссылки отдаются без авторизации. Пример: 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-keysLiveKit Server
Параметры самого LiveKit Server задаются в файле livekit.yaml и передаются в контейнер через volume.
| Параметр | Описание |
|---|---|
port | HTTP/WebSocket-порт LiveKit. По умолчанию: 7880 |
rtc.tcp_port | TCP fallback для RTC-трафика в сетях, где UDP заблокирован. По умолчанию: 7881 |
rtc.port_range_start / rtc.port_range_end | Диапазон UDP-портов для медиа-потоков. При большом числе участников — расширить. По умолчанию: 50000 — 50060 |
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: infoVolumes
| Volume | Назначение |
|---|---|
callbox_data | Внутренние данные сервиса (загрузки, canvas). Смонтирован в /var/callbox. |
egress_data | Файлы записей звонков. Общий для livekit-egress и egress-files. |
Открытые порты
| Порт | Протокол | Сервис | Назначение |
|---|---|---|---|
7880 | TCP | livekit | HTTP/WebSocket LiveKit (для браузеров пользователей) |
7881 | TCP | livekit | RTC через TCP (fallback, если UDP заблокирован) |
50000-50060 | UDP | livekit | RTC-медиапотоки (основной транспорт) |
Сервисы callbox и egress-files наружу не публикуются — к ним обращаются через nginx и внутри сети nextbox.