Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.sonicverse.eu/llms.txt

Use this file to discover all available pages before exploring further.

Manage all settings through the .env file. Copy .env.example to get started:
cp .env.example .env
The installer (./install.sh) auto-generates secure passwords for Icecast and harbor connections when creating a new .env file. You only need to customize station identity, hostname, and optional integrations.

Station

VariableDescriptionDefault
STATION_NAMEStation name used in stream metadata, alerts, and the root status pageMy Radio Station
STATION_LOCATIONStation location shown in Icecast server infoYour Country
STATION_ADMIN_EMAILAdmin contact email, also displayed on the root status pageadmin@example.com

Icecast

VariableDescriptionDefault
ICECAST_SOURCE_PASSWORDPassword for Liquidsoap to Icecast connectionsAuto-generated
ICECAST_RELAY_PASSWORDPassword for Icecast relay connectionsAuto-generated
ICECAST_ADMIN_USERIcecast admin panel usernameRequired
ICECAST_ADMIN_PASSWORDIcecast admin panel passwordRequired
ICECAST_HOSTNAMEPublic hostname where listeners access streamsstream.example.com
ICECAST_MAX_LISTENERSMaximum concurrent listeners across all mount points500
Since v1.5.3, ICECAST_ADMIN_USER and ICECAST_ADMIN_PASSWORD are required. The Status API and Analytics services will not connect to Icecast admin endpoints without them. The installer auto-generates these values, so existing deployments created with install.sh are unaffected.

Liquidsoap harbor

VariableDescriptionDefault
HARBOR_PRIMARY_PORTPort for primary studio input8010
HARBOR_FALLBACK_PORTPort for fallback studio input8011
HARBOR_PASSWORDPassword for studio to Liquidsoap connectionsAuto-generated
SILENCE_THRESHOLD_DBSilence detection threshold in dB-40
SILENCE_DURATIONSeconds of silence before alerting15

SSL

VariableDescriptionDefault
LETSENCRYPT_EMAILEmail for Let’s Encrypt notificationsadmin@example.com
LETSENCRYPT_STAGINGSet to 1 for staging (test) certificates during initial setup0
Use staging certificates while testing to avoid hitting Let’s Encrypt rate limits. Change to 0 for production certificates once you have verified everything works.

Alerts

VariableDescriptionDefault
PUSHOVER_USER_KEYPushover user key for notifications (leave empty to disable)
PUSHOVER_APP_TOKENPushover application token (leave empty to disable)

Status panel

The status panel is disabled by default. Set ENABLE_STATUS_PANEL=1 to run the status API service and expose /api/ routes through nginx. See the status panel guide for setup instructions.
VariableDescriptionDefault
ENABLE_STATUS_PANELSet to 1 to run the status API and expose /api/ through nginx0
STATUS_PANEL_CORS_ORIGINDashboard URL(s) for CORS, comma-separated
STATUS_PANEL_HOSTBind host for the status API server. Auto-detects the container IP inside Docker when unset.127.0.0.1
STATUS_PANEL_WRITE_ROLESComma-separated Appwrite team roles allowed to write/modify via panelowner,admin
STATUS_PANEL_ALLOW_RISKY_COMMANDSAllow dangerous commands like container restart in panel (0 = deny, 1 = allow)0
Only enable STATUS_PANEL_ALLOW_RISKY_COMMANDS if you understand the security implications. This allows the dashboard to restart Docker containers and trigger SSL renewal remotely.

Appwrite authentication

The status panel uses Appwrite for team-based authentication. These variables are only required when the status panel is enabled and you want authenticated access.
VariableDescriptionDefault
APPWRITE_ENDPOINTAppwrite API endpoint (recommended: https://cloud.appwrite.io/v1)
APPWRITE_PROJECT_IDAppwrite project ID
APPWRITE_TEAM_IDAppwrite team ID (required when APPWRITE_PROJECT_ID is set; only members get panel access)
APPWRITE_TEAM_ID is required whenever APPWRITE_PROJECT_ID is set. The installer enforces this and prompts you for the team ID if it is missing. Without a team ID, the status panel will not authenticate any users.

PostHog analytics

VariableDescriptionDefault
POSTHOG_API_KEYPostHog project API key (leave empty to disable)
POSTHOG_HOSTPostHog instance URLhttps://app.posthog.com
POSTHOG_POLL_INTERVALHow often to poll Icecast for listener stats, in seconds30
Leave POSTHOG_API_KEY empty to disable analytics entirely.