HOST=127.0.0.1 PORT=8000 SECRET_KEY=change-me # Code default is false (production-safe: no SQL echo, no debug error pages). # Local dev: set true for verbose SQL logging and debug error pages. DEBUG=true # [CRITICAL] 32-character minimum string for encrypting API keys at rest. # To rotate keys, provide a comma-separated list. The first key is used for encryption, # all keys are used for decryption. API_KEY_ENCRYPTION_KEY=your-secure-32-char-key-here BOOTH_ACCESS_TOKEN= # JWT settings — leave JWT_SECRET empty to fall back to SECRET_KEY JWT_SECRET= JWT_EXPIRY_SECONDS=86400 # ── Jitsi Meet ──────────────────────────────────────────────────────────────── # Self-hosted Jitsi runs in Docker alongside the portal. # Local dev: use http://localhost:8080 (Jitsi HTTP port) # Production (voxbento.com): Caddy proxies jitsi.voxbento.com → JITSI_DOMAIN=jitsi.voxbento.com # Leave empty for local dev — defaults to http://{JITSI_DOMAIN} # For HTTPS production: JITSI_BASE_URL=https://jitsi.your-domain.com JITSI_BASE_URL=https://jitsi.voxbento.com DEFAULT_JITSI_ROOM=eventyay-stage-room JITSI_DOMAIN=localhost:8080 # Jitsi internal auth (change in production — use long random passwords) JVB_AUTH_PASSWORD=changeme JICOFO_AUTH_PASSWORD=changeme # DOCKER_HOST_ADDRESS — required for Jitsi JVB and MediaMTX WebRTC ICE. # Set to your server's public IP so WebRTC ICE candidates are reachable. # macOS: ipconfig getifaddr en0 # Linux: hostname -I | awk '{print $1}' DOCKER_HOST_ADDRESS= # ── MediaMTX — WebRTC/WHIP ingest + WHEP playback ───────────────────────────── # These are the URLs the BROWSER uses (must be reachable from outside Docker). # # Local dev: # MEDIAMTX_WHIP_BASE=http://localhost:8889 # # Production (voxbento.com) — Caddy proxies: # */{path}/whip → localhost:8889 (WHIP ingest) # */{path}/whep → localhost:8889 (WHEP playback) # # MEDIAMTX_WHIP_BASE=https://voxbento.com # MEDIAMTX_WHIP_BASE=http://localhost:8889 # Optional: internal URL for Python health checks (leave empty for native dev). # docker-compose.yml sets this to http://mediamtx:8888 automatically. # MEDIAMTX_INTERNAL_BASE= # Floor Bot & Internal Routing — captures Jitsi conference audio for floor transcription # The base URL the backend uses to send start/stop commands to the floor-bot container. FLOOR_BOT_BASE=http://floor-bot:8080 # The internal RTSP base URL used by the ffmpeg transcription worker to pull audio from MediaMTX. MEDIAMTX_RTSP_BASE=rtsp://mediamtx:8554 # (Optional) Internal Jitsi URL used by the backend to bypass WebRTC HTTP origin blocks. # If Jitsi is deployed externally (not in docker-compose), set this to its public URL. # Defaults to effective JITSI_BASE_URL if not set. # JITSI_INTERNAL_BASE=https://jitsi-web # Admin panel — password for /admin/login. Empty = admin login disabled. ADMIN_PASSWORD= # Database — SQLite for development, PostgreSQL for production. # The default stores a SQLite file in the project root. # For PostgreSQL: DATABASE_URL=postgresql+asyncpg://user:pass@localhost:5432/interpretation DATABASE_URL=sqlite+aiosqlite:///./interpretation.db # Supertonic TTS (self-hosted, in-process ONNX) — optional sidecar URL for the # Voice Builder import API. Leave empty to use the in-process engine (no sidecar). # SUPERTONIC_BASE_URL= # ── NVIDIA Riva (optional transcription provider) ──────────────────────────── # Required only when using the 'nvidia' transcription provider. # NVIDIA_FUNCTION_ID=