10
Built-in check types
∞
Branded status pages
SSE
Real-time updates
0
Monthly fees
In this case study
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.
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.
Richard Applegate