mirror of
https://github.com/Monadical-SAS/reflector.git
synced 2026-03-22 07:06:47 +00:00
* feat: enable daily co in selfhosted + only schedule tasks when necessary * feat: refactor aws storage to be platform agnostic + add local pad tracking with slfhosted support
163 lines
5.7 KiB
Plaintext
163 lines
5.7 KiB
Plaintext
#
|
|
# This file serve as an example of possible configuration
|
|
# All the settings are described here: reflector/settings.py
|
|
#
|
|
|
|
## =======================================================
|
|
## Core Configuration (Required for Production)
|
|
## =======================================================
|
|
|
|
## Database (for docker-compose.prod.yml, use postgres hostname)
|
|
#DATABASE_URL=postgresql+asyncpg://reflector:reflector@postgres:5432/reflector
|
|
|
|
## Redis (for docker-compose.prod.yml, use redis hostname)
|
|
#REDIS_HOST=redis
|
|
#REDIS_PORT=6379
|
|
#CELERY_BROKER_URL=redis://redis:6379/1
|
|
#CELERY_RESULT_BACKEND=redis://redis:6379/1
|
|
|
|
## Base URL - your API domain with https
|
|
#BASE_URL=https://api.example.com
|
|
|
|
## CORS - required when frontend and API are on different domains
|
|
#CORS_ORIGIN=https://app.example.com
|
|
#CORS_ALLOW_CREDENTIALS=true
|
|
|
|
## Secret key - generate with: openssl rand -hex 32
|
|
#SECRET_KEY=changeme-generate-a-secure-random-string
|
|
|
|
## =======================================================
|
|
## User authentication
|
|
## =======================================================
|
|
|
|
## Using jwt/authentik
|
|
AUTH_BACKEND=jwt
|
|
AUTH_JWT_AUDIENCE=
|
|
|
|
## =======================================================
|
|
## Transcription backend
|
|
##
|
|
## Check reflector/processors/audio_transcript_* for the
|
|
## full list of available transcription backend
|
|
## =======================================================
|
|
|
|
## Using local whisper
|
|
#TRANSCRIPT_BACKEND=whisper
|
|
|
|
## Using serverless modal.com (require reflector-gpu-modal deployed)
|
|
#TRANSCRIPT_BACKEND=modal
|
|
#TRANSCRIPT_URL=https://xxxxx--reflector-transcriber-web.modal.run
|
|
#TRANSCRIPT_MODAL_API_KEY=xxxxx
|
|
|
|
TRANSCRIPT_BACKEND=modal
|
|
TRANSCRIPT_URL=https://monadical-sas--reflector-transcriber-parakeet-web.modal.run
|
|
TRANSCRIPT_MODAL_API_KEY=
|
|
|
|
## =======================================================
|
|
## Translation backend
|
|
##
|
|
## Only available in modal atm
|
|
## =======================================================
|
|
TRANSLATION_BACKEND=modal
|
|
TRANSLATE_URL=https://monadical-sas--reflector-translator-web.modal.run
|
|
#TRANSLATION_MODAL_API_KEY=xxxxx
|
|
|
|
## =======================================================
|
|
## LLM backend (Required)
|
|
##
|
|
## Responsible for generating titles, summaries, and topic detection
|
|
## Supports any OpenAI-compatible endpoint.
|
|
## =======================================================
|
|
|
|
## --- Option A: Local LLM via Ollama (recommended for dev) ---
|
|
## Setup: ./scripts/setup-standalone.sh
|
|
## Mac: Ollama runs natively (Metal GPU). Containers reach it via host.docker.internal.
|
|
## Linux: docker compose --profile ollama-gpu up -d (or ollama-cpu for no GPU)
|
|
LLM_URL=http://host.docker.internal:11435/v1
|
|
LLM_MODEL=qwen2.5:14b
|
|
LLM_API_KEY=not-needed
|
|
## Linux with containerized Ollama: LLM_URL=http://ollama:11435/v1
|
|
|
|
## --- Option B: Remote/cloud LLM ---
|
|
#LLM_API_KEY=sk-your-openai-api-key
|
|
#LLM_MODEL=gpt-4o-mini
|
|
## LLM_URL defaults to OpenAI when unset
|
|
|
|
## Context size for summary generation (tokens)
|
|
LLM_CONTEXT_WINDOW=16000
|
|
|
|
## =======================================================
|
|
## Audio Padding
|
|
##
|
|
## backends: local (in-process PyAV), modal (HTTP API client)
|
|
## Default is "local" — no external service needed.
|
|
## Set to "modal" when using Modal.com or self-hosted gpu/self_hosted/ container.
|
|
## =======================================================
|
|
#PADDING_BACKEND=local
|
|
#PADDING_BACKEND=modal
|
|
#PADDING_URL=https://xxxxx--reflector-padding-web.modal.run
|
|
#PADDING_MODAL_API_KEY=xxxxx
|
|
|
|
## =======================================================
|
|
## Diarization
|
|
##
|
|
## Only available on modal
|
|
## To allow diarization, you need to expose expose the files to be dowloded by the pipeline
|
|
## =======================================================
|
|
DIARIZATION_ENABLED=false
|
|
DIARIZATION_BACKEND=modal
|
|
DIARIZATION_URL=https://monadical-sas--reflector-diarizer-web.modal.run
|
|
#DIARIZATION_MODAL_API_KEY=xxxxx
|
|
|
|
|
|
## =======================================================
|
|
## Transcript Storage
|
|
##
|
|
## Where to store audio files and transcripts
|
|
## AWS S3 is required for production
|
|
## =======================================================
|
|
TRANSCRIPT_STORAGE_BACKEND=aws
|
|
TRANSCRIPT_STORAGE_AWS_ACCESS_KEY_ID=your-aws-access-key
|
|
TRANSCRIPT_STORAGE_AWS_SECRET_ACCESS_KEY=your-aws-secret-key
|
|
TRANSCRIPT_STORAGE_AWS_BUCKET_NAME=reflector-media
|
|
TRANSCRIPT_STORAGE_AWS_REGION=us-east-1
|
|
|
|
|
|
## =======================================================
|
|
## Sentry
|
|
## =======================================================
|
|
|
|
## Sentry DSN configuration
|
|
#SENTRY_DSN=
|
|
|
|
## =======================================================
|
|
## Video Platform Configuration
|
|
## =======================================================
|
|
|
|
## Whereby
|
|
#WHEREBY_API_KEY=your-whereby-api-key
|
|
#WHEREBY_WEBHOOK_SECRET=your-whereby-webhook-secret
|
|
#WHEREBY_STORAGE_AWS_ACCESS_KEY_ID=your-aws-key
|
|
#WHEREBY_STORAGE_AWS_SECRET_ACCESS_KEY=your-aws-secret
|
|
#AWS_PROCESS_RECORDING_QUEUE_URL=https://sqs.us-west-2.amazonaws.com/...
|
|
|
|
## Daily.co
|
|
#DAILY_API_KEY=your-daily-api-key
|
|
#DAILY_WEBHOOK_SECRET=your-daily-webhook-secret
|
|
#DAILY_SUBDOMAIN=your-subdomain
|
|
#DAILY_WEBHOOK_UUID= # Auto-populated by recreate_daily_webhook.py script
|
|
#DAILYCO_STORAGE_AWS_ROLE_ARN=... # IAM role ARN for Daily.co S3 access
|
|
#DAILYCO_STORAGE_AWS_BUCKET_NAME=reflector-dailyco
|
|
#DAILYCO_STORAGE_AWS_REGION=us-west-2
|
|
# Worker credentials for reading/deleting from Daily's recording bucket
|
|
# Required when transcript storage is separate from Daily's bucket (e.g., selfhosted with Garage)
|
|
#DAILYCO_STORAGE_AWS_ACCESS_KEY_ID=your-aws-access-key
|
|
#DAILYCO_STORAGE_AWS_SECRET_ACCESS_KEY=your-aws-secret-key
|
|
|
|
## Whereby (optional separate bucket)
|
|
#WHEREBY_STORAGE_AWS_BUCKET_NAME=reflector-whereby
|
|
#WHEREBY_STORAGE_AWS_REGION=us-east-1
|
|
|
|
## Platform Configuration
|
|
#DEFAULT_VIDEO_PLATFORM=whereby # Default platform for new rooms
|