Skip to main content

Configuration

:::info Status Implemented. Source: fastapi-backend/.env.example. :::

for d in fastapi-backend admin-panel super-admin-panel website; do
cp $d/.env.example $d/.env
done

Backend environment variables

VariablePurpose
PORTBackend listen port
DATABASE_URLPostgreSQL connection string
JWT_SECRETSigns auth JWTs — see Authentication
MONITORING_TOKENRequired header for /health/detail
BROADCAST_TOKENStatic token gating the live-broadcast WebSocket
MQTT_BROKER, MQTT_PORT, MQTT_USER, MQTT_PASS, MQTT_USE_TLS, MQTT_TLS_INSECURE, MQTT_TOPIC_BASEBackend's own connection to EMQX — see Device Deployment
EMQX_API_URL, EMQX_API_KEY, EMQX_API_SECRETBroker management API, for metrics scraping — see Monitoring
ICECAST_HOST, ICECAST_PORT, ICECAST_PASSWORD, ICECAST_PUBLIC_HOST, ICECAST_PUBLIC_PORTIcecast source-client push + public stream URLs
STREAM_AUTHZ_ENFORCEListener authorization gate — see Backend Deployment
EXPO_ACCESS_TOKENExpo push (Android/web)
APNS_AUTH_MODE, APNS_KEY_PATH, APNS_KEY_ID, APNS_TEAM_ID, APNS_BUNDLE_ID, APNS_SANDBOXiOS VoIP push
FCM_PROJECT_ID, FCM_SERVICE_ACCOUNT_JSON, FCM_ANDROID_PRIORITYAndroid push
EMAIL_SMTP_HOST, EMAIL_SMTP_PORT, EMAIL_SMTP_USER, EMAIL_SMTP_PASS, EMAIL_FROM, EMAIL_USE_TLS, EMAIL_USE_SSLTransactional email (password reset, invites)
MSG91_AUTH_KEY, MSG91_SENDER_ID, MSG91_ROUTE, MSG91_COUNTRYSMS (login codes)
AZAN_AUTO_ENABLED, AZAN_AUTO_CHECK_INTERVAL_SECS, AZAN_AUTO_STREAM_TAIL_SECSOffline-azan scheduler — see Azaan Broadcast
BROADCAST_IDLE_TIMEOUT_SECSLive broadcast auto-end on silence

Additional rollout flags (FANOUT_V2, FANOUT_LEGACY_BRIDGE, STREAM_GATEWAY_BASE_URL, STREAM_TOKEN_SECRET) and EMQX-side variables (EMQX_PG_PASSWORD, EMQX_DASHBOARD_PASSWORD, EMQX_NODE_COOKIE, EMQX_TLS_ENABLE) are documented alongside the feature they control: Backend Deployment, Device Deployment.

Frontend build-time variables

admin-panel's VITE_BROADCAST_TOKEN is baked in at build time and must match the backend's BROADCAST_TOKEN — see Azaan Broadcast.

:::danger Never commit .env files, certificates in emqx/certs/, and any secret value are gitignored. Never paste a real secret into documentation, a commit message, or a support ticket — use placeholders like YOUR_JWT_SECRET. :::