# Production environment example for docker-compose.production.yml # --- NiceGUI Server --- HOST=0.0.0.0 PORT=8000 LOG_LEVEL=info RELOAD=false ENVIRONMENT=production RUN_EMBEDDED_WORKER=false LOG_DIR=/app/data/logs LOG_FILE_NAME=transcription.log LOG_FILE_MAX_BYTES=10485760 LOG_FILE_BACKUP_COUNT=5 # --- AI provider --- PROVIDER=openrouter OPENROUTER_API_KEY=replace-with-real-key PROVIDER_MODEL=google/gemini-2.5-flash DEFAULT_PROMPT_NAME=transcribe_document.md # --- persistence --- DATABASE__DRIVER=postgres DATABASE__HOST=postgres DATABASE__PORT=5432 DATABASE__DATABASE=transcription DATABASE__USER=transcription DATABASE__PASSWORD=replace-with-strong-password BOOTSTRAP_SCHEMA_ON_STARTUP=false SQLITE_CHECK_SAME_THREAD=false # --- filesystem paths --- UPLOAD_DIR=/app/uploads PROMPT_DIR=/app/prompts DATABASE_BACKUP_DIR=/backup # --- backup workflow helpers (not Runtime Settings model fields) --- BACKUP_DIR=/backup # APP_DATA_BACKUP_DIR=/backup/data # UPLOADS_BACKUP_DIR=/backup/uploads BACKUP_RETENTION_DAYS=14 # Optional mounted Synology destination path for replicated dumps # SYNOLOGY_BACKUP_DIR=/mnt/synology/transcription-backups # --- worker reliability --- WORKER_MAX_RETRIES=0 WORKER_PROVIDER_TIMEOUT_SECONDS=30.0 WORKER_STALE_JOB_SECONDS=30.0 WORKER_RETRY_BACKOFF_SECONDS=1.0 WORKER_SHUTDOWN_GRACE_SECONDS=5.0 WORKER_POLL_INTERVAL_SECONDS=1.0 WORKER_MIN_TRANSCRIPTION_CHARS=0 WORKER_MIN_TRANSCRIPTION_LINES=0 WORKER_FAIL_ON_FINISH_REASON_LENGTH=false # --- postgres container --- POSTGRES_DB=transcription POSTGRES_USER=transcription POSTGRES_PASSWORD=replace-with-strong-password # --- cloudflare tunnel --- # Required for token-based tunnel startup. CLOUDFLARE_TUNNEL_TOKEN=replace-with-cloudflare-tunnel-token # --- deployment wiring helpers --- # Runtime Settings writes target this file path inside the app container. RUNTIME_SETTINGS_ENV_FILE=/app/.env.production