Uptime Kuma
Easy self-hosted uptime monitoring tool
Uptime Kuma is a self-hosted monitoring tool that checks the availability of websites, services, and APIs with a clean dashboard. It targets users who want a simple, attractive status monitor. It is deployed via Docker as a single container.
Uptime Kuma setup guides & articles
Hands-on coverage of Uptime Kuma from the blog.
Self-Hosted Status Pages That Calm People Down
Uptime Kuma vs Gatus for self-hosted status pages, why the page must live off your own infrastructure, and incident notes that stop the messages.
Self-Hosting GuidesMonitoring Your Homelab: From Uptime Kuma to Full Observability
Homelab monitoring in three tiers — Uptime Kuma running off-box, Prometheus and Grafana when you need the why, and alert rules that never cry wolf.
Self-Hosting GuidesSelf-Hosting 101: Your First Server, Start to Finish
The complete beginner path — what hardware to buy, which OS to install, your first three apps in Docker, and the backup habit that saves you later.
Key features
- Monitors HTTP, TCP, DNS and more
- Beautiful dashboard and status pages
- 90+ notification integrations
- Single-container deployment
Quick deploy
A starting point for self-hosting Uptime Kuma - check the official docs for the full set of options.
- Image
louislam/uptime-kuma:1 - Web port
3001 - Persist
/app/data
Docker Compose
services:
uptime-kuma:
image: louislam/uptime-kuma:1
ports:
- "3001:3001"
volumes:
- ./data:/app/data
restart: unless-stoppeddocker run
docker run -d --name uptime-kuma \
-p 3001:3001 \
-v ./data:/app/data \
--restart unless-stopped \
louislam/uptime-kuma:1Watch out for
- All state lives in /app/data (SQLite) - that one folder is your backup
Reverse proxy: Needs websocket pass-through - the whole UI is a live socket connection.
Pros & cons
Strengths
- Very easy to use
- Great notifications
- Lightweight
Trade-offs
- Single instance, no clustering
- Not for deep metrics
Uptime Kuma replaces
Last reviewed Aug 22, 2026 · 739 words
Uptime Kuma is the easiest win in self-hosted monitoring: one container, 256 MB of RAM, and fifteen minutes from docker compose up to a dashboard that pings everything you run and messages you when something dies. The tool needs almost no guide. What needs a guide is monitoring strategy — where to run it, what to check, and how to send alerts you will still be reading in six months.
The one rule: don't monitor a box from itself
An Uptime Kuma instance on your main server reports beautifully on everything except the failure you care about most — that server going down, taking the monitor with it. Run it on a different device from the things it watches: the spare Raspberry Pi, a $4/month VPS, the NAS if your services live on a mini PC. The VPS option has a second virtue: it sees your services the way the outside world does, so it catches your ISP, your router, and your reverse proxy, not just your containers. Can't spare a second box? Add a heartbeat-style dead-man check from a free external service so at least "the whole thing is offline" reaches you. The full architecture discussion is in homelab monitoring that works.
Check the service, not the port
Kuma's monitor types form a ladder of usefulness, and most people stop a rung too low:
- Ping proves the machine is powered on. That's all.
- TCP port proves something is listening. A hung app still listens.
- HTTP(S) proves the web server responds. A 200 from an error page passes.
- HTTP with keyword proves the app actually works: check
/loginfor the word "password", or an API health endpoint for"status":"ok". This is the rung to stand on.
Add the specialised types where they fit: DNS checks against your Pi-hole, and certificate-expiry warnings (set to 14 days) on every HTTPS monitor — silent cert expiry is the classic homelab outage. Docker-container monitors are handy but remember they only work where Kuma can reach the Docker socket.
Notifications: one urgent channel, one quiet one
Kuma supports 90+ notification services, which is how people end up with alerts they've learned to ignore. Two channels are enough. Urgent (a push service like ntfy, Pushover, or Telegram): things needing action today — the server is down, a cert expires this week. Quiet (email): everything else. Set retries to 2–3 before a monitor counts as down, so a single dropped packet at 3 a.m. doesn't page you; 60-second intervals with 3 retries means real outages alert within about four minutes, which is the right trade for a homelab. Send a test notification from each channel now, not during your first outage.
Status pages are the underrated feature
Kuma builds public status pages — pick monitors, get a clean page at /status/home you can share. If other people use your services, this converts "is Jellyfin down?" messages into a link. One caution: a status page reveals your internal service names to anyone who can reach it, so if the Kuma instance is internet-facing, keep the page to services those visitors already know exist. More patterns in self-hosted status pages.
Operations notes
Everything — monitors, history, notification configs — lives in one SQLite database in /app/data, so backup means copying one folder (stop the container or use sqlite3 .backup for consistency, per the 3-2-1 rules). Put it behind a reverse proxy with websocket pass-through enabled, because the whole UI is a live socket connection and without it you get a blank page. And know the ceiling: Kuma is single-instance by design, with no clustering and no long-term metrics. Around 50–100 monitors it remains happy; if you want query languages, dashboards, and retention policies, that's Prometheus and Grafana territory, and Kuma still earns its keep alongside them as the simple is-it-up layer.
What I'd do
Kuma on a Pi or cheap VPS, keyword-based HTTP checks on every user-facing service, DNS and cert-expiry monitors, ntfy for urgent plus email for quiet, retries at 3, and a status page for the household. Then stop. The entire point of Uptime Kuma is that monitoring stopped being a project — don't turn it back into one.
Compare Uptime Kuma
16 head-to-head comparisons.
- Uptime Kuma vs Beszel
- Uptime Kuma vs Upptime
- Uptime Kuma vs Gatus
- Uptime Kuma vs Checkmate
- Uptime Kuma vs Healthchecks
- Uptime Kuma vs OpenStatus
- Uptime Kuma vs Statping
- Uptime Kuma vs Blackbox Exporter
- Uptime Kuma vs PHP Server Monitor
- Uptime Kuma vs Statping-ng
- Uptime Kuma vs Vigil
- Uptime Kuma vs Peekaping
- Uptime Kuma vs Cloudprober
- Uptime Kuma vs Monika
- Uptime Kuma vs Bytebot Watch
- Uptime Kuma vs Lunalytics
Similar monitoring & status apps
Netdata
Monitoring & StatusReal-time per-second infrastructure monitoring
Replaces Datadog, New Relic
Grafana
Monitoring & StatusOpen observability dashboards and visualization
Replaces Datadog
Prometheus
Monitoring & StatusMetrics-based monitoring and alerting toolkit
Replaces Datadog
Glances
Monitoring & StatusCross-platform system monitoring at a glance
Replaces Datadog
InfluxDB
Monitoring & StatusPurpose-built time series database for metrics and events
Replaces Datadog, AWS Timestream
Grafana k6
Monitoring & StatusDeveloper-friendly load testing and performance tool
Replaces LoadRunner, BlazeMeter