tutorial

Heimdall Monitoring with Vigilmon: Dashboard Uptime & Application Link Alerts

Monitor your self-hosted Heimdall application dashboard with Vigilmon — track web UI availability, SSL certificate expiry, HTTP response time, and application link spot-checks.

Your Heimdall dashboard is the front door to every self-hosted service you run — Jellyfin, Nextcloud, Home Assistant, Sonarr, the whole stack. When Heimdall goes down, you lose the central navigation point for your entire homelab. Worse, if an application link on the dashboard is broken, you might not notice until you click it and find yourself staring at a connection refused error. For self-hosted dashboards, visibility is the point — and you need monitoring to maintain it.

Heimdall is a self-hosted application dashboard that provides a clean, configurable landing page for all your self-hosted services. Vigilmon provides the external monitoring that catches Heimdall failures and validates that your application links remain reachable — before you sit down to use your homelab and find the front door missing.

This tutorial walks you through monitoring Heimdall end-to-end with Vigilmon.

What You'll Build

  • A Vigilmon HTTP monitor on Heimdall's web UI
  • SSL certificate expiry alerts
  • HTTP response time monitoring
  • Application link availability spot-checks
  • Alert channels for immediate notification

Prerequisites

  • A running Heimdall instance (typically on port 80/443 behind a reverse proxy, or port 8080 directly)
  • A free account at vigilmon.online

Step 1: Monitor Web UI Availability

Heimdall doesn't expose a dedicated health endpoint — the dashboard itself is the availability signal. The root URL loads the application, reads the configuration database, and renders your application tiles in a single request.

Test it from your terminal:

curl -I https://heimdall.yourdomain.com/

A healthy response returns HTTP 200 with the Heimdall dashboard HTML.

Set up the Vigilmon monitor:

  1. Log in to Vigilmon and click New Monitor → HTTP.
  2. Set URL to https://heimdall.yourdomain.com/.
  3. Set Check interval to 60 seconds.
  4. Set Expected status code to 200.
  5. Under Advanced → Keyword check, add:
    • Keyword present: Heimdall
  6. Save the monitor.

The Heimdall dashboard includes the application name in its HTML. If the Laravel/PHP backend fails to start, the SQLite database becomes unavailable, or the reverse proxy breaks, this check detects the failure immediately.

Vigilmon polls the dashboard every minute from multiple geographic regions — catching failures that might be isolated to specific regions or network paths.


Step 2: Monitor the Dashboard API Endpoint

Heimdall's Laravel backend exposes an API route that the dashboard frontend queries to populate application tiles. Monitoring this endpoint validates that PHP-FPM is processing requests, the SQLite database is readable, and application data is being served — not just that the static HTML is being returned by the web server.

curl https://heimdall.yourdomain.com/api/apps
# Expected: HTTP 200 with JSON array of application items

Set up the monitor:

  1. Add Monitor → HTTP.
  2. URL: https://heimdall.yourdomain.com/api/apps.
  3. Check interval: 5 minutes.
  4. Expected status: 200.
  5. Label: Heimdall Apps API.
  6. Click Save.

Note: Heimdall may require an authenticated session for API requests depending on your configuration. If the endpoint returns 302 (redirect to login), add a basic monitor on the root URL instead and rely on the keyword check in Step 1 to verify the backend is responding.


Step 3: Monitor HTTP Response Time

Heimdall is a simple PHP application; it should load in under a second on any reasonable hardware. If response time climbs above 2–3 seconds, it typically indicates underlying system pressure: high disk I/O, CPU contention from other containers, or a degraded SQLite database.

Configure response time alerting:

  1. Open your Heimdall web UI monitor in Vigilmon.
  2. Go to Advanced → Response Time.
  3. Set Alert when response time exceeds to 2000ms (2 seconds).
  4. Save.

Response time alerts give you early warning of system health issues before they cause outright failures. A dashboard that takes 5 seconds to load is functionally broken even if it returns HTTP 200.


Step 4: SSL Certificate Monitoring

