Ported from greenlight-tm: when TRANSCRIPTION_API_URL and
TRANSCRIPTION_API_KEY are set in the .env and the per-room
"AI summary / transcript" setting is enabled, Redlight POSTs to
${TRANSCRIPTION_API_URL}/prompt (header X-Api-Key) as soon as the
"video" format of a recording becomes available.
- transcription.js: service with env gating, timeout and logging
- bbb.js: pass meta_bbb-recording-ready-url on meeting create when the
room has the setting enabled
- recordings.js: unauthenticated /recording-ready callback that
verifies BBB's signed_parameters JWT (HS256, shared secret), caches
the recording and requests the transcription once per recording
(deduped via transcript_requested_at)
- rooms: new recording_transcript column, accepted on create/update
- branding endpoint exposes transcriptionEnabled so the UI only shows
the toggle when the server is configured
- RoomDetail: toggle under "Allow recording" (disabled when recording
is off), de/en i18n
- chore: bump version to 2.4.0
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
58 lines
2.0 KiB
Bash
58 lines
2.0 KiB
Bash
# BigBlueButton API Configuration
|
|
BBB_URL=https://your-bbb-server.com/bigbluebutton/api/
|
|
BBB_SECRET=your-bbb-shared-secret
|
|
|
|
# Server Configuration
|
|
PORT=3001
|
|
JWT_SECRET=your-super-secret-jwt-key-change-this
|
|
|
|
# Database Configuration
|
|
# Leave DATABASE_URL empty or unset to use SQLite (default: redlight.db)
|
|
# Set a PostgreSQL connection string to use PostgreSQL instead:
|
|
# DATABASE_URL=postgres://user:password@localhost:5432/redlight
|
|
DATABASE_URL=
|
|
|
|
POSTGRES_USER=redlight
|
|
POSTGRES_PASSWORD=redlight
|
|
POSTGRES_DB=redlight
|
|
|
|
# SQLite file path (only used when DATABASE_URL is not set)
|
|
# SQLITE_PATH=./redlight.db
|
|
|
|
# Dragonfly (Redis-compatible in-memory database) Configuration
|
|
REDIS_URL=redis://dragonfly:6379
|
|
|
|
# Default Admin Account (created on first run)
|
|
ADMIN_EMAIL=admin@example.com
|
|
ADMIN_PASSWORD=admin123
|
|
|
|
# SMTP Configuration (for email verification)
|
|
# If not set, registration works without email verification
|
|
SMTP_HOST=smtp.example.com
|
|
SMTP_PORT=587
|
|
SMTP_USER=noreply@example.com
|
|
SMTP_PASS=your-smtp-password
|
|
SMTP_FROM=noreply@example.com
|
|
|
|
# App URL (used for verification links, auto-detected if not set)
|
|
# APP_URL=https://your-domain.com
|
|
|
|
# Recording Transcription / AI Summarization
|
|
# When the per-room "AI summary / transcript" setting is enabled, Redlight will POST to
|
|
# ${TRANSCRIPTION_API_URL}/prompt with header `X-Api-Key: ${TRANSCRIPTION_API_KEY}` as soon as
|
|
# the "video" format of the recording is available. Leave empty to disable the integration entirely.
|
|
# TRANSCRIPTION_API_URL=
|
|
# TRANSCRIPTION_API_KEY=
|
|
|
|
# Reverse Proxy trust depth (express 'trust proxy' setting)
|
|
# loopback = trust only 127.0.0.1 / ::1 (default)
|
|
# Use a number for proxy hops (e.g. 1), or a specific IP/CIDR.
|
|
# TRUST_PROXY=loopback
|
|
|
|
# Federation (inter-instance meeting invitations)
|
|
# Set FEDERATION_DOMAIN to enable federation between Redlight instances
|
|
# FEDERATION_DOMAIN=redlight.example.com
|
|
# The Ed25519 key pair is auto-generated on first start and stored at ./keys/federation_key.pem
|
|
# Override the path with FEDERATION_KEY_PATH if needed
|
|
# FEDERATION_KEY_PATH=/app/keys/federation_key.pem
|