Требования
Системные требования и планирование ресурсов для Voxagent
Voxagent — модульная платформа. Каждый сервис работает в своём контейнере, поэтому компоненты можно масштабировать независимо. Перед развёртыванием подберите железо под ожидаемое число одновременных сессий — остальное (бэкбон) остаётся примерно постоянным.
Программные зависимости
- Docker 24+ и Docker Compose v2.24+
- 64-битный Linux-хост (Ubuntu 22.04 LTS или аналог). macOS подойдёт для локальной разработки.
- Исходящий интернет (registry, LLM/STT/TTS провайдеры, STUN/TURN).
- Порты, доступные из браузеров пользователей: фронтенд, API бэкенда, Keycloak, LiveKit WebRTC (TCP 7881, UDP 50000–60000).
Ресурсы по сервисам
В таблице ниже — CPU / RAM / Disk для каждого сервиса при типовых нагрузках по одновременным сессиям. Значения — эмпирические замеры из прода.
| Service | 1 session | 10 sessions | 50 sessions | 250 sessions | 500 sessions |
|---|---|---|---|---|---|
livekit-serverWebRTC SFU — media plane for every active call | 550 m · 276 MB · 1.0 GB | 1.00 vCPU · 456 MB · 1.0 GB | 3.00 vCPU · 1.2 GB · 1.0 GB | 13.00 vCPU · 5.1 GB · 1.0 GB | 25.50 vCPU · 10.0 GB · 1.0 GB |
python-workerLiveKit voice agent (LLM/STT/TTS orchestration) | 500 m · 520 MB · 1.0 GB | 2.30 vCPU · 1.6 GB · 1.0 GB | 10.30 vCPU · 6.3 GB · 1.0 GB | 50.30 vCPU · 29.7 GB · 1.0 GB | 100.30 vCPU · 59.0 GB · 1.0 GB |
egressLiveKit recording/transcoding (optional) | 350 m · 336 MB · 2.0 GB | 1.70 vCPU · 1.0 GB · 2.5 GB | 7.70 vCPU · 4.2 GB · 4.5 GB | 37.70 vCPU · 19.8 GB · 14.5 GB | 75.20 vCPU · 39.3 GB · 27.0 GB |
websocket-media-bridgeVoximplant/Twilio SIP ↔ LiveKit audio bridge | 230 m · 143 MB · 0.5 GB | 500 m · 278 MB · 0.5 GB | 1.70 vCPU · 878 MB · 0.5 GB | 7.70 vCPU · 3.8 GB · 0.5 GB | 15.20 vCPU · 7.4 GB · 0.5 GB |
asp-net-backendMain API (.NET 9, EF Core, SignalR) | 1.01 vCPU · 1.0 GB · 5.0 GB | 1.10 vCPU · 1.0 GB · 5.0 GB | 1.50 vCPU · 1.2 GB · 5.0 GB | 3.50 vCPU · 2.2 GB · 5.0 GB | 6.00 vCPU · 3.4 GB · 5.0 GB |
postgresMain + Lago + Keycloak + Hangfire DBs | 505 m · 1.0 GB · 20.0 GB | 550 m · 1.0 GB · 20.0 GB | 750 m · 1.1 GB · 20.1 GB | 1.75 vCPU · 1.5 GB · 20.5 GB | 3.00 vCPU · 2.0 GB · 21.0 GB |
redisLiveKit pubsub, backend cache, Sidekiq queues | 205 m · 259 MB · 2.0 GB | 250 m · 286 MB · 2.0 GB | 450 m · 406 MB · 2.0 GB | 1.45 vCPU · 1006 MB · 2.0 GB | 2.70 vCPU · 1.7 GB · 2.0 GB |
kafkaEvent streaming (spans, webhooks, analytics) | 505 m · 1.0 GB · 20.0 GB | 550 m · 1.0 GB · 20.1 GB | 750 m · 1.2 GB · 20.5 GB | 1.75 vCPU · 2.2 GB · 22.5 GB | 3.00 vCPU · 3.4 GB · 25.0 GB |
keycloakOAuth2 / OIDC authentication | 500 m · 768 MB · 2.0 GB | 500 m · 768 MB · 2.0 GB | 500 m · 768 MB · 2.0 GB | 500 m · 768 MB · 2.0 GB | 500 m · 768 MB · 2.0 GB |
minioS3-compatible storage (recordings, invoices) | 200 m · 256 MB · 20.1 GB | 200 m · 256 MB · 20.5 GB | 200 m · 256 MB · 22.5 GB | 200 m · 256 MB · 32.5 GB | 200 m · 256 MB · 45.0 GB |
clickhouseAnalytics warehouse (optional) | 500 m · 2.0 GB · 30.0 GB | 500 m · 2.0 GB · 30.1 GB | 500 m · 2.0 GB · 30.3 GB | 500 m · 2.0 GB · 31.3 GB | 500 m · 2.0 GB · 32.5 GB |
webhook-receiverAccepts inbound webhooks (Lago, LiveKit, Twilio) | 200 m · 256 MB · 1.0 GB | 200 m · 256 MB · 1.0 GB | 200 m · 256 MB · 1.0 GB | 200 m · 256 MB · 1.0 GB | 200 m · 256 MB · 1.0 GB |
angular-client + widgetStatic frontends (nginx) | 100 m · 64 MB · 0.5 GB | 100 m · 64 MB · 0.5 GB | 100 m · 64 MB · 0.5 GB | 100 m · 64 MB · 0.5 GB | 100 m · 64 MB · 0.5 GB |
lago (api + worker + front)Billing stack | 1.00 vCPU · 1.0 GB · 5.0 GB | 1.00 vCPU · 1.0 GB · 5.0 GB | 1.00 vCPU · 1.0 GB · 5.0 GB | 1.00 vCPU · 1.0 GB · 5.0 GB | 1.00 vCPU · 1.0 GB · 5.0 GB |
logging stack (ES, Kibana, Fluent Bit, Benthos)Optional observability (--profile logging) | 1.00 vCPU · 2.0 GB · 30.0 GB | 1.03 vCPU · 2.0 GB · 30.0 GB | 1.15 vCPU · 2.1 GB · 30.1 GB | 1.75 vCPU · 2.5 GB · 30.8 GB | 2.50 vCPU · 3.0 GB · 31.5 GB |
| Total | 7.36 vCPU 10.8 GB 140.1 GB | 11.48 vCPU 13.0 GB 141.2 GB | 29.80 vCPU 22.9 GB 146.0 GB | 121.40 vCPU 72.1 GB 170.0 GB | 235.90 vCPU 133.6 GB 200.0 GB |
Как читать:
- Сервисы, зависящие от сессий (
livekit-server,python-worker,egress,websocket-media-bridge) растут линейно по числу активных звонков. Их и нужно планировать. - Backbone-сервисы (Postgres, Kafka, Keycloak, Redis, MinIO и т.п.) имеют в основном фиксированный футпринт — разворачиваются один раз и переиспользуются между тенантами.
- Диск в основном растёт в Postgres (транскрипты, счета), Kafka (retention событий) и MinIO (записи звонков). Планируйте хранилище с учётом retention.
Калькулятор ресурсов
Оцените общий футпринт application-слоя под пиковую нагрузку:
Total is the sum across all application services at 50 concurrent sessions. Resources for LLM / STT / TTS providers are billed separately and not included here.
Замечания
- Числа только для application-слоя. CPU/RAM/диск под LLM, STT и TTS провайдеров (или self-hosted модели) оплачиваются отдельно у вендоров и здесь не учтены. Про расчёт стоимости моделей — в отдельной странице позже.
- Добавьте запас 20–30% сверху на headroom, пики и оверхед ОС.
- Для HA-прода удвойте backbone (реплика Postgres, Kafka с replication factor ≥ 2 и т.п.).
Минимальный сайзинг машины
| Нагрузка | Рекомендуемая VM |
|---|---|
| Демо / dev (1 сессия) | 4 vCPU · 8 GB RAM · 50 GB SSD |
| Small (10 сессий) | 6 vCPU · 16 GB RAM · 100 GB SSD |
| Medium (50 сессий) | 12 vCPU · 32 GB RAM · 200 GB SSD |
| Large (250 сессий) | 32 vCPU · 96 GB RAM · 500 GB SSD (multi-node) |
| XL (500 сессий) | 64 vCPU · 192 GB RAM · 1 TB SSD (multi-node) |
Для всего выше 50 одновременных сессий рекомендуем вынести
livekit-server + python-worker на отдельные хосты, чтобы медиа и агентская
нагрузка не мешали backbone.