Heimdall is typically served over HTTPS via Nginx, Caddy, or Traefik reverse proxy. An expired TLS certificate makes the dashboard inaccessible in every browser — you get a certificate warning wall before you can reach your services.

Vigilmon automatically monitors SSL certificate validity on all HTTPS monitors. Configure dedicated expiry alerts:

  1. Open your HTTPS Heimdall monitor in Vigilmon.
  2. Go to Settings → SSL.
  3. Enable Alert when certificate expires within 14 days.
  4. Optionally enable Alert when certificate expires within 30 days for early warning.

You'll receive alerts like:

⚠️  SSL Warning: heimdall.yourdomain.com
Certificate expires in 8 days (2026-07-12)

For Let's Encrypt via Certbot or Caddy: renewal failures are silent until browsers block access. Vigilmon catches this before your dashboard becomes unreachable.


Step 5: Application Link Availability Spot-Checks

Heimdall's value is the collection of application links it hosts. A tile can appear on the dashboard while the underlying service is down — Heimdall has no way to know that Jellyfin is returning 502 or that Nextcloud is in maintenance mode.

Monitor your most critical application links directly in Vigilmon alongside the Heimdall dashboard monitor. For each key service:

  1. Click New Monitor → HTTP in Vigilmon.
  2. Set URL to the application's external URL (e.g., https://jellyfin.yourdomain.com/health).
  3. Set Expected status code to 200.
  4. Add a relevant keyword check for that service.
  5. Save.

Group these monitors on a shared status page alongside Heimdall itself, so you have a single view of your homelab health — not just the dashboard, but the services it links to.

For services that load-check behind authentication, use the homepage URL with a keyword check rather than authenticated API calls:

| Application | Monitor URL | Keyword | |---|---|---| | Jellyfin | /health | Healthy | | Nextcloud | /status.php | installed | | Home Assistant | / | Home Assistant | | Sonarr | /ping | OK | | Portainer | /api/status | database |

Vigilmon checks each of these from multiple geographic regions, independently of Heimdall itself.


Step 6: Alert Channels

Go to Notifications → New Channel in Vigilmon and configure your preferred alert delivery:

  • Email — immediate alerts to your inbox
  • Webhook — forward to Discord, Slack, or ntfy.sh for push notifications on mobile

A Heimdall downtime alert in Discord looks like:

🔴 DOWN: heimdall.yourdomain.com (HTTP 502)
Heimdall dashboard unavailable
Region: EU-West
Triggered: 2026-01-15 19:43 UTC

Recovery notification:

✅ RECOVERED: heimdall.yourdomain.com
Downtime: 3 minutes

Step 7: Status Page

Go to Status Pages → New Status Page in Vigilmon. Add your Heimdall monitor alongside your application link monitors. Publish the status page and bookmark it — when Heimdall itself is down, the Vigilmon status page becomes your homelab health view.

Share the status page URL with household members so they know where to check service availability without bothering you.


What You've Built

| Scenario | How Vigilmon catches it | |---|---| | PHP/Laravel process crash | Dashboard returns non-200 or connection refused | | Reverse proxy (Nginx/Caddy) down | HTTPS monitor detects 502 or TLS error | | Database corruption or disk full | Dashboard keyword check fails; Apps API returns non-200 | | Apps API returns error | Apps API monitor fires; dashboard tiles may display incorrectly | | Slow response from system pressure | Response time alert fires above threshold | | Underlying application link broken | Per-service monitors detect application failure | | SSL certificate expired or expiring | SSL expiry alert triggers at threshold |


Self-hosting Heimdall gives you a clean entry point to your entire homelab — but without external monitoring, a crashed dashboard or expired certificate means navigating your services blind. Vigilmon watches from outside your network, from multiple regions, with no agents to install.

Start monitoring your Heimdall dashboard today — register free at vigilmon.online.

Monitor your app with Vigilmon

Free plan — 5 monitors, no credit card required. Up and running in 60 seconds.

Start free →