Umbrel transforms spare hardware into a personal cloud server with a one-click app store — Bitcoin node, Nextcloud, Jellyfin, Home Assistant, and 100+ more apps running entirely on your own hardware. That "your cloud, your rules" philosophy is the appeal, but it also means you're responsible for knowing when things go wrong. Vigilmon gives you the uptime monitoring layer Umbrel doesn't include: dashboard availability, API health checks, app store connectivity, storage health heartbeats, and SSL certificate alerts.
What You'll Set Up
- Umbrel dashboard web UI availability monitor (port 80 HTTP or 443 HTTPS)
- Umbrel REST API health check at
/api/v1/ping - Umbrel app store connectivity check at
/api/v1/apps - SSL certificate expiry alerts for HTTPS Umbrel deployments
- Heartbeat monitor for Umbrel system health and disk usage
Prerequisites
- Umbrel installed and running on a Raspberry Pi, home server, or laptop (UmbrelOS or standalone install)
- Umbrel accessible on your local network or via a custom domain with HTTPS
- A free Vigilmon account
Step 1: Monitor the Umbrel Dashboard Web UI
The Umbrel dashboard is a React SPA served by Nginx on port 80 (HTTP) or port 443 (HTTPS). A successful response on / or /login confirms the dashboard frontend is up and the Nginx proxy is routing correctly.
- Log in to vigilmon.online and click Add Monitor.
- Set Type to
HTTP / HTTPS. - Enter your Umbrel URL:
http://umbrel.localorhttps://your-umbrel-domain.com. - Set Check interval to
5 minutes. - Set Expected HTTP status to
200. - Click Save.
If you access Umbrel via its mDNS hostname (umbrel.local), use the local IP address instead for monitoring from Vigilmon's external probes:
http://192.168.1.100
For a domain-fronted Umbrel deployment reachable over the internet, use the HTTPS URL:
https://umbrel.yourdomain.com/login
A non-200 response means Nginx is down or the Umbrel frontend container has crashed — you'll get an alert before you notice the dashboard is unreachable.
Step 2: Monitor the Umbrel REST API
Umbrel runs a Node.js backend API that powers all app management operations. The /api/v1/ping endpoint returns a lightweight JSON response confirming the backend is alive:
{"status": "ok"}
Add a dedicated API health monitor:
- Click Add Monitor → HTTP / HTTPS.
- Set URL to
http://umbrel.local/api/v1/pingorhttps://umbrel.yourdomain.com/api/v1/ping. - Set Check interval to
5 minutes. - Set Expected HTTP status to
200. - Under Response body contains, enter
okto verify the JSON payload. - Click Save.
You can also probe /api for a broader API availability check if /api/v1/ping is not available on your Umbrel version:
http://umbrel.local/api
This monitor catches situations where the Nginx proxy is up but the Node.js API process has crashed — the dashboard may load its cached frontend assets but app operations will silently fail.
Step 3: Monitor the Umbrel App Store
The Umbrel app store fetches its catalog from the community app repository. If this connectivity breaks, existing apps continue running but installation and updates fail. Add a check for the app store endpoint:
- Click Add Monitor → HTTP / HTTPS.
- Set URL to
http://umbrel.local/api/v1/appsorhttps://umbrel.yourdomain.com/api/v1/apps. - Set Check interval to
10 minutes. - Set Expected HTTP status to
200. - Click Save.
A failure on this endpoint while the dashboard and API monitors are healthy typically indicates a network issue between your Umbrel server and the upstream app repository — useful to know before a user tries to install or update an app.
Step 4: SSL Certificate Alerts for HTTPS Deployments
If you've exposed Umbrel via a custom domain with Let's Encrypt or a self-signed certificate, expired certs will break dashboard access from remote devices. Add a certificate expiry monitor:
- Open the dashboard monitor created in Step 1 (for your HTTPS Umbrel URL).
- Enable Monitor SSL certificate under the SSL section.
- Set Alert when certificate expires in less than
21 days. - Click Save.
If you use a reverse proxy (Nginx, Caddy, Traefik) in front of Umbrel, the certificate is managed by the proxy. Verify the cert renewal process on your proxy tier and add a Vigilmon SSL monitor for each domain pointing to Umbrel:
https://umbrel.yourdomain.com
A 21-day alert window gives you three full renewal cycles before the certificate actually expires under most Let's Encrypt configurations.
Step 5: Heartbeat Monitoring for Umbrel System Health
Umbrel's system health API returns disk usage, CPU load, RAM consumption, and uptime. High disk usage is the most common cause of silent Umbrel failures — apps stop working when storage fills up. Set up a heartbeat that probes this endpoint on a schedule:
- Click Add Monitor → Cron Heartbeat in Vigilmon.
- Set the expected ping interval to
30 minutes. - Copy the heartbeat URL (e.g.
https://vigilmon.online/heartbeat/abc123). - On your Umbrel server or a device on the same network, set up a cron job that calls the system status API and forwards a ping to Vigilmon on success:
# /etc/cron.d/umbrel-health-heartbeat
*/30 * * * * root curl -sf http://umbrel.local/api/v1/system/status | grep -q '"status"' && curl -s https://vigilmon.online/heartbeat/abc123
This checks the Umbrel system status endpoint (which returns JSON with disk, CPU, RAM, and uptime) and only pings Vigilmon if the response contains a status field. If the API returns an error — or if your cron runner itself goes offline — the heartbeat stops arriving and Vigilmon alerts you after the expected interval passes.
For a more precise disk check, parse the response and alert only when disk usage exceeds a threshold:
#!/bin/bash
RESPONSE=$(curl -sf http://umbrel.local/api/v1/system/status)
DISK=$(echo "$RESPONSE" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d.get('disk',{}).get('usedPercentage',100))" 2>/dev/null)
if [ "${DISK:-100}" -lt 90 ]; then
curl -s https://vigilmon.online/heartbeat/abc123
fi
This version only pings Vigilmon when disk usage is below 90% — combining health and capacity checks in a single heartbeat.
Step 6: Configure Alert Channels
- Go to Alert Channels in Vigilmon and add your preferred notification method: email, Slack, Discord webhook, or Telegram.
- Set Consecutive failures before alert to
2on the dashboard and API monitors — Umbrel occasionally restarts services during app updates, causing a brief gap. - For the system health heartbeat, set the Grace period to
35 minutesto account for the 30-minute cron interval plus execution time.
Summary
| Monitor | Target | What It Catches |
|---|---|---|
| Dashboard web UI | http://umbrel.local or HTTPS URL | Nginx down, frontend container crash |
| REST API health | /api/v1/ping | Node.js backend process crash |
| App store | /api/v1/apps | Repository connectivity failure |
| SSL certificate | HTTPS domain | Let's Encrypt renewal failure |
| System health heartbeat | /api/v1/system/status | Disk full, API unresponsive |
Umbrel lets you run your own personal cloud without subscriptions — Vigilmon makes sure you hear about it when anything on that personal cloud stops working.