Building a Status Page with Uptime Kuma: Complete Self-Hosted Guide

Deploy Uptime Kuma for self-hosted uptime monitoring and public status pages. Covers monitor types, notification integrations, maintenance windows, and...

Y
Yash Pritwani
11 min read

Why a Status Page?

Every professional service needs a status page. It reduces support tickets during outages, builds trust with customers, and gives your team a central view of system health. Services like Statuspage.io charge 29-399 dollars per month. Uptime Kuma does it for free.

Monitoring DashboardCPU Usage23%Memory6.2 GBRequests/s1.2KUptime99.9%Response Time (ms)

Real-time monitoring dashboard showing CPU, memory, request rate, and response time trends.

Deploying Uptime Kuma

services:
  uptime-kuma:
    image: louislam/uptime-kuma:latest
    container_name: uptime-kuma
    volumes:
      - uptime_kuma_data:/app/data
    ports:
      - "3001:3001"
    healthcheck:
      test: ["CMD", "node", "extra/healthcheck.js"]
      interval: 30s
      timeout: 10s
      retries: 3
    restart: unless-stopped
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.uptime.rule=Host(`status.example.com`)"
      - "traefik.http.services.uptime.loadbalancer.server.port=3001"

volumes:
  uptime_kuma_data:

First-time setup: visit your Uptime Kuma URL and create an admin account.

Monitor Types

HTTP/HTTPS Monitor

The most common type. Checks if a URL returns a successful status code:

  • URL: https://api.example.com/health
  • Method: GET
  • Expected Status: 200
  • Interval: 60 seconds
  • Retry: 3 times before alerting
  • Keyword: Optionally check response body for a specific string

TCP Port Monitor

Check if a port is open (database, Redis, custom services):

  • Host: db.example.com
  • Port: 5432
  • Interval: 60 seconds

Get more insights on Tutorials

Join 2,000+ engineers who get our weekly deep-dives. No spam, unsubscribe anytime.

Docker Container Monitor

Monitor containers directly via Docker socket:

# Add Docker socket to Uptime Kuma
volumes:
  - /var/run/docker.sock:/var/run/docker.sock:ro

Then add monitors for each container by name. This checks if the container is running and healthy.

DNS Monitor

Verify DNS records resolve correctly:

  • Hostname: api.example.com
  • DNS Server: 1.1.1.1
  • Expected Address: Match your expected IP

Other Monitor Types

Uptime Kuma also supports ping (ICMP), gRPC, MQTT, Redis, PostgreSQL, MySQL, MongoDB, and custom JSON queries.

ProductionWeb ServerApp ServerDatabaseMonitoringStagingWeb ServerApp ServerDatabaseVLANBackupStorage3-2-1 Rule

Server infrastructure: production and staging environments connected via VLAN with offsite backups.

Setting Up Notifications

Uptime Kuma supports 90+ notification providers. Here are the most useful:

Ntfy (Self-Hosted Push)

Type: Ntfy
Server URL: https://notify.example.com
Topic: ops-alerts
Priority: 5 (max)

Webhook (n8n / Custom)

Type: Webhook
URL: https://n8n.example.com/webhook/uptime-alert
Method: POST
Content-Type: application/json

Email (SMTP)

Type: SMTP
SMTP Host: smtp.example.com
SMTP Port: 587
Security: STARTTLS
From: [email protected]
To: [email protected]

Creating a Public Status Page

  1. Go to Status Pages in the sidebar
  2. Click "New Status Page"
  3. Set the slug (e.g., "public" for status.example.com/status/public)
  4. Add monitor groups (API, Website, Database, etc.)
  5. Assign monitors to groups
  6. Customize branding (logo, title, description, footer)
  7. Publish

The public status page shows real-time status, incident history, and uptime percentages — without requiring authentication.

Maintenance Windows

Schedule maintenance to prevent false alerts:

  1. Go to Maintenance in the sidebar
  2. Set the time window (e.g., every Sunday 3-5 AM)
  3. Select affected monitors
  4. During maintenance, the status page shows "Under Maintenance" instead of "Down"

API Access

Free Resource

Free Cloud Architecture Checklist

A 47-point checklist covering security, scalability, cost optimization, and disaster recovery for production cloud environments.

Download the Checklist

Uptime Kuma has a push-based API for custom monitors:

# Push heartbeat from a cron job or script
curl "https://status.example.com/api/push/YOUR-PUSH-TOKEN?status=up&msg=OK&ping=50"

# Report a failure
curl "https://status.example.com/api/push/YOUR-PUSH-TOKEN?status=down&msg=Backup%20failed"

This is perfect for monitoring cron jobs, backup scripts, and custom health checks.

Multi-Location Monitoring

For distributed monitoring, run Uptime Kuma on multiple servers and compare results. Alternatively, use the "Game" list type to show response times from different regions.

Cloud$5,000/moMigrateBare MetalDocker + LXC$200/mo96% cost reduction

Cloud to self-hosted migration can dramatically reduce infrastructure costs while maintaining full control.

Resource Usage

Uptime Kuma is remarkably lightweight:

  • RAM: ~100MB for 50+ monitors
  • Disk: ~50MB base + SQLite database
  • CPU: Negligible

At TechSaaS, we run Uptime Kuma at status.techsaas.cloud monitoring all 50+ services. It sends alerts to Ntfy within seconds of any issue. The public status page builds trust with our clients and reduces how are you doing support tickets to near zero.

Want a professional status page for your services? Contact [email protected].

#uptime-kuma#monitoring#status-page#self-hosted#devops

Related Service

Cloud Solutions

Let our experts help you build the right technology strategy for your business.

Need help with tutorials?

TechSaaS provides expert consulting and managed services for cloud infrastructure, DevOps, and AI/ML operations.

We Will Build You a Demo Site — For Free

Like it? Pay us. Do not like it? Walk away, zero complaints. You will spend way less than hiring developers or any agency.

47+ companies trusted us
99.99% uptime
< 48hr response

No spam. No contracts. Just a free demo.