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
| Variable | Purpose |
|---|---|
PORT | Backend listen port |
DATABASE_URL | PostgreSQL connection string |
JWT_SECRET | Signs auth JWTs — see Authentication |
MONITORING_TOKEN | Required header for /health/detail |
BROADCAST_TOKEN | Static token gating the live-broadcast WebSocket |
MQTT_BROKER, MQTT_PORT, MQTT_USER, MQTT_PASS, MQTT_USE_TLS, MQTT_TLS_INSECURE, MQTT_TOPIC_BASE | Backend's own connection to EMQX — see Device Deployment |
EMQX_API_URL, EMQX_API_KEY, EMQX_API_SECRET | Broker management API, for metrics scraping — see Monitoring |
ICECAST_HOST, ICECAST_PORT, ICECAST_PASSWORD, ICECAST_PUBLIC_HOST, ICECAST_PUBLIC_PORT | Icecast source-client push + public stream URLs |
STREAM_AUTHZ_ENFORCE | Listener authorization gate — see Backend Deployment |
EXPO_ACCESS_TOKEN | Expo push (Android/web) |
APNS_AUTH_MODE, APNS_KEY_PATH, APNS_KEY_ID, APNS_TEAM_ID, APNS_BUNDLE_ID, APNS_SANDBOX | iOS VoIP push |
FCM_PROJECT_ID, FCM_SERVICE_ACCOUNT_JSON, FCM_ANDROID_PRIORITY | Android push |
EMAIL_SMTP_HOST, EMAIL_SMTP_PORT, EMAIL_SMTP_USER, EMAIL_SMTP_PASS, EMAIL_FROM, EMAIL_USE_TLS, EMAIL_USE_SSL | Transactional email (password reset, invites) |
MSG91_AUTH_KEY, MSG91_SENDER_ID, MSG91_ROUTE, MSG91_COUNTRY | SMS (login codes) |
AZAN_AUTO_ENABLED, AZAN_AUTO_CHECK_INTERVAL_SECS, AZAN_AUTO_STREAM_TAIL_SECS | Offline-azan scheduler — see Azaan Broadcast |
BROADCAST_IDLE_TIMEOUT_SECS | Live 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.
:::