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...
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.
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.
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
- Go to Status Pages in the sidebar
- Click "New Status Page"
- Set the slug (e.g., "public" for status.example.com/status/public)
- Add monitor groups (API, Website, Database, etc.)
- Assign monitors to groups
- Customize branding (logo, title, description, footer)
- 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:
- Go to Maintenance in the sidebar
- Set the time window (e.g., every Sunday 3-5 AM)
- Select affected monitors
- 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.
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 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].
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.
No spam. No contracts. Just a free demo.