Self-Host Uptime Kuma: Beautiful Open-Source Uptime Monitoring
What is Uptime Kuma?
Uptime Kuma is a beautiful, easy-to-use self-hosted uptime monitoring solution that provides real-time monitoring for websites, APIs, servers, and services. This open-source alternative to commercial monitoring services like Pingdom, UptimeRobot, and StatusCake offers comprehensive monitoring capabilities with an intuitive interface and powerful notification system. Perfect for businesses and developers who want reliable uptime monitoring without monthly subscription costs.
Key Features of Uptime Kuma
🚨 Comprehensive Monitoring
- HTTP/HTTPS Monitoring: Monitor websites and APIs with response time tracking
- TCP Port Monitoring: Check server ports and services availability
- Ping Monitoring: ICMP ping monitoring for network connectivity
- DNS Record Monitoring: Monitor DNS resolution and record changes
- Docker Container Monitoring: Track Docker container health and status
- Steam Game Server: Monitor gaming servers and services
- Push Monitoring: Receive status updates via webhook push notifications
📊 Advanced Monitoring Features
- Keyword Monitoring: Check for specific content or keywords on web pages
- JSON Query Monitoring: Monitor API responses and validate JSON data
- Certificate Monitoring: SSL/TLS certificate expiration tracking and alerts
- Response Time Tracking: Detailed response time graphs and statistics
- Custom Headers: Send custom HTTP headers with monitoring requests
- Proxy Support: Monitor through HTTP/HTTPS/SOCKS proxies
🔔 Powerful Notification System
- 90+ Notification Channels: Telegram, Discord, Slack, Email, Webhooks, and more
- Multiple Recipients: Send alerts to different teams and individuals
- Custom Alert Rules: Configure when and how notifications are sent
- Escalation Policies: Define escalation paths for critical issues
- Maintenance Windows: Schedule maintenance periods to suppress alerts
🎨 Beautiful User Interface
- Modern Dashboard: Clean, reactive interface with real-time updates
- Mobile Responsive: Full functionality on mobile devices and tablets
- Dark/Light Themes: Customizable appearance with theme support
- Multi-Language: Support for 20+ languages and localization
- Custom Branding: Personalize status pages with your brand colors and logos
📈 Status Pages & Reporting
- Public Status Pages: Share service status with customers and users
- Custom Domains: Map status pages to your own domains
- Incident Management: Track and communicate service incidents
- Historical Data: Long-term uptime statistics and reporting
- SLA Reporting: Calculate and display service level agreements
Why Choose Uptime Kuma Over Commercial Alternatives?
Uptime Kuma vs Pingdom ($10-135/month)
Feature | Uptime Kuma (Self-Hosted) | Pingdom |
---|---|---|
Monthly Cost | Free & Open Source | $10-135/month |
Monitor Limits | ✅ Unlimited | ❌ Limited by Plan |
Data Retention | ✅ Unlimited | ❌ 1-2 Years Max |
Custom Status Pages | ✅ Unlimited | ❌ Limited/Extra Cost |
API Access | ✅ Full API | ❌ Limited by Plan |
Data Privacy | ✅ Complete Control | ❌ Third-Party Servers |
Uptime Kuma vs UptimeRobot ($7-225/month)
- Cost Scaling: Free unlimited monitors vs per-monitor pricing
- Customization: Full control over interface and notifications vs platform limitations
- Data Ownership: Self-hosted data vs cloud dependency
- Advanced Features: Custom monitoring intervals vs restricted options
Uptime Kuma vs StatusCake ($24.99-399/month)
- Setup Cost: One-time deployment vs ongoing subscription fees
- Notification Channels: 90+ built-in integrations vs limited options
- Geographic Monitoring: Deploy multiple instances vs expensive geo-distribution
- White-Label: Custom branding included vs premium feature
Quick Deployment Options
Option 1: Docker One-Command Deploy (Recommended)
Perfect for quick setup with persistent data storage.
# Quick start with Docker
docker run -d \
--restart=unless-stopped \
-p 3001:3001 \
-v uptime-kuma:/app/data \
--name uptime-kuma \
louislam/uptime-kuma:1
# Access Uptime Kuma at http://localhost:3001
Option 2: Docker Compose Production Setup
Ideal for production deployments with reverse proxy and SSL.
version: '3.8'
services:
uptime-kuma:
image: louislam/uptime-kuma:1
container_name: uptime-kuma
restart: unless-stopped
ports:
- "3001:3001"
volumes:
- uptime-kuma-data:/app/data
environment:
- TZ=UTC
- NODE_ENV=production
nginx:
image: nginx:alpine
container_name: uptime-kuma-nginx
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- ./ssl:/etc/nginx/ssl
depends_on:
- uptime-kuma
volumes:
uptime-kuma-data:
Option 3: Manual Installation
For advanced users wanting maximum control and customization.
# Prerequisites: Node.js 18+, npm/pnpm
git clone https://github.com/louislam/uptime-kuma.git
cd uptime-kuma
# Install dependencies
npm install
# Build the application
npm run build
# Start Uptime Kuma
npm start
# Access at http://localhost:3001
Getting Started with Uptime Kuma
Initial Setup Process
- Deploy Instance: Choose your preferred deployment method above
- Access Interface: Navigate to your Uptime Kuma URL (default: http://localhost:3001)
- Create Admin Account: Set up the first administrator account
- Configure Settings: Set up basic preferences and notification defaults
- Add First Monitor: Create your first monitoring check
Essential Configuration Steps
- Notification Setup: Configure primary notification channels (email, Slack, etc.)
- Monitor Creation: Set up monitors for critical services and websites
- Status Page: Create public status page for customer communication
- Backup Configuration: Set up regular database backups
- SSL Certificate: Configure HTTPS for secure access
Monitor Configuration Best Practices
# Website monitoring example
Monitor Type: HTTP(s)
URL: https://example.com
Check Interval: 60 seconds
Request Timeout: 10 seconds
Max Redirects: 10
Accepted Status Codes: 200-299
# API monitoring with JSON validation
Monitor Type: HTTP(s) - JSON Query
URL: https://api.example.com/health
JSON Path: $.status
Expected Value: "healthy"
Popular Use Cases
Business Website Monitoring
- E-commerce Sites: Monitor product pages, checkout processes, and payment systems
- Corporate Websites: Track main site, landing pages, and contact forms
- Marketing Campaigns: Monitor campaign landing pages and conversion funnels
- Multi-Site Management: Track multiple websites from single dashboard
API & Service Monitoring
- REST API Monitoring: Track API endpoints, response times, and data validation
- Database Connectivity: Monitor database connections and query performance
- Microservices: Track distributed system components and service dependencies
- Third-Party Integrations: Monitor external services and vendor APIs
Infrastructure Monitoring
- Server Health: Monitor server response times and availability
- Network Services: Track DNS, email servers, and network connectivity
- Cloud Resources: Monitor cloud instances, load balancers, and CDNs
- Development Environments: Track staging, testing, and development servers
Team & Customer Communication
- Public Status Pages: Communicate service status to customers and users
- Internal Dashboards: Provide operations teams with real-time service visibility
- Incident Response: Coordinate incident response with automated notifications
- SLA Reporting: Track and report on service level agreements
Advanced Features & Configuration
Notification Configuration
# Slack notification example
{
"webhook_url": "https://hooks.slack.com/services/...",
"channel": "#alerts",
"username": "Uptime Kuma",
"icon_emoji": ":warning:",
"mention": "@here"
}
# Email notification setup
SMTP Host: smtp.gmail.com
SMTP Port: 587
Security: STARTTLS
Username: your-email@gmail.com
Password: app-password
From Email: alerts@yourcompany.com
To Email: team@yourcompany.com
Status Page Customization
/* Custom CSS for status pages */
.bg-primary {
background-color: #your-brand-color !important;
}
.status-page-header {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
}
.incident-item {
border-left: 4px solid #your-accent-color;
}
API Integration
# Get monitor status via API
curl -X GET "http://your-uptime-kuma.com/api/status-page/default" \
-H "Content-Type: application/json"
# Create monitor via API (requires authentication)
curl -X POST "http://your-uptime-kuma.com/api/monitor" \
-H "Authorization: Bearer your-api-token" \
-H "Content-Type: application/json" \
-d '{
"name": "Example Website",
"type": "http",
"url": "https://example.com",
"interval": 60
}'
Uptime Kuma Community & Support
- GitHub Repository: 56,000+ stars with active open-source development
- Community Support: GitHub discussions and issue tracking
- Documentation: Comprehensive setup and configuration guides
- Regular Updates: Frequent releases with new features and improvements
- Contributor Friendly: Welcoming community for new contributors
Migration & Implementation Guide
From Pingdom
- Monitor Export: Document existing monitors and notification settings
- Uptime Kuma Setup: Deploy and configure your self-hosted instance
- Monitor Recreation: Recreate monitors with equivalent settings
- Notification Migration: Set up notification channels with same recipients
- Status Page: Create public status page to replace Pingdom's offering
From UptimeRobot
- Configuration Backup: Export current monitor configurations
- Data Analysis: Review historical uptime data for baseline metrics
- Monitor Import: Manually recreate monitors in Uptime Kuma
- Alert Testing: Verify all notification channels work correctly
- Documentation Update: Update runbooks with new monitoring URLs
Transform your infrastructure monitoring with Uptime Kuma - the beautiful, powerful, and cost-effective alternative to expensive commercial monitoring services.