TL;DR — Quick Summary
Deploy Uptime Kuma for self-hosted uptime monitoring. Configure HTTP, TCP, and DNS checks, set up alert notifications via Slack, Telegram, and email, and create 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:
60seconds - 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
- Go to Status Pages → New Status Page.
- Name: “Company Services Status”
- Add monitors in groups (e.g., “Web Services”, “APIs”, “Databases”).
- Customize the logo, title, and description.
- 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.