Case study

Applegate Monitor — Know Before Your Users Do

Self-hosted Source-available Free for personal use Multi-tenant Omada SDN

10

Built-in check types

Branded status pages

SSE

Real-time updates

0

Monthly fees

What is Applegate Monitor?

Applegate Monitor gives you a clear, real-time picture of every service you run, from websites and mail servers to DNS, VPN endpoints, IoT devices and network gear, all from a single deployment. No SaaS. No monthly fees. Your data on your server.

One install serves unlimited branded status pages, each with its own logo, colour scheme, slug and even a custom domain. Whether you run a homelab, a small-business network or infrastructure for multiple clients, it is designed to alert you before your customers do.

Engineering deep dive: the architecture, tenancy model and design decisions behind this product are covered in the Status Server case study.

What’s new in v3.4.0

  • v3.4.0 · Simplified back to single serverThe HA and auto-failover feature was fully removed. Its operational cost, bidirectional MariaDB replication, a promote webhook, a split-brain guard and a Cloudflare Load Balancer, was out of proportion for a self-hosted monitor. Core behaviour is identical: no migration, no config changes, no downtime to upgrade.
  • v3.3.5 · Semver version check fixThe admin UI no longer flags a newer local build as “update available”. Proper numeric semver comparison, plus auto-detection of Portainer-managed containers in the promote script.
  • v3.3.2 · GET /health endpointAn unauthenticated liveness probe returning database reachability, poll-loop freshness, uptime and server count. Returns 200 or 503, compatible with Cloudflare LB, AWS ALB and any HTTP uptime monitor.
  • v3.3.1 · Security patchReDoS-safe subscribe endpoint, API key names HTML-escaped, and key storage upgraded to HMAC-SHA256.

Read the full release notes →

Built-in check types

Every server can run one or more checks at the same time. All checks record response time per poll, so you can spot degradation before it becomes downtime.

ICMP ping

Classic ping with round-trip latency, the fastest way to confirm a host is reachable.

TCP / UDP ports

Raw port probes for custom services, databases or WireGuard endpoints such as UDP 51820.

HTTP / HTTPS

Status-code validation, response time, SSL certificate tracking and optional keyword body match.

DNS record

Resolves A, AAAA, CNAME, MX, TXT or NS records with optional expected-value assertions.

TLS certificate

Direct certificate-expiry monitoring with a configurable warning threshold.

Omada gateway

Live WAN status, link speed, uptime and WAN IP from TP-Link Omada SDN controllers via Open API v6.

Omada LTE

Cellular backup WAN monitoring on Omada gateways, so you know when failover is live.

Omada devices

Individual access points and switches by MAC address, tracking connectivity and health across the fabric.

Square POS

Square locations for active status and online device count, with credentials stored once and referenced by ID.

Script

Administrator-only command check; the exit code decides health.

Multi-tenant branded dashboards

This is where Applegate Monitor stands apart from typical uptime tools. From a single deployment you can spin up unlimited branded status pages, each with its own logo, accent colour, background, subtitle, slug and even a fully custom domain.

Viewers assigned to a dashboard see only the servers in their group. Other dashboards, and the servers on them, are completely invisible. Admins see a master view across every group.

/dashboard/anthem · Anthem Coffee

Tacoma POS, Puyallup Wi-Fi, Point Ruston LTE

/dashboard/homelab · Homelab

NAS, Plex, WireGuard

status.clientco.com · custom domain

API, Mail, CDN

Add a custom domain to a group and point DNS at your server. The app reads the Host header and serves the correctly branded dashboard automatically.

Platform features

Real-time updates (SSE)

Server-Sent Events push live status changes to every open browser. No polling, no refresh.

Webhook alerts

Discord, Slack, Teams, Telegram, Pushover, email or generic JSON, auto-detected from the URL, with a test button.

SSL cert tracking

Automatic TLS expiry detection on every HTTPS check, with days remaining on the server detail view.

Uptime history

24 h, 7 d and 30 d uptime percentages, a 24-hour response-time chart and a 90-check heartbeat bar.

Role-based access

Admin and viewer roles with per-group scoping. Viewers edit their own servers but never see others.

Dark mode UI

