Scrypted is an open source smart home hub and network video recorder platform with AI-based object detection, HomeKit integration, and a rich plugin ecosystem for cameras and devices. It runs as a Node.js application on port 10443 (HTTPS) and 10080 (HTTP), and coordinates a fleet of camera streams, AI inference engines, plugin processes, and cloud integrations. When any component fails — a camera goes dark, the HomeKit bridge drops, a plugin crashes — the failure is often invisible until you notice your doorbell isn't recording. Vigilmon gives you proactive alerting across every layer of the Scrypted stack.
What You'll Set Up
- Web server and HTTPS availability monitoring
- TLS/self-signed certificate expiry alerts
- Camera stream ingestion health (RTSP/RTMP per camera)
- AI inference engine health via plugin API
- Plugin process health for device adapters
- HomeKit accessory bridge service availability
- MQTT broker connectivity monitoring
- Storage backend accessibility verification
- WebRTC stream relay service health
- Cron heartbeat for scheduled clip backup validation
Prerequisites
- Scrypted running and accessible at
https://your-host:10443 - One or more cameras configured in Scrypted
- HomeKit integration active (optional)
- MQTT broker configured (optional)
- A free Vigilmon account
Step 1: Monitor Web Server Availability
Scrypted's management UI and API are served on port 10443 (HTTPS) and port 10080 (HTTP). Start with an uptime monitor on the HTTPS port:
- Log in to vigilmon.online and click Add Monitor.
- Set Type to
HTTP / HTTPS. - Enter:
https://your-host:10443. - Set Check interval to
1 minute. - Set Expected HTTP status to
200. - Click Save.
If Scrypted uses a self-signed certificate (common for local/LAN deployments), enable Ignore SSL errors in the monitor settings — you still want the TCP connection and HTTP response monitored, even if you can't validate the certificate chain.
Add a secondary monitor on port 10080 to catch cases where only the HTTP redirect service is affected:
- Click Add Monitor → HTTP / HTTPS.
- Enter:
http://your-host:10080. - Set Expected HTTP status to
200or301. - Set Check interval to
2 minutes.
Step 2: Monitor TLS/Self-Signed Certificate Expiry
Even self-signed certificates expire. When they do, browsers refuse to connect and Scrypted's iOS/tvOS companion apps stop working. Add certificate expiry monitoring:
- Open the HTTPS monitor from Step 1.
- Enable Monitor SSL certificate.
- Set Alert when certificate expires in less than
30 days. - Click Save.
For self-signed certificates you manage manually, set the threshold to 60 days so you have time to regenerate and redeploy before expiry. For Let's Encrypt certificates on a public host, 21 days is sufficient.
Step 3: Monitor Camera Stream Ingestion Health
Scrypted ingests camera streams over RTSP or RTMP and re-encodes them for HomeKit, web viewing, and recording. A dropped RTSP stream means no recordings and no live view — but Scrypted may continue running normally while the stream is silently gone. Use Vigilmon's TCP Port monitor to verify each camera's RTSP endpoint is reachable:
- Click Add Monitor → TCP Port.
- Enter your camera's IP and RTSP port:
Host: 192.168.1.100,Port: 554. - Set Check interval to
2 minutes. - Click Save.
Repeat for each camera. Label monitors with the camera name (e.g. Front Door Camera — RTSP) so alerts are immediately actionable.
If your cameras expose an HTTP management interface, add an HTTP monitor for each camera's web UI as a secondary health signal — a camera that has lost its IP address won't respond on either port.
Step 4: Monitor AI Inference Engine Health
Scrypted's object detection — powered by TensorFlow or OpenCV — runs as part of the plugin process. A failed inference engine means motion alerts stop working even though the camera stream is active. Scrypted exposes a REST API you can probe to check plugin status.
Add a monitor for the Scrypted API endpoint (requires a read-only API token):
- Log in to Scrypted, go to Settings → Users, and create a read-only API user.
- Note the API token.
- In Vigilmon, click Add Monitor → HTTP / HTTPS.
- Enter:
https://your-host:10443/endpoint/@scrypted/core/public/. - Set Expected HTTP status to
200. - Set Check interval to
5 minutes. - Enable Ignore SSL errors if using a self-signed certificate.
- Click Save.
For a more targeted inference health check, create a lightweight health script that calls the Scrypted API and pings a heartbeat:
#!/bin/bash
# /opt/scripts/check-scrypted-inference.sh
SCRYPTED_URL="https://localhost:10443"
SCRYPTED_TOKEN="your-api-token"
HEARTBEAT_URL="https://vigilmon.online/heartbeat/your-token"
# Check if object detection plugin responds
STATUS=$(curl -sk -o /dev/null -w "%{http_code}" \
-H "Authorization: Bearer $SCRYPTED_TOKEN" \
"$SCRYPTED_URL/endpoint/@scrypted/objectdetector/public/")
if [ "$STATUS" = "200" ]; then
curl -s "$HEARTBEAT_URL" > /dev/null
fi
Add to cron (every 5 minutes):
*/5 * * * * /bin/bash /opt/scripts/check-scrypted-inference.sh
Set up the corresponding Cron Heartbeat monitor in Vigilmon with an expected interval of 10 minutes.
Step 5: Monitor Plugin Process Health
Scrypted runs device adapters as individual plugins — each camera vendor, smart home protocol (Z-Wave, Zigbee, HomeKit), and cloud integration runs as a separate plugin process. A crashed plugin means its devices stop working. Scrypted's log system can be used to detect plugin failures:
Create a log-scanning heartbeat script:
#!/bin/bash
# /opt/scripts/check-scrypted-plugins.sh
LOG_FILE="/home/scrypted/.scrypted/volume/scrypted.log"
HEARTBEAT_URL="https://vigilmon.online/heartbeat/your-token"
# Alert if critical plugin errors appeared in the last 10 minutes
ERRORS=$(grep -c "plugin.*crashed\|plugin.*error\|FATAL" \
<(tail -n 200 "$LOG_FILE") 2>/dev/null)
if [ "$ERRORS" -eq 0 ]; then
curl -s "$HEARTBEAT_URL" > /dev/null
fi
Create a Cron Heartbeat monitor in Vigilmon with an expected interval of 15 minutes, and run this script every 10 minutes via cron.
Step 6: Monitor HomeKit Accessory Bridge Availability
Scrypted's HomeKit bridge makes your cameras and devices appear as HomeKit accessories. If the bridge process crashes or loses its Bonjour registration, all HomeKit automations and live views break silently. Monitor the HomeKit bridge's HTTP endpoint if Scrypted exposes one, or use a TCP port check on the HAP port (default: 5353 for mDNS, or the port Scrypted assigns per bridge):
- Click Add Monitor → TCP Port.
- Enter your Scrypted host and the HomeKit bridge port (find this in Scrypted under Settings → HomeKit).
- Set Check interval to
2 minutes. - Click Save.
Alternatively, probe the Scrypted API for the HomeKit plugin status using the same approach as Step 4, targeting @scrypted/homekit.
Step 7: Monitor MQTT Broker Connectivity
If Scrypted is configured to publish events to an MQTT broker (for Home Assistant or Node-RED integration), a broken MQTT connection means those automations silently stop receiving camera events. Add a TCP port monitor for your MQTT broker:
- Click Add Monitor → TCP Port.
- Enter your MQTT broker host and port:
Host: 192.168.1.10,Port: 1883(or8883for MQTT over TLS). - Set Check interval to
2 minutes. - Click Save.
If your MQTT broker exposes an HTTP health endpoint (e.g. EMQX's management API at port 18083 or Mosquitto with a plugin), add an HTTP monitor for a richer health signal.
Step 8: Monitor Storage Backend Accessibility
Scrypted records motion clips to local storage or a NAS. If the recording directory becomes unwritable (full disk, NFS mount failure, permissions change), recordings stop silently. Use a heartbeat script to validate the recording storage:
#!/bin/bash
# /opt/scripts/check-scrypted-storage.sh
RECORDING_DIR="/mnt/nas/scrypted-recordings"
HEARTBEAT_URL="https://vigilmon.online/heartbeat/your-token"
# Check if directory is mounted and writable
if mountpoint -q "$RECORDING_DIR" 2>/dev/null || [ -d "$RECORDING_DIR" ]; then
TEST_FILE="$RECORDING_DIR/.write-test-$$"
if touch "$TEST_FILE" 2>/dev/null; then
rm -f "$TEST_FILE"
curl -s "$HEARTBEAT_URL" > /dev/null
fi
fi
Create a Cron Heartbeat monitor in Vigilmon with an expected interval of 10 minutes and run this script every 5 minutes.
Also add a Disk usage alert by monitoring your storage host:
- Click Add Monitor → HTTP / HTTPS (if your NAS exposes a management UI with a health endpoint).
- Or use TCP Port monitoring on your NAS's management port as a proxy for NAS availability.
Step 9: Monitor WebRTC Stream Relay Health
Scrypted uses WebRTC to relay camera streams to browsers and iOS devices. The WebRTC relay relies on STUN/TURN negotiation and may also use a dedicated relay port range. Monitor the Scrypted WebRTC endpoint:
- Click Add Monitor → TCP Port.
- Enter your Scrypted host and WebRTC relay port (default varies — check Scrypted settings under Network).
- Set Check interval to
5 minutes. - Click Save.
For cloud relay (Scrypted cloud plugin), add an HTTP monitor for the Scrypted cloud API endpoint as specified in your Scrypted cloud plugin configuration.
Step 10: Configure Alert Channels
- Go to Alert Channels in Vigilmon and add Slack, email, or a webhook.
- For the core web server monitor (Step 1), set Consecutive failures before alert to
2— Node.js startup can cause brief unavailability. - For camera RTSP port monitors (Step 3), set Consecutive failures before alert to
3— cameras occasionally hiccup on RTSP renegotiation. - For AI inference and plugin heartbeats (Steps 4–5), set Consecutive failures before alert to
1— a missed heartbeat means the check script itself failed. - Use Alert groups to bundle all camera monitors so a network outage generates one alert, not one per camera.
Conclusion
Scrypted's value — recording clips, triggering HomeKit automations, detecting objects — depends on a chain of services all working together. Here's the full coverage summary:
| Layer | Monitor | |---|---| | Web server | HTTP uptime on port 10443 and 10080 | | TLS certificate | SSL expiry alert (30-day window) | | Camera streams | TCP Port check on RTSP port per camera | | AI inference | Cron heartbeat from inference check script | | Plugin health | Cron heartbeat from log-scan script | | HomeKit bridge | TCP Port check on HAP bridge port | | MQTT broker | TCP Port check on broker port | | Storage backend | Cron heartbeat from write-test script | | WebRTC relay | TCP Port check on relay port |
With these monitors in place, you'll catch a dropped camera stream or a crashed inference plugin before you notice your motion alerts have gone quiet.