No audio on any stream endpoint
If listeners hear nothing or players fail to connect:-
Check that all containers are running:
All services should show
Up. If a container is restarting, check its logs: -
Verify your studio encoder is connected. Open the Icecast admin panel at
https://<host>/icecast-admin/and confirm that source connections appear on the primary (/primary) or fallback (/secondary) mount. -
Confirm the emergency audio file exists at
emergency-audio/fallback.mp3. If no studio source is connected and this file is missing, Liquidsoap has nothing to play.
Studio encoder cannot connect
If your encoder (BUTT, etc.) fails to connect on port 8010 or 8011:- Check the firewall. Ports 8010 and 8011 must be open for your studio IP. Run
sudo ufw statusand verify the rules, or re-run the firewall setup: - Verify the harbor password. The encoder password must match
HARBOR_PASSWORDin your.envfile. - Confirm the port and mount. Primary uses port
8010with mount/primary. Fallback uses port8011with mount/secondary. - Check Liquidsoap logs for connection errors:
Stream plays but no sound (silence)
If the stream connects but you hear dead air:- Check your encoder output. Make sure audio is being sent (not muted at the source).
- Review silence detection settings. Liquidsoap triggers an alert when audio drops below
SILENCE_THRESHOLD_DB(default-40dB) forSILENCE_DURATIONseconds (default15). Check your analytics logs for silence events: - If the fallback chain activated, verify the emergency audio file is not silent or corrupt.
SSL certificate issues
Certificate fails to obtain
- Make sure port 80 is open. Let’s Encrypt requires HTTP access for ACME challenges.
- Verify
LETSENCRYPT_EMAILis set to a valid email address in your.envfile. - If you hit rate limits, set
LETSENCRYPT_STAGING=1in.envto use staging certificates while testing.
Certificate renewal fails
Check certbot logs:HLS stream not working
If/hls/live.m3u8 returns a 404 or fails to play:
- HLS segments are generated by Liquidsoap. Check that the Liquidsoap container is running and producing segments:
- Verify Nginx serves the
/hls/path. The default configuration handles this automatically, but if you customizednginx.conf, confirm the HLS location block is present. - HLS requires a short buffer time before segments are available. Wait 10-15 seconds after starting the stream before testing.
Status panel not loading
If the dashboard at your status panel URL does not load:- Check the API backend. Verify it is running:
- Check CORS settings.
STATUS_PANEL_CORS_ORIGINin.envmust match your dashboard URL exactly, includinghttps://. - Verify Appwrite credentials. Confirm
APPWRITE_ENDPOINT,APPWRITE_PROJECT_ID, andAPPWRITE_TEAM_IDare correct. Incorrect values prevent users from accessing the panel.
Alerts not sending
If you are not receiving Pushover notifications:- Verify
PUSHOVER_USER_KEYandPUSHOVER_APP_TOKENare set correctly in.env. - Alerts have a 5-minute cooldown. If you recently received an alert, the system suppresses the next one of the same type until the cooldown expires.
- Check the analytics service logs:
PostHog events not appearing
If events are missing from your PostHog dashboard:- Confirm
POSTHOG_API_KEYis set in.env. If it is empty, analytics are disabled. - Check that
POSTHOG_HOSTpoints to the correct PostHog instance. - The analytics service polls Icecast every
POSTHOG_POLL_INTERVALseconds (default30). Allow at least one polling cycle before checking. - Review the analytics service logs for errors:
Containers keep restarting
If one or more containers are in a restart loop:- Check the container logs for the failing service:
- Common causes:
- Missing
.envvariables — ensure all required passwords and hostnames are set. - Port conflicts — another service on the host may already be using ports 80, 443, 8010, or 8011. Check with
sudo ss -tlnp. - Missing emergency audio — Liquidsoap may fail if
emergency-audio/fallback.mp3does not exist. Place a valid MP3 file in that path. - Insufficient memory — the stack requires at least 1 GB of available RAM. Check usage with
free -h.
- Missing
Listeners hear glitches or dropouts
If the stream has intermittent audio issues:- Check server resources. High CPU or memory usage can cause encoding issues. Monitor with
htopordocker stats. - Check your network. Packet loss between your studio and the server causes dropouts. Test with:
- Lower the bitrate. If your upload bandwidth is limited, switch to a lower bitrate encoding profile in your studio encoder.
- Check listener count. If you are near the
ICECAST_MAX_LISTENERSlimit (default500), Icecast rejects new connections. Increase the value in.envif your server can handle more.
Icecast admin panel not accessible
Ifhttps://<host>/icecast-admin/ returns an error:
- Verify the Nginx and Icecast containers are both running:
- Confirm your
ICECAST_ADMIN_USERandICECAST_ADMIN_PASSWORDare set in.env. - Check that SSL is working by visiting
https://<host>directly. If SSL is broken, fix the certificate first.

