Skip to content

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

Callbox настраивается переменными окружения. Пять переменных обязательны: DATABASE_DSN, LIVEKIT_SERVER_URL, LIVEKIT_CLIENT_URL, LIVEKIT_API_KEY и LIVEKIT_API_SECRET.

Часть прикладных параметров можно изменить без перезапуска в административном разделе Callbox. Сохранённые в приложении значения имеют приоритет над переменными окружения; значения окружения остаются начальными и используются после сброса настройки.

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

ПеременнаяПо умолчаниюОписание
PORT8081Порт HTTP-сервера Callbox.
BASE_PATH/callboxБазовый путь интерфейса и API. Значение нормализуется с ведущим / и без завершающего /.
APP_VERSION1.0.0Версия в health-check и регистрации Discovery. Для ветки Oak используйте 1.11.0.
LOG_LEVELinfoУровень логирования: debug, info, warn или error.
JWT_SECRETqwe123Секрет проверки JWT NextBox. В production задайте тот же стойкий секрет, которым подписываются пользовательские токены.
JWT_COOKIE_NAMEaccess_tokenИмя cookie с JWT.

Секреты по умолчанию

Значения вида qwe123, devkey и devsecret допустимы только для локального стенда. Для production сгенерируйте отдельные стойкие секреты и не храните их в репозитории.

PostgreSQL

ПеременнаяПо умолчаниюОписание
DATABASE_DSNОбязательная. DSN базы Callbox, например postgres://nextbox:secret@postgresql:5432/callbox?sslmode=disable.
DATABASE_MAX_OPEN_CONNS20Максимальное число открытых соединений; должно быть больше нуля.
DATABASE_MAX_IDLE_CONNS10Максимальное число простаивающих соединений; не больше DATABASE_MAX_OPEN_CONNS.
DATABASE_CONN_MAX_IDLE_TIME5mМаксимальное время простоя соединения; 0 отключает ограничение.
DATABASE_CONN_MAX_LIFETIME30mМаксимальное время жизни соединения; 0 отключает ограничение.

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

LiveKit

ПеременнаяПо умолчаниюОписание
LIVEKIT_SERVER_URLОбязательная. Внутренний URL LiveKit для Callbox, например http://livekit:7880.
LIVEKIT_CLIENT_URLОбязательная. URL LiveKit, доступный клиентам: ws://host:7880 для HTTP-стенда или wss://calls.example.com для production.
LIVEKIT_API_KEYОбязательная. API-ключ LiveKit.
LIVEKIT_API_SECRETОбязательная. API-секрет LiveKit.

Ключ и секрет должны совпадать в Callbox, livekit.yaml, egress.yaml и BEARER_TOKEN сервиса egress-files. LiveKit webhook должен отправляться на http://callbox:8081/callbox/api/egress/webhook при BASE_PATH=/callbox.

NextBox, Discovery и уведомления

ПеременнаяПо умолчаниюОписание
NEXTBOX_API_URLпустоВнутренний базовый URL NextBox, например http://gateway:6005. Можно менять во время работы.
NEXTBOX_PUBLIC_URLвнешний origin запросаПубличный URL NextBox для ссылок в браузере, например https://nextbox.example.com. При установке Callbox под /callbox на том же reverse proxy можно не задавать.
USERS_API_BASE_URLпустоУстаревший fallback для NEXTBOX_API_URL; используйте только для совместимости.
USERS_API_TIMEOUT5sTimeout запросов к API пользователей и групп.
DISCOVERY_URLпустоURL Discovery, например http://discovery:6011. При пустом значении регистрация отключена.
SERVICE_TOKENпустоОбщий service token NextBox. Также защищает health-check и metrics.
SERVICE_NAMENextbox CallsИмя экземпляра в Discovery.
SERVICE_ROUTE_NAMEcallboxИмя маршрута в Discovery.
SERVICE_BACK_URLпустоВнутренний origin Callbox без BASE_PATH, например http://callbox:8081.
SERVICE_INSTANCE_NUMBER1Номер экземпляра сервиса.
NEXTBOX_NOTIFICATIONS_ENABLEDfalseПубликация событий Callbox в систему уведомлений NextBox.
RABBITMQ_URLпустоAMQP URL NextBox, например amqp://nextbox:secret@rabbitmq:5672/nextbox.

