You set up a self-hosted Owncast server so your community could watch your streams without depending on Twitch or YouTube. The night of your most anticipated broadcast, your streaming software showed a successful RTMP connection — but Owncast had actually crashed and restarted mid-stream. The RTMP port was still bound by the old process, so your encoder connected successfully and reported no errors. Your viewers, though, saw the stream go offline. Nobody pinged you until the chat went quiet fifteen minutes in.
Owncast is a self-hosted live video streaming and chat server. It accepts an RTMP ingest from streaming software like OBS, transcodes the stream, and serves it to viewers over HLS. When it goes down, the failure is often invisible to the streamer — the encoder stays connected while viewers see nothing. Vigilmon gives you the external monitoring to detect Owncast failures as soon as they happen, not when your chat goes silent.
This tutorial walks through monitoring Owncast end-to-end with Vigilmon.
What You'll Build
- A Vigilmon HTTP monitor on the Owncast web UI
- A health check on the
/api/statusendpoint - A TCP check on the RTMP ingest port (1935)
- SSL certificate expiry alerts
- A Vigilmon heartbeat for streaming uptime confirmation
Prerequisites
- A running Owncast instance (v0.1.x or later)
- A free account at vigilmon.online
Step 1: Monitor the Owncast Web UI
The Owncast web interface is what your viewers see. A 200 response from the root path confirms that the Go process is running and the embedded HTTP server is accepting connections.
Test it:
curl -I https://stream.yourdomain.com/
You should see 200 OK with an HTML response. The page title will include your configured stream name.
Set up the Vigilmon monitor:
- Log in to Vigilmon and click New Monitor → HTTP.
- Set URL to
https://stream.yourdomain.com/. - Set Check interval to 60 seconds.
- Set Expected status code to
200. - Under Advanced → Keyword check, add keyword present:
Owncast. - Save the monitor.
Step 2: Monitor the API Status Endpoint
Owncast exposes a /api/status endpoint that returns detailed server state, including whether a stream is currently live, the viewer count, and server uptime. This is the canonical health signal for the Owncast process.
Test it:
curl https://stream.yourdomain.com/api/status
Healthy response:
{
"online": false,
"viewerCount": 0,
"overallMaxViewerCount": 0,
"sessionMaxViewerCount": 0,
"name": "My Owncast Server",
"version": "0.1.3"
}
The online field will be true when a stream is live. This endpoint returning any valid JSON confirms the Owncast Go process is healthy. A 502 or 504 means the process is down.
Set up the monitor:
- Click New Monitor → HTTP in Vigilmon.
- Set URL to
https://stream.yourdomain.com/api/status. - Set Expected status code to
200. - Under Advanced → Keyword check, add:
- Keyword present:
"version"
- Keyword present:
- Set Check interval to 60 seconds.
- Save.
Step 3: Monitor the RTMP Ingest Port (TCP 1935)
RTMP (Real-Time Messaging Protocol) is how your streaming software (OBS, Streamlabs, etc.) sends video to Owncast. Owncast listens on TCP port 1935 by default. If this port becomes unavailable — because the process crashed, a firewall rule changed, or the server ran out of file descriptors — your encoder will lose its connection and the stream will drop.
Vigilmon's TCP monitor verifies that the port is open and accepting connections without needing to authenticate.
Set up the monitor:
- Click New Monitor → TCP in Vigilmon.
- Set Host to
stream.yourdomain.com. - Set Port to
1935. - Set Check interval to 60 seconds.
- Save.
A failed TCP check on port 1935 during a scheduled stream means your broadcasters can't connect — alert your team immediately. Configure this with a shorter grace period (e.g., 1 minute) than your HTTP monitors.
Step 4: SSL Certificate Monitoring
Viewers connect to Owncast over HTTPS, and the HLS stream segments are also served over HTTPS. An expired certificate causes browsers to block all stream segment requests, resulting in playback failure for all viewers simultaneously. Modern browsers will refuse to play a video stream from an endpoint with a certificate error.
Vigilmon monitors SSL certificate validity automatically on all HTTPS monitors.
- Open your Owncast web UI monitor in Vigilmon.
- Under Advanced → SSL, ensure Alert before expiry is enabled.
- Set the alert lead time to 14 days.
- Save.
Also enable SSL alerts on your /api/status monitor for additional coverage.
Step 5: Stream Uptime Heartbeat
Monitoring that Owncast is running is different from monitoring that streams are actually broadcasting. For scheduled streams, you can add a heartbeat check: a cron job or stream automation script that pings Vigilmon after a successful RTMP connection is confirmed.
Step 5a: Create the Vigilmon heartbeat.
- Click New Monitor → Heartbeat in Vigilmon.
- Set Name to
Owncast Stream Uptime. - Set Expected interval to your stream schedule (e.g., every hour for hourly check-ins).
- Set Grace period to
5 minutes. - Save and copy the heartbeat ping URL.
Step 5b: Ping from your streaming automation.
If you use a script to start OBS or trigger stream start:
# After confirming OBS/encoder has connected successfully
curl -s https://vigilmon.online/heartbeat/abc123
Or use a cron job during scheduled stream windows:
# Check if Owncast reports online=true and ping the heartbeat
*/5 * * * * root curl -s https://stream.yourdomain.com/api/status | \
grep -q '"online":true' && \
curl -s https://vigilmon.online/heartbeat/abc123
This heartbeat only fires when Owncast is actually streaming live, giving you a signal that both the infrastructure and the ingest are healthy.
Step 6: Alert Channels
Go to Notifications → New Channel in Vigilmon and configure:
- Email — for the stream operator or admin
- Webhook — for your Discord server or Slack team
Streaming failures are time-sensitive. Configure alerts to reach you on the channel you check during a live event — typically your community Discord or a phone notification.
A RTMP port alert looks like:
🔴 DOWN: Owncast RTMP Port (TCP)
TCP connection to stream.yourdomain.com:1935 refused
Triggered: 2026-05-10 20:03 UTC
What You've Built
| Scenario | How Vigilmon catches it |
|---|---|
| Owncast process crash | Web UI and /api/status both fail |
| RTMP port unavailable | TCP monitor on port 1935 fails |
| Stream transcoding failure | Heartbeat not pinged during live window |
| SSL certificate expired | HTTPS monitors report TLS error |
| Reverse proxy misconfiguration | Web UI monitor detects 502/504 |
| Firewall blocking RTMP | TCP monitor detects connection refused |
| DNS misconfiguration | HTTP monitors detect resolution failure |
Owncast lets you own your live streaming audience relationship. But a crashed server during a broadcast is invisible to the streamer and immediate to the viewers — and it's the worst moment to be debugging. Vigilmon's external checks on the web UI, API, and RTMP port give you early warning before your chat goes silent.
Start monitoring your Owncast server today — register free at vigilmon.online.