# Instance configuration CustoCRM (ADR-HUB-0028 / SPEC-HUB-0019 §7.2). # Поставляется в release bundle. Копируется в instance/.env и редактируется # под конкретный экземпляр. Image references НЕ здесь — они в release.env (CI). # Здесь нет initial OWNER password и нет demo-флага (см. SPEC §7.2 запреты). COMPOSE_PROJECT_NAME=custocrm # --- Instance identity / gateway --- CUSTOCRM_APP_DOMAIN=app.example.com CUSTOCRM_PLATFORM_DOMAIN=platform.example.com CUSTOCRM_ACME_EMAIL=admin@example.com CUSTOCRM_ADMIN_PORT=18001 # IP web-gateway. Оставьте 0.0.0.0 без profile calls. Для calls укажите # отдельный публичный IP, отличный от CUS_TURN_LISTENING_IP. CUSTOCRM_WEB_LISTENING_IP=0.0.0.0 # Опциональные profiles: calls (coturn), и в будущем voice. # COMPOSE_PROFILES=calls # --- Django core --- CUS_ENV=production CUS_DEBUG=false CUS_SECRET_KEY=change-me-long-random-secret # Шифрование секретов в БД (Fernet-ключ): Fernet.generate_key(). CUS_FIELD_ENCRYPTION_KEY= CUSTOCRM_APP_ALLOWED_HOSTS=app.example.com CUSTOCRM_APP_CSRF_TRUSTED_ORIGINS=https://app.example.com CUSTOCRM_PLATFORM_ALLOWED_HOSTS=platform.example.com CUSTOCRM_PLATFORM_CSRF_TRUSTED_ORIGINS=https://platform.example.com CUS_CORS_ALLOWED_ORIGINS=https://app.example.com INTERNAL_UI_BASE_URL=https://app.example.com # Host headers для Docker healthchecks должны входить в surface ALLOWED_HOSTS. CUSTOCRM_APP_HEALTHCHECK_HOST=app.example.com CUSTOCRM_PLATFORM_HEALTHCHECK_HOST=platform.example.com # Транспортная безопасность (вне CUS_DEBUG включается автоматически). CUS_COOKIE_SECURE=true CUS_SSL_REDIRECT=true CUS_HSTS_SECONDS=31536000 CUS_COOKIE_SAMESITE=Lax # --- PostgreSQL / Redis --- # C04 RLS: три раздельные DB-roles (app/platform/migration). Runtime-роли app и # platform — NOBYPASSRLS, не владельцы tenant-tables; миграции выполняются под # migration-role (через CUS_DB_ROLE=migration в compose). Пароли СГЕНЕРИРОВАТЬ, # не использовать значения по умолчанию. См. deploy/postgres/init-runtime-roles.sh. POSTGRES_DB=custocrm POSTGRES_USER=custocrm POSTGRES_PASSWORD=change-me-db-password POSTGRES_APP_USER=custocrm_app POSTGRES_APP_PASSWORD=change-me-app-db-password POSTGRES_PLATFORM_USER=custocrm_platform POSTGRES_PLATFORM_PASSWORD=change-me-platform-db-password POSTGRES_MIGRATION_USER=custocrm_migration POSTGRES_MIGRATION_PASSWORD=change-me-migration-db-password POSTGRES_HOST=postgres POSTGRES_PORT=5432 # psycopg connection pool per процесс (backend работает под ASGI, где # CONN_MAX_AGE-соединения осиротевают в thread-pool). Значения по умолчанию # заданы в settings_database.py; переопределять обычно не нужно. # CUS_DB_POOL_MAX=0 отключает пул целиком. #CUS_DB_POOL_MIN=1 #CUS_DB_POOL_MAX=4 #CUS_DB_POOL_TIMEOUT=10 REDIS_URL=redis://redis:6379/0 # --- Tenant-owned object storage (C04) --- # Production ТРЕБУЕТ S3-compatible backend (settings hard-fails без него вне # debug/testing). Ключи хранятся как organizations/{organization_public_id}/... # CUS_S3_BUCKET обязателен; endpoint/region/credentials — для провайдера # (Yandex Object Storage, MinIO, AWS S3 и т.п.). CUS_STORAGE_BACKEND=s3 CUS_S3_BUCKET= CUS_S3_ENDPOINT_URL= CUS_S3_REGION= CUS_S3_ACCESS_KEY= CUS_S3_SECRET_KEY= CUS_S3_ADDRESSING_STYLE=path CUS_S3_URL_EXPIRY_SECONDS=900 # --- P2P calls (profile calls) --- # Включается только при COMPOSE_PROFILES=calls. Параметры coturn обязательны, # если profile активен. CUS_CALL_INVITE_TTL_SECONDS=300 CUS_CALL_ACCESS_TTL_SECONDS=3600 CUS_CALL_CONNECT_GRACE_SECONDS=120 CUS_CALL_RECONNECT_GRACE_SECONDS=60 CUS_CALL_STUN_URLS= # Публичные TURN endpoints (через запятую). Пусто -> только STUN/direct. CUS_CALL_TURN_URLS= # Общий static-auth-secret между backend и coturn. CUS_CALL_TURN_SECRET= CUS_CALL_TURN_TTL_SECONDS=3600 CUS_CALL_TURN_REALM=app.example.com # Публичный IP coturn listener/relay. ОТДЕЛЬНЫЙ от web IP, чтобы TURN занял 443. CUS_TURN_EXTERNAL_IP= CUS_TURN_LISTENING_IP= CUS_TURN_LISTENING_PORT=3478 CUS_TURN_TLS_PORT=443 CUS_TURN_MIN_PORT=49160 CUS_TURN_MAX_PORT=49200 # --- AI provider --- CUS_OPENROUTER_BASE_URL=https://openrouter.ai/api/v1 CUS_CUSTOAI_API_KEY= CUS_CUSTOAI_BASE_URL=https://ai.api.cloud.yandex.net/v1 CUS_CUSTOAI_MODEL=gpt://b1g89tr9t8iedhnl8pgg/yandexgpt-5.1/latest CUS_AI_REQUEST_TIMEOUT=30 CUS_AI_MAX_RETRIES=2 CUS_AI_GLOBAL_DAILY_COST_LIMIT_MICROS=0 # --- Email --- EMAIL_BACKEND=django.core.mail.backends.smtp.EmailBackend EMAIL_HOST= EMAIL_PORT=587 EMAIL_HOST_USER= EMAIL_HOST_PASSWORD= EMAIL_USE_TLS=true DEFAULT_FROM_EMAIL=CustoCRM # --- Gunicorn --- CUS_GUNICORN_WORKERS=3 CUS_GUNICORN_TIMEOUT=60