TL;DR — Quick Summary

Deploy Uptime Kuma for self-hosted uptime monitoring. HTTP, TCP, and DNS checks, alerts via Slack, Telegram, and email, and public status pages.

Why Uptime Kuma?

Paid services like UptimeRobot and Pingdom charge per monitor. Uptime Kuma gives you:

  • Unlimited monitors — Check hundreds of services for free.
  • 90+ notification channels — Slack, Telegram, Discord, email, PagerDuty, and more.
  • Public status pages — Professional branded pages for your users.
  • SSL certificate monitoring — Get alerted days before certificates expire.
  • Beautiful UI — Modern, responsive dashboard.

Prerequisites

  • Docker installed on any Linux server.
  • At least 256 MB RAM.
  • Port 3001 open.

Step 1: Deploy with Docker

docker run -d \
  --restart=always \
  -p 3001:3001 \
  -v uptime-kuma:/app/data \
  --name uptime-kuma \
  louislam/uptime-kuma:latest

Access at http://your-server:3001. Create an admin account on first visit.


Step 2: Add Monitors

Click Add New Monitor and choose a type:

Monitor Type Use Case
HTTP(S) Check website availability and response codes
TCP Port Verify a service is listening (e.g., MySQL 3306)
Ping Basic ICMP reachability check
DNS Verify DNS resolution returns expected records
Docker Container Check if a container is running (via Docker socket)
SSL Certificate Alert before certificate expiration

Example: HTTP Monitor

  • URL: https://example.com
  • Heartbeat Interval: 60 seconds
  • Retries: 3 (avoids false positives from brief network blips)
  • Accepted Status Codes: 200-299
  • Keyword: (Optional) Check that the page contains a specific string.

Step 3: Configure Notifications

Go to Settings → Notifications → Setup Notification.

Slack: Paste a Slack Incoming Webhook URL.
Telegram: Enter your Bot Token and Chat ID.
Email (SMTP): Enter SMTP server, port, username, password, from/to addresses.

Then on each monitor, toggle which notifications should fire.


Step 4: Create a Status Page

  1. Go to Status Pages → New Status Page.
  2. Name: “Company Services Status”
  3. Add monitors in groups (e.g., “Web Services”, “APIs”, “Databases”).
  4. Customize the logo, title, and description.
  5. Share the status page URL with your team or customers.

Troubleshooting

Problem Solution
False positive alerts Increase “Retries” to 3-5; increase heartbeat interval
Notifications not arriving Test the notification in Settings; check webhook URL or SMTP credentials
High memory usage Reduce the number of monitors or increase check interval
Can’t monitor internal services Uptime Kuma must be on the same network or have VPN access to private services
Status page not loading Verify the container is running: docker ps; check port 3001 is mapped

Summary

  • Deploy with a single Docker command — no dependencies.
  • Monitor HTTP, TCP, DNS, ping, Docker containers, and SSL certs.
  • Send alerts to 90+ services including Slack, Telegram, and email.
  • Create public status pages for customer-facing uptime transparency.