What is Uptime Kuma

Uptime Kuma is a free, self-hosted uptime monitoring tool. It monitors HTTP(s), TCP, Ping, DNS, and more — with a beautiful dashboard and multi-channel notifications.

Docker Compose Deployment

# docker-compose.yml
version: '3.8'
services:
  uptime-kuma:
    image: louislam/uptime-kuma:latest
    container_name: uptime-kuma
    ports:
      - "127.0.0.1:3001:3001"
    volumes:
      - ./uptime-kuma-data:/app/data
    restart: unless-stopped

Nginx Reverse Proxy

# /etc/nginx/sites-available/status.example.com
server {
    listen 443 ssl http2;
    server_name status.example.com;

    ssl_certificate /etc/letsencrypt/live/status.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/status.example.com/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:3001;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Quick Deploy Script

#!/bin/bash
# deploy-uptime-kuma.sh

# 1. Create directory
mkdir -p /opt/uptime-kuma && cd /opt/uptime-kuma

# 2. Create docker-compose.yml (paste the YAML above)
nano docker-compose.yml

# 3. Start container
docker-compose up -d

# 4. Verify
docker-compose ps
docker-compose logs -f

echo "Access at http://your-server:3001"
echo "Set up Nginx reverse proxy for HTTPS access"

First-Time Setup

  1. Visit http://your-server:3001 (or your domain if using Nginx)
  2. Create admin account
  3. Click Add Monitor → choose monitor type
  4. Enter your website URL and check interval
  5. Configure notification (Telegram, Email, Slack, etc.)

Notification Setup Examples

Telegram

1. Create a bot via @BotFather on Telegram
2. Get Bot Token and Chat ID
3. In Uptime Kuma: Settings → Notifications → Add → Telegram
4. Enter Bot Token and Chat ID → Test

Email (SMTP)

1. Settings → Notifications → Add → SMTP
2. Enter SMTP server, port, username, password
3. Use TLS for security
4. Send test email to verify

Features

  • ✅ HTTP(s), TCP, Ping, DNS, DNSBL monitoring
  • ✅ Real-time status dashboard
  • ✅ Public status page
  • ✅ 90+ notification services (Telegram, Slack, Discord, Email, etc.)
  • SSL certificate expiry monitoring
  • ✅ Maintenance windows
  • ✅ API for integration