A clean, focused dark interface tested on iOS, Android and desktop.

Admin audit log

Every admin action is recorded with timestamp, identity and IP, filterable with pagination.

Backup and restore

Single-transaction MariaDB dumps with gzip and auto-pruning, plus a confirmation-gated restore.

Google OAuth login

Sign in with Google, with CSRF protection. Local login remains available.

User profiles

Name and email on every account, managed from the user administration panel.

Dashboard sub-sections

Two-level sections with collapsible headings for clean, scalable dashboards.

Server search

Live filtering by name, host, section, sub-section or description.

Collapsible groups

Collapse or expand group headers; the preference persists across reloads.

Heartbeat incident modal

Click any red heartbeat to see matching incidents within a ±90-second window.

Server descriptions

Context shown on the dashboard card and in the admin sidebar.

Mobile navigation

The top bar collapses into a dropdown at 1100 px and below.

Proxy-aware routing

Custom-domain routing works behind Cloudflare Tunnel, Caddy, nginx and other proxies.

Per-dashboard credentials

Share Square accounts with specific dashboards via an allowed-dashboards selector.

HTTP keyword body check

Assert that a response contains or does not contain a string, catching maintenance pages that return 200.

Per-server runbooks

Attach a Markdown runbook to any server; it appears in the detail panel during an incident.

Weekly uptime report

An automated summary email every Monday at 09:00 UTC, with a manual send button in the admin panel.

Embeddable status badges

Drop live SVG badges into READMEs, docs or internal dashboards. No third-party service, no rate limits, no sign-up. Badge URLs are generated inside the server edit form.

# Available badges:
/api/badge/:id/status                 # Up / Down / Degraded
/api/badge/:id/uptime?duration=24h    # Uptime % (24h, 7d, 30d)
/api/badge/:id/ping                   # Latest response time
/api/badge/:id/cert-exp               # SSL certificate expiry

Colour thresholds are sensible out of the box, green at 99% uptime or better, yellow at 95%, red below, and every parameter is overridable via query string.

Who is it for?

Most people only find out their website went down when a friend texts them, or worse, when a customer complains. Downtime costs trust, and trust is hard to rebuild. Applegate Monitor flips that: you get the alert, you investigate, and you fix it before it becomes a headline.

Homelab enthusiasts

Self-host alongside your Docker stack and get one consolidated status view for NAS, media, VPN and reverse proxy.

IT professionals and MSPs

One deployment, one login per client, perfectly isolated dashboards. No SaaS dependency, no per-seat pricing.

Small businesses

The licence is non-commercial by default, but businesses are welcome to reach out. Custom licensing arrangements are available.

Community and tinkerers

Source is available on GitHub for personal study and homelab use. Bug reports and feature ideas are welcome.

Unique feature: Applegate Monitor is one of very few status tools with built-in TP-Link Omada SDN support, surfacing live WAN status, link speed, uptime and cellular LTE failover health directly in your dashboard.

Getting started

Deploy on any Linux host with Docker. A MariaDB container, a session secret and a reverse proxy, Caddy recommended, are all you need.

# Requirements: Docker + Docker Compose. MariaDB runs as a container.

# 1. Clone the repo
git clone https://github.com/X4Applegate/status-server
cd status-server

# 2. Configure your deployment
cp docker-compose.example.yml docker-compose.yml
# Edit docker-compose.yml: DB credentials, SESSION_SECRET, TZ

# 3. Launch
docker compose up -d --build

# 4. Open http://your-server:3000 and create your admin account

On first visit you are prompted to create the admin account. Then create a dashboard, add your servers and share the dashboard URL with viewers. The full setup guide is in the README.

Licensing and AI assistance

Licence

Source-available. You can view, study and run it on your own hardware for personal and homelab use, and audit every line before deploying. Commercial use, redistribution and modification require prior written permission. Businesses and contributors who want to deploy, fork or collaborate should reach out first; custom licensing, partnerships and community contributions are welcome when discussed. The goal is to help the community, not to build walls.

AI assistance

Designed, built and maintained by Richard Applegate. Claude by Anthropic is used as a coding assistant for bug fixes, feature improvements, security hardening and code changes. It did not create this project; all product decisions, architecture and direction are the author’s.