73 lines
3.6 KiB
YAML
73 lines
3.6 KiB
YAML
# Модуль «Дзвінки» для CRM: https://crm-calls.volcanic.tes.gd (отдельное приложение Coolify).
|
||
# Jitsi — docker-compose.yml (другое приложение, https://meet.volcanic.tes.gd).
|
||
# Секреты JWT_APP_SECRET (тот же, что у Jitsi), GUEST_LINK_SECRET, JIBRI_RECORDER_PASSWORD (тот же, что у Jitsi),
|
||
# OPENAI_API_KEY, CRM_USER_PASSWORD — только в env Coolify.
|
||
# Запись: модуль следит за комнатами через prosody и управляет Jibri по сети crm-calls-bridge (создаёт приложение Jitsi),
|
||
# файлы записей — в общем каталоге хоста RECORDINGS_HOST_DIR.
|
||
services:
|
||
calls:
|
||
build:
|
||
context: ./calls
|
||
dockerfile: Dockerfile
|
||
expose:
|
||
- "8080"
|
||
environment:
|
||
ASPNETCORE_ENVIRONMENT: Production
|
||
ASPNETCORE_URLS: "http://+:8080"
|
||
Storage__DataDir: /data
|
||
Calls__PublicUrl: '${CALLS_PUBLIC_URL:-https://crm-calls.volcanic.tes.gd}'
|
||
Calls__LinkSecret: '${GUEST_LINK_SECRET}'
|
||
Calls__SessionHours: '${CALLS_SESSION_HOURS:-12}'
|
||
# origin CRM через пробел или запятую: из них принимается crm:auth, они же в frame-ancestors
|
||
Crm__Origins: '${CRM_ORIGINS:-https://shotam.tvorymo.com,https://units.tvorymo.com}'
|
||
Crm__AssetsOrigin: '${CRM_ASSETS_ORIGIN:-https://shotam.tvorymo.com}'
|
||
Supabase__Url: '${SUPABASE_URL:-https://yjxbkcqsquwbsyoonfkn.supabase.co}'
|
||
Supabase__PublishableKey: '${SUPABASE_PUBLISHABLE_KEY}'
|
||
Jitsi__Domain: '${JITSI_DOMAIN:-meet.volcanic.tes.gd}'
|
||
Jitsi__AppId: '${JWT_APP_ID:-tvorymo-crm}'
|
||
Jitsi__Audience: '${JWT_AUDIENCE:-jitsi}'
|
||
Jitsi__AppSecret: '${JWT_APP_SECRET}'
|
||
Jitsi__TokenTtlMinutes: '${JITSI_TOKEN_TTL_MINUTES:-15}'
|
||
# --- запись и транскрипция
|
||
RECORDING_ENABLED: '${RECORDING_ENABLED:-true}'
|
||
MAX_CONCURRENT_CALLS: '${MAX_CONCURRENT_CALLS:-1}'
|
||
MIN_CALL_SECONDS: '${MIN_CALL_SECONDS:-60}'
|
||
RECORD_MIN_PARTICIPANTS: '${RECORD_MIN_PARTICIPANTS:-2}'
|
||
PROSODY_URL: 'http://jitsi-prosody:5280'
|
||
JIBRI_URL: 'http://jitsi-jibri:2222'
|
||
JIBRI_RECORDER_PASSWORD: '${JIBRI_RECORDER_PASSWORD}'
|
||
RECORDINGS_DIR: /recordings
|
||
OPENAI_API_KEY: '${OPENAI_API_KEY:-}'
|
||
OPENAI_TRANSCRIBE_MODEL: '${OPENAI_TRANSCRIBE_MODEL:-whisper-1}'
|
||
CRM_USER_EMAIL: '${CRM_USER_EMAIL:-}'
|
||
CRM_USER_PASSWORD: '${CRM_USER_PASSWORD:-}'
|
||
RECORDINGS_BUCKET: '${RECORDINGS_BUCKET:-files}'
|
||
RECORDINGS_PREFIX: '${RECORDINGS_PREFIX:-calls/}'
|
||
WIKI_URL: '${WIKI_URL:-https://wiki-crm.tes.gd}'
|
||
WIKI_CALLS_FOLDER: '${WIKI_CALLS_FOLDER:-Дзвінки}'
|
||
# Служебные /api/admin/* (тестовые комнаты test-*, состояние обработки). Пусто — выключены.
|
||
ADMIN_TOKEN: '${ADMIN_TOKEN:-}'
|
||
volumes:
|
||
- calls-data:/data
|
||
- '${RECORDINGS_HOST_DIR:-/data/crm-calls/recordings}:/recordings'
|
||
networks:
|
||
- calls-bridge
|
||
labels:
|
||
# Две сети (своя Coolify + crm-calls-bridge): Traefik должен ходить через сеть приложения,
|
||
# иначе берёт адрес из crm-calls-bridge, где его нет, и отвечает 504.
|
||
- traefik.docker.network=g2mi10g1rcuukibu6yy3tf5u
|
||
healthcheck:
|
||
test: ["CMD", "curl", "-fsS", "http://127.0.0.1:8080/health"]
|
||
interval: 30s
|
||
timeout: 5s
|
||
retries: 3
|
||
start_period: 20s
|
||
|
||
networks:
|
||
calls-bridge:
|
||
external: true
|
||
name: crm-calls-bridge
|
||
|
||
volumes:
|
||
calls-data:
|