Если NEXTBOX_NOTIFICATIONS_ENABLED=true, одновременно обязательны RABBITMQ_URL, DISCOVERY_URL и SERVICE_TOKEN; иначе Callbox завершит запуск с ошибкой.

Контракт Discovery

Discovery всегда обращается к корневому /api/health-check origin и отбрасывает path из SERVICE_BACK_URL. Поэтому указывайте только origin без /callbox. Callbox публикует служебный health endpoint в корне независимо от BASE_PATH.

Redis

ПеременнаяПо умолчаниюОписание
REDIS_URLпустоRedis Callbox, например redis://redis:6379/0. При пустом значении распределённый cache отключён.
REDIS_KEY_PREFIXcallbox:v1Префикс ключей без начального и конечного :.

Callbox, LiveKit и Egress используют общий сервис Redis. Callbox подключается к DB 0, а LiveKit и Egress — к DB 1. В livekit.yaml и egress.yaml должны совпадать адрес redis:6379 и значение db: 1.

Файлы и canvas

ПеременнаяПо умолчаниюОписание
FILE_STORAGE_PATH./data/filesЛокальный каталог файлов комнат и записей. В контейнере рекомендуется /var/callbox/files.
CANVAS_STORAGE_PATH./data/canvasesЛокальный каталог данных canvas. В контейнере рекомендуется /var/callbox/canvases.
FILE_MAX_SIZE1073741824Максимальный размер загружаемого файла в байтах, по умолчанию 1 ГБ. Можно менять во время работы.

Оба каталога должны быть постоянными volumes с правом записи для процесса Callbox.

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

ПеременнаяПо умолчаниюОписание
RECORDING_ENABLEDfalseПоказывает управление записью и разрешает запуск Egress. Можно менять во время работы.
EGRESS_FILES_URLпустоВнутренний URL временных файлов, например http://egress-files:9100. Можно менять во время работы.

URL шаблона Room Composite Egress Callbox формирует автоматически из NEXTBOX_API_URL, BASE_PATH и /static/egress. При NEXTBOX_API_URL=http://gateway:6005 убедитесь, что этот внутренний адрес маршрутизирует /callbox; иначе используйте адрес reverse proxy внутри Docker-сети.

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

ПеременнаяПо умолчаниюОписание
DATA_DIR/dataОбщий с Egress каталог результатов.
PORT9100HTTP-порт сервиса.
BEARER_TOKENпустоBearer-токен скачивания. Для Callbox задайте значение LIVEKIT_API_KEY.
MAX_AGE60mСрок хранения временного файла до удаления.
CLEANUP_INTERVAL10mИнтервал фоновой очистки.

Транскрибация

ПеременнаяПо умолчаниюОписание
WHISPER_URLпустоБазовый URL сервиса распознавания, например http://whisper:8000.
TRANSCRIPTION_ENABLEDпо наличию WHISPER_URLЯвно включает или выключает функцию. Для true требуется непустой WHISPER_URL.
WHISPER_SPEED_FACTOR1.0Начальная оценка отношения времени обработки к длительности записи.
WHISPER_MAX_TIMEOUT2hМаксимальная длительность одного HTTP-запроса.
TRANSCRIPTION_WORKER_CONCURRENCY1Число параллельных задач worker в экземпляре Callbox.
TRANSCRIPTION_MAX_ATTEMPTS3Максимальное число попыток обработки задачи.
TRANSCRIPTION_HISTORY_RETENTION_DAYS180Срок хранения технической истории в днях; 0 отключает очистку.

Callbox ожидает GET /health и POST /v1/transcribe. Недоступность сервиса транскрибации не делает Callbox unready.

Локальный сервис можно запускать на CPU или NVIDIA CUDA. Модели храните в постоянном volume, подключённом к /data/models.

