Your internet radio station went silent at 2 AM. Listeners tuned out, the AutoDJ stopped broadcasting, and no one noticed until morning. For community radio stations, online DJs, and podcasters running AzuraCast, a broadcasting interruption without monitoring is a dead air nightmare.
AzuraCast is an open-source, self-hosted web radio management suite that provides a complete internet radio broadcasting station in a Docker stack. It manages Icecast and SHOUTcast audio streams, Liquidsoap automation, DJ scheduling, and a public-facing station interface. Vigilmon gives you the external monitoring that catches AzuraCast failures before your listeners do — covering the web UI, API layer, Icecast stream availability, SSL certificates, and Liquidsoap AutoDJ health.
This tutorial walks you through monitoring AzuraCast end-to-end with Vigilmon.
What You'll Build
- A Vigilmon HTTP monitor on the AzuraCast web UI (port 80/443)
- An API status monitor verifying the AzuraCast API and database
- A TCP monitor on the Icecast audio stream port
- SSL certificate expiry alerts for your station domain
- A heartbeat monitor for Liquidsoap AutoDJ health
- Alert channels for immediate notification
Prerequisites
- A running AzuraCast instance (Docker stack, accessible via port 80/443 or a custom domain)
- A free account at vigilmon.online
Step 1: Monitor the AzuraCast Web UI
AzuraCast serves its station management dashboard and public-facing station pages on port 80 (HTTP) or port 443 (HTTPS). A GET request to / returns the AzuraCast UI — either the admin panel or the public station page, depending on configuration. A 200 response confirms the PHP-FPM backend and nginx reverse proxy inside the Docker stack are running.
Test it from your terminal:
curl -I https://radio.yourdomain.com/
Expected response:
HTTP/2 200
Set up the Vigilmon monitor:
- Log in to Vigilmon and click New Monitor → HTTP.
- Set URL to
https://radio.yourdomain.com/. - Set Check interval to 60 seconds.
- Set Expected status code to
200. - Save the monitor.
Vigilmon now polls your AzuraCast web UI every minute from multiple geographic regions. If the Docker stack crashes, nginx stops serving, or the PHP-FPM pool exhausts its workers, this check fails immediately.
Step 2: Monitor the AzuraCast API Status Endpoint
The web UI check confirms that nginx is serving requests, but it doesn't verify that the AzuraCast application layer and its database are functioning. AzuraCast exposes a dedicated API status endpoint for exactly this purpose.
Test the API status endpoint:
curl https://radio.yourdomain.com/api/status
Expected response:
{"online": true}
This endpoint requires no authentication and exercises the full AzuraCast application stack — PHP-FPM, the Laravel application, and the MariaDB database. If the database container is down or the application encounters an unrecoverable error, this endpoint returns a non-200 status or a body that doesn't include "online": true.
Set up the monitor in Vigilmon:
- Click New Monitor → HTTP.
- Set URL to
https://radio.yourdomain.com/api/status. - Set Expected status code to
200. - Under Advanced → JSON body assertion, add:
- Path:
online - Operator:
equals - Value:
true
- Path:
- Save.
This check separates nginx liveness from application health — a common distinction for Docker-based deployments where individual containers can fail independently.
Step 3: Monitor Icecast Stream Availability
AzuraCast's audio streams are served by Icecast, which typically listens on port 8000 (or a custom port configured per station). The Icecast server is the component your listeners' media players connect to — if it goes down, the audio stops regardless of whether the AzuraCast web UI remains accessible.
TCP port check: A TCP probe to port 8000 confirms the Icecast server is accepting connections.
- Click New Monitor → TCP in Vigilmon.
- Set Host to
radio.yourdomain.com. - Set Port to
8000(or your station's configured Icecast port). - Set Check interval to 60 seconds.
- Save.
Stream URL check: For deeper verification, monitor the Icecast stream playlist URL directly:
- Click New Monitor → HTTP.
- Set URL to
http://radio.yourdomain.com:8000/radio/8000/listen.m3u(or your station's stream URL from the AzuraCast public player). - Set Expected status code to
200. - Save.
A successful response on the .m3u URL confirms that Icecast is not just accepting TCP connections but is actively broadcasting a stream. Use the stream URL shown in your AzuraCast station's public player embed — it will be specific to your station configuration.
Step 4: SSL Certificate Monitoring
AzuraCast includes an integrated Let's Encrypt setup wizard that provisions TLS certificates for your station domain. An expired certificate breaks the public station player for all HTTPS listeners, locks out the HTTPS admin interface, and causes client apps to reject the connection.
Vigilmon monitors SSL certificate validity automatically for any HTTPS monitor. To configure dedicated expiry alerts:
- Open your AzuraCast HTTPS monitor in Vigilmon.
- Go to Settings → SSL.
- Enable Alert when certificate expires within 14 days.
- Optionally enable Alert when certificate expires within 30 days for early warning.
You'll receive alerts like:
⚠️ SSL Warning: radio.yourdomain.com
Certificate expires in 11 days (2026-07-24)
AzuraCast's Let's Encrypt auto-renewal can silently fail after Docker restarts, IP changes, or firewall updates. Vigilmon's certificate monitor catches renewal failures before they break your broadcast.
Step 5: Heartbeat Monitor for Liquidsoap AutoDJ Health
Liquidsoap is the automation engine that powers AzuraCast's AutoDJ — it reads playlists, applies crossfades, handles song requests, and feeds the continuous audio stream to Icecast. If Liquidsoap stops, the stream may go silent or stall even while the web UI and Icecast TCP port appear healthy.
AzuraCast exposes a now-playing endpoint per station:
curl https://radio.yourdomain.com/api/station/1/now-playing
Expected response excerpt:
{
"now_playing": {
"song": {
"title": "Example Track",
"artist": "Example Artist"
}
},
"is_online": true
}
The is_online: true field confirms Liquidsoap is running and the AutoDJ is actively broadcasting. A failed response or is_online: false indicates the Liquidsoap automation engine has stopped.
Set up the heartbeat monitor in Vigilmon:
- Click New Monitor → HTTP.
- Set URL to
https://radio.yourdomain.com/api/station/1/now-playing(replace1with your AzuraCast station ID). - Set Expected status code to
200. - Under Advanced → JSON body assertion, add:
- Path:
is_online - Operator:
equals - Value:
true
- Path:
- Save.
Replace the station ID in the URL with the numeric ID shown in your AzuraCast station management panel. If you run multiple stations, create a separate monitor for each.
Step 6: Alert Channels
Go to Notifications → New Channel in Vigilmon and configure your preferred alert delivery:
- Email — immediate alerts to your inbox or station operations address
- Webhook — forward to Discord, Slack, or ntfy.sh for push notifications
For Discord, paste your server webhook URL. An AzuraCast downtime alert looks like:
🔴 DOWN: radio.yourdomain.com/api/status (HTTP 503)
AzuraCast API health check failed
Region: EU-West
Triggered: 2026-01-15 03:22 UTC
Recovery notification:
✅ RECOVERED: radio.yourdomain.com/api/status
Downtime: 14 minutes
Step 7: Status Page
Go to Status Pages → New Status Page in Vigilmon. Add all your AzuraCast monitors — web UI, API, Icecast TCP, AutoDJ heartbeat — and publish. Share the status page URL with your listeners or DJ team so they can check broadcast health without contacting you.
What You've Built
| Scenario | How Vigilmon catches it |
|---|---|
| AzuraCast Docker stack crash | Web UI monitor returns connection refused |
| Database container failure | API /api/status returns non-200 or online: false |
| Icecast stream server stops | TCP monitor on port 8000 fails |
| Stream broadcasting stops | Stream URL .m3u monitor returns non-200 |
| Liquidsoap AutoDJ halts | Now-playing heartbeat returns is_online: false |
| SSL certificate expired or expiring | SSL expiry alert triggers at threshold |
| DNS misconfiguration | HTTP monitor detects DNS resolution failure |
Running an internet radio station means your uptime is your audience's experience. Vigilmon monitors AzuraCast from outside your network, from multiple regions, with no agents or plugins to install inside your Docker stack.
Start monitoring your AzuraCast station today — register free at vigilmon.online.