← All articles
MONITORING Uptime Kuma: Self-Hosted Uptime Monitoring and Statu... 2026-02-09 · uptime-kuma · monitoring · status-page

Uptime Kuma: Self-Hosted Uptime Monitoring and Status Pages

Monitoring 2026-02-09 uptime-kuma monitoring status-page availability

Uptime Kuma is a self-hosted monitoring tool that checks whether your services are up and creates beautiful status pages. It's the open-source alternative to services like UptimeRobot, Pingdom, or Better Stack — with more features, better looks, and no monthly subscription.

Why Uptime Kuma?

Compared to hosted monitoring services:

Compared to other self-hosted options (Gatus, Statping):

Installation

# docker-compose.yml
services:
  uptime-kuma:
    image: louislam/uptime-kuma:1
    container_name: uptime-kuma
    ports:
      - "3001:3001"
    volumes:
      - uptime_data:/app/data
    restart: unless-stopped

volumes:
  uptime_data:
docker compose up -d

Access at http://your-server:3001. Set up your admin account on first launch.

Monitor Types

HTTP(S)

The most common type. Sends an HTTP request and checks the response:

TCP Port

Checks if a TCP port is open. Useful for:

Ping (ICMP)

Basic reachability check. Good for:

DNS

Verifies DNS resolution:

Docker Container

Monitors Docker container status directly (requires Docker socket access):

volumes:
  - /var/run/docker.sock:/var/run/docker.sock:ro

Checks if a specific container is running. Faster than HTTP checks and works for services without a web interface.

Other Types

Notification Channels

Uptime Kuma supports 90+ notification services:

Self-Hosted Friendly

Popular Services

Webhook

Generic webhook support for custom integrations:

{
    "heartbeat": {
        "status": 0,
        "time": "2026-02-09 12:00:00",
        "msg": "Connection refused",
        "ping": null
    },
    "monitor": {
        "name": "My Service",
        "url": "https://myservice.example.com"
    }
}

Status Pages

Status pages are Uptime Kuma's standout feature. Create public-facing pages that show your services' current status and incident history.

Setting Up a Status Page

  1. Go to Status Pages in the sidebar
  2. Click New Status Page
  3. Configure:
    • Title — "My Services Status"
    • Slug — URL path (/status/my-services)
    • Description — Optional description
    • Custom CSS — Brand your status page
  4. Add monitor groups — organize services into logical sections
  5. Publish — the page is accessible without login

Custom Domain

Put the status page behind a reverse proxy with a custom domain:

# Caddy
status.yourdomain.com {
    reverse_proxy uptime-kuma:3001
}

Incident Management

Post incidents directly on your status page:

  1. Click Create Incident on the status page
  2. Set the title, content (markdown), and style (info/warning/danger/primary)
  3. The incident appears on the public status page
  4. Update or resolve it as the situation changes

Maintenance Windows

Schedule maintenance to suppress false alerts:

  1. Go to Maintenance in the sidebar
  2. Create a maintenance window with:
    • Title — "Server updates"
    • Schedule — One-time or recurring (cron expression)
    • Duration — How long the maintenance lasts
    • Affected monitors — Which monitors to silence
  3. During maintenance, affected monitors show "Maintenance" instead of "Down"
  4. Status pages show the maintenance banner

Configuration Tips

Heartbeat Interval

Default is 60 seconds. Adjust based on your needs:

Retry Logic

Configure retries before alerting:

Set retries to 2-3 for services that occasionally have brief hiccups. This reduces false alerts significantly.

Certificate Expiry Monitoring

For HTTPS monitors, enable certificate expiry notifications:

Tags

Tag monitors for organization:

Tags are visible in the dashboard and can be filtered.

Uptime Kuma vs Gatus vs Statping

Feature Uptime Kuma Gatus Statping-ng
UI Beautiful web UI Minimal Good
Configuration Web UI YAML Web UI
Status pages Built-in (excellent) Built-in Built-in
Monitor types 15+ HTTP, TCP, DNS, ICMP HTTP, TCP, ICMP
Notifications 90+ services 10+ services 10+ services
Docker monitoring Yes No No
Maintenance windows Yes No No
API Yes Yes Yes
Resource usage ~150 MB RAM ~30 MB RAM ~100 MB RAM
Configuration as code No (UI only) Yes (YAML) No

Choose Uptime Kuma When

Choose Gatus When

Backup

Uptime Kuma stores everything in a SQLite database. To back up:

# Stop Kuma briefly for a consistent backup
docker compose stop uptime-kuma
cp /path/to/uptime_data/kuma.db /backup/kuma-$(date +%F).db
docker compose start uptime-kuma

Or use the built-in backup feature (Settings → Backup).

Verdict

Uptime Kuma is the best self-hosted uptime monitor available today. The UI is polished enough that non-technical users can understand the dashboard, the status pages look professional enough for customer-facing use, and the notification support covers every possible channel.

The only downside is that configuration is UI-only — you can't define monitors in a YAML file and deploy them with infrastructure-as-code. If that's important to you, look at Gatus. For everyone else, Uptime Kuma is the clear choice. Install it, add your services, set up a status page, and you'll wonder how you managed without it.