-
Notifications
You must be signed in to change notification settings - Fork 5
Deployment Profiles
Управление режимом работы системы через переменную окружения DEPLOYMENT_MODE. Позволяет запускать один и тот же код на GPU-сервере (полный набор) и в облаке (только облачные LLM, без тяжёлых GPU-зависимостей).
Без профилей развёртывания система всегда загружает все сервисы — XTTS, Piper, OpenVoice, STT, GSM, GPU-мониторинг. На облачном сервере без GPU это:
- Лишние ошибки в логах при попытке инициализации
- Бессмысленные вкладки в админке (TTS, Models, Monitoring)
- Ненужные роутеры и эндпоинты в API
Deployment Profiles решают это на уровне инфраструктуры, ортогонально ролям пользователей (которые контролируют права доступа).
| Режим | Переменная | Что загружается |
|---|---|---|
| Full (по умолчанию) | DEPLOYMENT_MODE=full |
Все сервисы: GPU, TTS, STT, GSM, облачные LLM |
| Cloud | DEPLOYMENT_MODE=cloud |
Только облачные LLM, боты, виджеты, FAQ, Wiki RAG |
| Local | DEPLOYMENT_MODE=local |
То же что Full (явный opt-in для ясности конфигурации) |
Добавьте в .env:
DEPLOYMENT_MODE=cloud # Для облачного сервера без GPUЗатем пересоберите:
docker compose build && docker compose up -dДобавьте в .env или экспортируйте перед запуском:
export DEPLOYMENT_MODE=cloud
./start_cpu.sh# Health endpoint покажет текущий режим
curl -s http://localhost:8002/health | python3 -m json.tool
# Или напрямую
curl -s http://localhost:8002/admin/deployment-mode
# → {"mode": "cloud"}Роутеры, которые НЕ регистрируются:
-
services.router— управление vLLM (start/stop/restart) -
monitor.router— GPU-метрики, логи -
gsm.router— GSM-телефония (SIM7600E-H) -
stt.router— распознавание речи (Vosk/Whisper) -
tts.router— пресеты голосов (XTTS/Piper)
Сервисы, которые НЕ инициализируются:
- Piper TTS
- OpenVoice v2
- XTTS v2 (Анна и Марина)
- STT (Vosk/Whisper)
- GSM Service
Что работает в Cloud-режиме:
- Облачные LLM (Gemini, OpenAI, Claude, DeepSeek, Kimi, OpenRouter)
- Чат (с облачными LLM)
- Telegram боты
- WhatsApp боты
- Веб-виджеты
- FAQ система
- Wiki RAG (база знаний)
- amoCRM интеграция
- Аудит и использование
- Воронка продаж и платежи
- Бэкапы и настройки
Health endpoint — в Cloud-режиме статус healthy не требует TTS (только LLM).
Скрытые вкладки в Cloud-режиме:
| Вкладка | Причина |
|---|---|
| Dashboard | GPU-спарклайны бессмысленны без GPU |
| Services | vLLM start/stop недоступен |
| TTS | Пресеты XTTS/Piper не нужны |
| Monitoring | GPU/CPU-метрики нерелевантны |
| Models | HuggingFace модели не загружаются |
| Finetune | LoRA обучение требует GPU |
| GSM | Аппаратный модем отсутствует |
При попытке прямого перехода по URL на скрытую вкладку — редирект на /chat.
Это два ортогональных механизма:
| Аспект | Deployment Mode | Роли (admin/user/web/guest) |
|---|---|---|
| Контролирует | Что существует | Кто может делать |
| Уровень | Инфраструктура | Авторизация |
| Где настраивается |
.env файл |
БД пользователей |
| Влияет на | Роутеры, сервисы, вкладки | Права доступа, видимость |
Примеры:
-
DEPLOYMENT_MODE=cloud+ рольadmin— полный доступ к облачным функциям, но вкладок GPU нет -
DEPLOYMENT_MODE=full+ рольweb— GPU-сервисы загружены, ноweb-пользователь их не видит -
DEPLOYMENT_MODE=cloud+ рольguest— только демо-чат и FAQ
Возвращает текущий режим развёртывания.
Ответ:
{
"mode": "cloud"
}Не требует авторизации. Используется фронтендом для определения видимости вкладок.
Включает deployment_mode в ответ:
{
"status": "healthy",
"deployment_mode": "cloud",
"services": {
"voice_clone_xtts_anna": false,
"voice_clone_xtts_marina": false,
"piper_tts": false,
"stt": false,
"llm": true,
"llm_backend": "cloud (gemini: gemini-2.5-flash)"
}
}Включает deployment_mode в ответ пользователя:
{
"id": 1,
"username": "admin",
"role": "admin",
"deployment_mode": "cloud"
}DEPLOYMENT_MODE=cloud
LLM_BACKEND=cloud:1 # Gemini/OpenAIМинимальные ресурсы, только облачные LLM и боты.
DEPLOYMENT_MODE=full # или просто не задавать
LLM_BACKEND=vllmПолный набор: vLLM + XTTS + STT + GSM.
DEPLOYMENT_MODE=cloud
VITE_DEMO_MODE=trueОблачный LLM для демонстрации. Гости видят только чат и FAQ.