Переменная сервиса WhisperПо умолчаниюОписание
TRANSCRIPTION_ENGINEwhisperxДвижок распознавания: whisperx или gigaam.
DEVICEcpuУстройство: cpu или cuda.
COMPUTE_TYPEint8Тип вычислений; для CUDA обычно используется float16.
MODEL_SIZElarge-v3Модель WhisperX.
WHISPER_LANGUAGEпустоФиксированный язык или автоматическое определение при пустом значении.
HF_TOKENпустоТокен Hugging Face для загрузки моделей pyannote и разделения по спикерам.
HF_HOME/data/modelsКаталог cache моделей.

Первый запуск может занять несколько минут из-за загрузки модели. Без HF_TOKEN основная транскрибация работает, но разделение результата по спикерам отключено.

AI-сводки записей

ПеременнаяПо умолчаниюОписание
AI_SUMMARY_API_URLпустоURL OpenAI-совместимого API, например http://ollama:11434/v1.
AI_SUMMARY_API_KEYпустоAPI-ключ; заголовок Authorization не отправляется при пустом значении.
AI_SUMMARY_MODELпустоИмя модели.
AI_SUMMARY_ENABLEDпо наличию URL и моделиЯвно включает или выключает функцию.
AI_SUMMARY_TIMEOUT5mTimeout одного запроса.
AI_SUMMARY_MAX_ATTEMPTS3Максимальное число попыток.

Для сводки сначала должна быть готова транскрипция записи.

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

ПеременнаяПо умолчаниюОписание
VAPID_PUBLIC_KEYпустоПубличный VAPID-ключ Web Push.
VAPID_PRIVATE_KEYпустоПриватный VAPID-ключ Web Push.
PUSH_PROXY_URLоблачный proxy CallboxURL proxy для APNs/FCM. Для собственного proxy задайте его внутренний или внешний URL.
PUSH_PROXY_TOKENвстроенное значение образаТокен proxy. Рекомендуется явно задавать секрет из вашей установки.

Пару VAPID-ключей можно создать встроенной утилитой Callbox или совместимым генератором Web Push. Приватный ключ не публикуйте.

Feedback, аналитика и ссылки на клиенты

ПеременнаяПо умолчаниюОписание
FEEDBACK_ENABLEDtrueВключает отправку обратной связи. Можно менять во время работы.
FEEDBACK_URLhttps://next-box.ruБазовый URL сервиса обратной связи.
UMAMI_SCRIPT_URLпустоURL скрипта Umami.
UMAMI_WEBSITE_IDпустоWebsite ID Umami.
OPENREPLAY_PROJECT_KEYпустоProject key OpenReplay.
OPENREPLAY_INGEST_URLпустоURL ingest OpenReplay.
MACOS_UPDATE_FEED_URLвстроенный feedAppcast для обновления macOS-клиента.
MACOS_DMG_DOWNLOAD_URLпустоПрямая ссылка на DMG.
WINDOWS_UPDATE_FEED_URLвстроенный feedAppcast для Windows-клиента.
LINUX_UPDATE_FEED_URLвстроенный feedZsync feed Linux-клиента.
ANDROID_DOWNLOAD_URLRuStoreСсылка на Android-клиент.

HTTP timeouts

ПеременнаяПо умолчаниюОписание
HTTP_READ_HEADER_TIMEOUT5sЧтение заголовков запроса.
HTTP_READ_TIMEOUT15mЧтение запроса, включая большие загрузки.
HTTP_WRITE_TIMEOUT15mЗапись ответа.
HTTP_IDLE_TIMEOUT2mKeep-alive timeout.
HEALTH_CHECK_TIMEOUT3sОбщий timeout зависимостей health-check.

Сетевые порты

Для конфигурации из установщика используются следующие порты:

ПортПротоколНазначение
8081TCPCallbox API; можно оставить только во внутренней сети, если доступ идёт через reverse proxy.
7880TCPLiveKit HTTP/WebSocket signaling.
7881TCPWebRTC TCP fallback.
5349TCPTURN over TLS, если включён встроенный TURN.
3478UDPTURN UDP; порт можно изменить в установщике.
50100-50200UDPRTP/RTCP медиапотоки LiveKit.

egress-files:9100, PostgreSQL, Redis и RabbitMQ наружу не публикуются.