Skip to content

Environment Variables

Complete reference for all environment variables accepted by LaSuite Meet's components.

Django Backend

Core

Variable Required Default Description
DJANGO_SETTINGS_MODULE Yes -- Must be meet.settings. App will not start without it.
DJANGO_CONFIGURATION Yes -- Production, Demo, or Development
DJANGO_SECRET_KEY Yes -- 50+ character random string for cryptographic signing
DJANGO_ALLOWED_HOSTS Yes -- Comma-separated list of allowed hostnames
DJANGO_CSRF_TRUSTED_ORIGINS Yes -- Comma-separated list of trusted HTTPS origins
PYTHONPATH No -- Set to /app in production
MEET_BASE_URL No -- Full public URL (e.g., https://meet.example.com)
ALLOW_UNREGISTERED_ROOMS No True Allow unauthenticated room creation
RESOURCE_DEFAULT_ACCESS_LEVEL No public Default access level for newly created rooms. Values: public (anyone with the link can join), trusted (authenticated users join directly; others request entry), restricted (everyone must request entry).
SESSION_COOKIE_AGE No 43200 Session cookie lifetime in seconds (default: 12 hours)
REQUEST_ENTRY_THROTTLE_RATES No 150/minute Rate limit for room entry requests
CREATION_CALLBACK_THROTTLE_RATES No 600/minute Rate limit for creation callback requests
ROOM_CREATION_CALLBACK_CACHE_TIMEOUT No 600 Seconds to cache room creation callbacks (default: 10 minutes)
DJANGO_LANGUAGE_CODE No en-us Default language code for the Django backend

Database

Variable Required Default Description
DB_HOST Yes -- PostgreSQL hostname
DB_PORT No 5432 PostgreSQL port
DB_NAME Yes -- Database name
DB_USER Yes -- Database user
DB_PASSWORD Yes -- Database password

Redis

Variable Required Default Description
REDIS_URL Yes -- Full Redis URL (e.g., redis://redis:6379/0)
SESSION_ENGINE No cache backend Django session storage backend

OIDC / Authentication

Variable Required Default Description
OIDC_RP_CLIENT_ID Yes meet OIDC client ID
OIDC_RP_CLIENT_SECRET Yes -- OIDC client secret
OIDC_RP_SIGN_ALGO No RS256 Token signing algorithm
OIDC_RP_SCOPES No openid email Requested OIDC scopes
OIDC_OP_JWKS_ENDPOINT Yes -- OIDC JWKS URL
OIDC_OP_AUTHORIZATION_ENDPOINT Yes -- OIDC authorization URL
OIDC_OP_TOKEN_ENDPOINT Yes -- OIDC token exchange URL
OIDC_OP_USER_ENDPOINT Yes -- OIDC userinfo URL
OIDC_OP_USER_ENDPOINT_FORMAT No AUTO Format of the userinfo response: AUTO (detect), JWT, or JSON
OIDC_OP_LOGOUT_ENDPOINT No -- OIDC logout URL
OIDC_CREATE_USER No True Automatically create a local user if none exists on first login
OIDC_FALLBACK_TO_EMAIL_FOR_IDENTIFICATION No False Fall back to matching users by email if sub claim doesn't match. Enable only if emails are unique across your provider.
OIDC_REDIRECT_ALLOWED_HOSTS No [] Allowed hosts for OIDC redirects
OIDC_REDIRECT_REQUIRE_HTTPS No False Require HTTPS for OIDC redirect URIs. Recommended in production.
OIDC_AUTH_REQUEST_EXTRA_PARAMS No {} Extra parameters included in OIDC authentication requests (e.g. {"acr_values": "eidas1"})
ALLOW_LOGOUT_GET_METHOD No True Allow logout via HTTP GET. POST is more secure; disable if your provider supports POST logout.
LOGIN_REDIRECT_URL No -- Redirect after successful login
LOGIN_REDIRECT_URL_FAILURE No -- Redirect after failed login
LOGOUT_REDIRECT_URL No -- Redirect after logout
OIDC_USERINFO_FULLNAME_FIELDS No ["given_name", "usual_name"] OIDC claims used to build the user's full name
OIDC_USERINFO_SHORTNAME_FIELD No given_name OIDC claim used for the user's short/display name
OIDC_USERINFO_ESSENTIAL_CLAIMS No [] Claims that must be present in the userinfo response
OIDC_VERIFY_SSL No True Verify SSL certificates when contacting the OIDC provider
OIDC_USE_NONCE No True Use nonce to prevent replay attacks
OIDC_STORE_ID_TOKEN No True Store the ID token returned by the OIDC provider
OIDC_REDIRECT_FIELD_NAME No returnTo Query parameter name used for redirect after login

PKCE (recommended for production):

Variable Required Default Description
OIDC_USE_PKCE No False Enable PKCE (Proof Key for Code Exchange) for enhanced security. Recommended.
OIDC_PKCE_CODE_CHALLENGE_METHOD No S256 PKCE challenge method -- S256 is recommended
OIDC_PKCE_CODE_VERIFIER_SIZE No 64 Length of the random PKCE code verifier (43–128 characters)

LiveKit

Variable Required Default Description
LIVEKIT_API_KEY Yes -- LiveKit API key (must match server config)
LIVEKIT_API_SECRET Yes -- LiveKit API secret (must match server config)
LIVEKIT_API_URL Yes -- Public LiveKit URL -- returned to browser clients AND used for server API calls. Must be https://livekit.example.com (not the Docker-internal address).
LIVEKIT_FORCE_WSS_PROTOCOL No False Force WSS protocol in the WebSocket URL returned to clients. Enable for legacy browsers (Firefox <124, Chrome <125) where HTTPS URLs in WebSocket() may fail.
LIVEKIT_ENABLE_FIREFOX_PROXY_WORKAROUND No False Workaround for Firefox clients behind proxies that fail to establish WebSocket connections. Pre-establishes a dummy connection to prime the WebSocket.
LIVEKIT_VERIFY_SSL No True Verify SSL certificate for LiveKit API calls
LIVEKIT_WEBHOOK_EVENTS_FILTER_REGEX No -- Regex to filter LiveKit webhook events by room name. Only matching events are processed.

Recording

Variable Required Default Description
RECORDING_ENABLE No False Enable recording functionality. Must be True to show the record button in meetings.
RECORDING_OUTPUT_FOLDER No recordings Folder/prefix used in S3 storage for recording files. Change this to organize recordings under a custom path in your bucket.
RECORDING_WORKER_CLASSES No -- Maps recording mode to its worker class. Default: screen_recordingVideoCompositeEgressService, transcriptAudioCompositeEgressService. Only change if you implement custom egress workers.
RECORDING_EVENT_PARSER_CLASS No core.recording.event.parsers.MinioParser Class that parses storage events and updates recording state. Use core.recording.event.parsers.S3Parser for generic S3-compatible providers (added in v1.17.0); keep the default MinioParser for MinIO.
RECORDING_DOWNLOAD_BASE_URL For recording -- Base URL for recording download notification links. Must include the /recording path: https://meet.example.com/recording. Using the bare domain sends email links to a page that treats the UUID as a room code.
SCREEN_RECORDING_BASE_URL No -- ⚠️ Deprecated. Use RECORDING_DOWNLOAD_BASE_URL instead. Still accepted but logs a warning.
RECORDING_STORAGE_EVENT_ENABLE No False Enable MinIO/S3 bucket event notifications. Required for the backend to be notified when a recording file is uploaded.
RECORDING_ENABLE_STORAGE_EVENT_AUTH No True Require Bearer token for the storage webhook. Set to False for the simplest setup.
RECORDING_STORAGE_EVENT_TOKEN If auth enabled -- Bearer token MinIO sends with storage webhook requests.
RECORDING_EXPIRATION_DAYS No -- Days before recordings expire. null means no expiration.
RECORDING_MAX_DURATION No -- Maximum recording duration in milliseconds. null means no limit.
RECORDING_ENCODING_ENABLED No False Enable custom encoding for recordings. When False, LiveKit uses its built-in H264_720P_30 preset.
RECORDING_ENCODING_WIDTH No 1280 Recording width in pixels
RECORDING_ENCODING_HEIGHT No 720 Recording height in pixels
RECORDING_ENCODING_FRAMERATE No 30 Recording frame rate
RECORDING_ENCODING_VIDEO_BITRATE_KBPS No 3000 Video bitrate in kbps
RECORDING_ENCODING_AUDIO_BITRATE_KBPS No 128 Audio bitrate in kbps
RECORDING_ENCODING_KEY_FRAME_INTERVAL_S No 4.0 Key frame interval in seconds

Object Storage (S3 / MinIO)

Required for recording functionality.

Variable Required Default Description
AWS_S3_ENDPOINT_URL For recording -- S3-compatible endpoint URL (e.g., http://minio:9000 for local MinIO)
AWS_S3_ACCESS_KEY_ID For recording -- S3 access key
AWS_S3_SECRET_ACCESS_KEY For recording -- S3 secret key
AWS_STORAGE_BUCKET_NAME For recording -- S3 bucket for media files
AWS_S3_REGION_NAME No us-east-1 S3 region (required even for MinIO)
AWS_S3_SECURE_ACCESS No True Used in egress configuration (livekit-egress.yaml). Set to False for local MinIO over HTTP. Note: this is an egress-level setting, not a native Django backend setting.

Email

Variable Required Default Description
DJANGO_EMAIL_HOST No localhost SMTP server hostname
DJANGO_EMAIL_PORT No 25 SMTP port
DJANGO_EMAIL_HOST_USER No -- SMTP username
DJANGO_EMAIL_HOST_PASSWORD No -- SMTP password
DJANGO_EMAIL_USE_TLS No False Enable STARTTLS
DJANGO_EMAIL_USE_SSL No False Enable SSL (mutually exclusive with TLS)
DJANGO_EMAIL_FROM No -- From address for outgoing emails
DJANGO_EMAIL_BRAND_NAME No -- Brand name in email templates
DJANGO_EMAIL_LOGO_IMG No -- Logo URL for email templates
DJANGO_EMAIL_SUPPORT_EMAIL No -- Support contact address shown in email templates
DJANGO_EMAIL_DOMAIN No -- Domain shown in email templates
DJANGO_EMAIL_APP_BASE_URL No -- Base URL of the Meet frontend (used in email links)

Frontend feature flags

Variable Required Default Description
FRONTEND_CUSTOM_CSS_URL No -- URL (or path) to a custom CSS file loaded at runtime. Use this to override CSS variables for colors, fonts, and spacing without rebuilding the image. Example: https://your-domain.com/custom.css or /custom.css (relative to the Meet domain).
FRONTEND_SILENCE_LIVEKIT_DEBUG No False Suppress LiveKit debug logs
FRONTEND_IS_SILENT_LOGIN_ENABLED No True Enable silent OIDC token refresh. Requires your provider to support prompt=none.
FRONTEND_IDLE_DISCONNECT_WARNING_DELAY No -- Seconds before idle disconnect warning is shown. When unset, idle disconnect is disabled.
FRONTEND_EXTERNAL_HOME_URL No -- Custom URL for the home button
FRONTEND_USE_PROCONNECT_BUTTON No False Show ProConnect login button (French gov)
FRONTEND_USE_FRENCH_GOV_FOOTER No False Show French government footer
FILE_UPLOAD_ENABLED No False Enable custom background image uploads (max 10 per user, 2 MB, JPEG/PNG only). Set FILE_UPLOAD_RESTRICTIONS to override limits.

Custom assets (logo, images): You can replace built-in assets (logo, landing page images) at runtime by bind-mounting your files into the frontend container at /usr/share/nginx/html/assets. Files mounted there override the defaults without rebuilding the image. The app title (LaSuite Meet) can only be changed at build time via the VITE_APP_TITLE Docker build argument -- this requires building a custom frontend image.

Lobby / Waiting room

These control the behavior of the waiting room (lobby). All are optional - the defaults work for most deployments.

Variable Required Default Description
LOBBY_WAITING_TIMEOUT No 3 Seconds a participant's entry request stays in the waiting state before expiring
LOBBY_DENIED_TIMEOUT No 5 Seconds before a denied participant may re-request entry
LOBBY_ACCEPTED_TIMEOUT No 21600 Seconds (6 hours) that an accepted lobby token remains valid. Controls how long after admission a participant can actually join.
LOBBY_KEY_PREFIX No room_lobby Redis key prefix for lobby state
LOBBY_NOTIFICATION_TYPE No participantWaiting LiveKit data channel notification type sent to the room when someone is waiting
LOBBY_COOKIE_NAME No lobbyParticipantId Cookie name used to track anonymous lobby participants

CORS

Required when embedding Meet in iframes or calling the API from a different origin (e.g., external integrations or add-ins).

Variable Required Default Description
DJANGO_CORS_ALLOW_ALL_ORIGINS No False Allow all origins. Do not enable in production - use DJANGO_CORS_ALLOWED_ORIGINS instead.
DJANGO_CORS_ALLOWED_ORIGINS No [] List of origins allowed to make cross-origin requests. Example: ["https://app.example.com"]
DJANGO_CORS_ALLOWED_ORIGIN_REGEXES No [] List of regex patterns matching allowed origins

Celery

Variable Required Default Description
CELERY_ENABLED No False Enable Celery for async task processing. Currently used for async file deletion cleanup when FILE_UPLOAD_ENABLED=True. Recording email notifications are sent synchronously and do not require Celery.
CELERY_BROKER_URL No redis://redis:6379/0 Redis URL used as Celery message broker. Defaults to the same Redis instance as the session cache.

Summary Service Connection

These variables configure the backend's connection to the summary service (for transcription).

Variable Required Default Description
SUMMARY_SERVICE_ENDPOINT For transcription -- URL of the summary service API endpoint (e.g., http://summary:8000/api/v1/tasks/)
SUMMARY_SERVICE_API_TOKEN For transcription -- API token for authenticating with the summary service. Must match the api_key of the corresponding tenant in the summary service's AUTHORIZED_TENANTS.

Telephony

Variable Required Default Description
ROOM_TELEPHONY_ENABLED No False Enable SIP telephony integration. Shows the dial-in phone number in the meeting room info panel.
ROOM_TELEPHONY_PHONE_NUMBER No -- Dial-in phone number displayed in the meeting room info panel.
ROOM_TELEPHONY_DEFAULT_COUNTRY No US Default country code for phone number display formatting.
ROOM_TELEPHONY_PIN_LENGTH No 10 Length of the PIN code for telephony dial-in
ROOM_TELEPHONY_PIN_MAX_RETRIES No 5 Maximum number of PIN entry attempts

Security & Monitoring

Variable Required Default Description
SENTRY_DSN No -- Sentry DSN for error tracking
SENTRY_ENVIRONMENT No -- Sentry environment label

Summary Service

Authentication

The summary service supports two authentication modes. The multi-tenant approach (AUTHORIZED_TENANTS) is the current recommended method. The legacy single-tenant approach (APP_API_TOKEN / WEBHOOK_API_TOKEN / WEBHOOK_URL) is deprecated but still works, and logs a warning at startup.

Current approach (multi-tenant):

Variable Required Default Description
AUTHORIZED_TENANTS Yes -- JSON array of tenant configs. Each entry: {"id": "...", "api_key": "...", "webhook_url": "...", "webhook_api_key": "..."}. Defines all Meet backends that can submit tasks and receive results.

Example value:

AUTHORIZED_TENANTS='[{"id":"meet","api_key":"<strong-random-secret>","webhook_url":"https://meet.example.com/api/v1/tasks/callback/","webhook_api_key":"<strong-random-secret>"}]'

Legacy approach (deprecated):

Variable Required Default Description
APP_API_TOKEN Yes -- ⚠️ Deprecated. API token for requests from Meet backend. Use AUTHORIZED_TENANTS instead.
WEBHOOK_URL Yes -- ⚠️ Deprecated. Meet backend URL for result callbacks. Use AUTHORIZED_TENANTS instead.
WEBHOOK_API_TOKEN Yes -- ⚠️ Deprecated. Token for authenticating webhook calls to Meet backend. Use AUTHORIZED_TENANTS instead.

Storage

Variable Required Default Description
AWS_S3_ENDPOINT_URL Yes -- S3-compatible endpoint URL
AWS_S3_ACCESS_KEY_ID Yes -- S3 access key
AWS_S3_SECRET_ACCESS_KEY Yes -- S3 secret key
AWS_STORAGE_BUCKET_NAME Yes -- S3 bucket name
AWS_S3_SECURE_ACCESS No True Use HTTPS for S3 requests. Set to False for local MinIO over HTTP.

Celery

Variable Required Default Description
CELERY_BROKER_URL No redis://redis/0 Celery broker URL. Note: the summary service default omits the port (redis/0), unlike the Django backend which uses redis:6379/0.
CELERY_RESULT_BACKEND No redis://redis/0 Celery result backend URL

Speech-to-text (WhisperX)

Variable Required Default Description
WHISPERX_API_KEY Yes -- API key for the WhisperX / OpenAI-compatible API
WHISPERX_BASE_URL No https://api.openai.com/v1 WhisperX-compatible API endpoint. Default works with the OpenAI Whisper API. Override with your self-hosted WhisperX URL (e.g., http://whisperx:8000/v1).
WHISPERX_ASR_MODEL No whisper-1 ASR model name. Use whisper-1 for the OpenAI Whisper API, or a WhisperX model like large-v3 for a self-hosted instance.
WHISPERX_DEFAULT_LANGUAGE No -- ISO 639-1 language code (e.g., fr, en). When set, skips automatic language detection.
WHISPERX_ALLOWED_LANGUAGES No {"en","fr","de","nl"} Set of accepted ISO 639-1 language codes. Requests with other codes are rejected.

LLM (summarization)

Variable Required Default Description
LLM_BASE_URL For summarization -- LLM API endpoint (OpenAI-compatible)
LLM_API_KEY For summarization -- LLM API key
LLM_MODEL For summarization -- LLM model identifier (e.g., gpt-4o)
IS_SUMMARY_ENABLED No True Enable AI summarization in addition to transcription. Set to False to produce transcripts only.