Uptime Kuma Status Page
Self-hosted monitoring with beautiful status pages.
Overview
Uptime Kuma is a self-hosted monitoring solution that serves as an open-source alternative to services like Uptime Robot and StatusCake. Originally created by Louis Lam in 2021, it has rapidly gained popularity among developers and system administrators who want complete control over their monitoring infrastructure without subscription fees or usage limits. The tool provides comprehensive monitoring capabilities for websites, APIs, servers, and services through multiple check types including HTTP/HTTPS, TCP, ping, DNS lookups, and even Docker container health monitoring.
This deployment pairs Uptime Kuma with NGINX to create a production-ready monitoring platform with enhanced performance and flexibility. NGINX acts as a reverse proxy, handling SSL termination, request routing, and static asset delivery while Uptime Kuma focuses on monitoring tasks and status page generation. This combination allows for better scalability, improved security through proxy isolation, and the ability to serve multiple domains or implement custom routing rules for different status pages.
This stack is ideal for businesses wanting to provide transparent service status to customers, development teams monitoring internal services, and homelab enthusiasts tracking their self-hosted applications. Unlike cloud-based alternatives, this setup offers unlimited monitors, complete data ownership, and the ability to customize both the monitoring logic and presentation layer to match specific organizational needs.
Key Features
- Multiple monitor types supporting HTTP/HTTPS, TCP port checks, ping tests, DNS resolution, and Docker container health monitoring
- Beautiful, customizable status pages with real-time updates and incident history for public or private visibility
- Integration with 90+ notification services including Discord, Slack, email, webhooks, and mobile push notifications
- Certificate expiry monitoring with configurable alerts for SSL/TLS certificates
- Two-factor authentication and user management for secure access control
- Proxy support for monitoring services behind firewalls or in restricted networks
- Multi-language interface supporting dozens of languages for international teams
- NGINX reverse proxy providing SSL termination, caching, and improved security isolation
Common Use Cases
- 1SaaS companies providing public status pages to communicate service availability to customers during outages
- 2Development teams monitoring internal APIs, databases, and microservices across staging and production environments
- 3Managed service providers tracking client infrastructure and automatically generating availability reports
- 4E-commerce businesses monitoring critical payment gateways, CDN endpoints, and third-party integrations
- 5Homelab enthusiasts tracking self-hosted applications like Plex, Home Assistant, and NAS systems
- 6IT departments monitoring corporate websites, email servers, and remote office connectivity
- 7Freelance developers offering uptime monitoring as a value-added service to clients
Prerequisites
- Docker and Docker Compose installed with at least 512MB available RAM for both containers
- Ports 80, 443, and 3001 available on the host system for web access and API communication
- Basic understanding of reverse proxy concepts if planning to customize NGINX configuration
- Domain name and SSL certificates if deploying for public status page access
- Network access to services you plan to monitor, including firewall rules for external endpoints
- Email server credentials or notification service API keys for alert delivery
For development & testing. Review security settings, change default credentials, and test thoroughly before production use. See Terms
docker-compose.yml
docker-compose.yml
1services: 2 uptime-kuma: 3 image: louislam/uptime-kuma:latest4 volumes: 5 - uptime-kuma-data:/app/data6 - /var/run/docker.sock:/var/run/docker.sock:ro7 ports: 8 - "3001:3001"9 networks: 10 - uptime-network11 restart: unless-stopped1213 nginx: 14 image: nginx:alpine15 volumes: 16 - ./nginx.conf:/etc/nginx/nginx.conf:ro17 ports: 18 - "80:80"19 - "443:443"20 depends_on: 21 - uptime-kuma22 networks: 23 - uptime-network24 restart: unless-stopped2526volumes: 27 uptime-kuma-data: 2829networks: 30 uptime-network: 31 driver: bridge.env Template
.env
1# Uptime Kuma2# First-run setup via web UI3# Create admin account on first visit45# Docker socket for container monitoringUsage Notes
- 1Dashboard at http://localhost:3001
- 2Create admin on first visit
- 3Multiple notification options
- 4Docker container monitoring
- 5Public status pages
Individual Services(2 services)
Copy individual services to mix and match with your existing compose files.
uptime-kuma
uptime-kuma:
image: louislam/uptime-kuma:latest
volumes:
- uptime-kuma-data:/app/data
- /var/run/docker.sock:/var/run/docker.sock:ro
ports:
- "3001:3001"
networks:
- uptime-network
restart: unless-stopped
nginx
nginx:
image: nginx:alpine
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
ports:
- "80:80"
- "443:443"
depends_on:
- uptime-kuma
networks:
- uptime-network
restart: unless-stopped
Quick Start
terminal
1# 1. Create the compose file2cat > docker-compose.yml << 'EOF'3services:4 uptime-kuma:5 image: louislam/uptime-kuma:latest6 volumes:7 - uptime-kuma-data:/app/data8 - /var/run/docker.sock:/var/run/docker.sock:ro9 ports:10 - "3001:3001"11 networks:12 - uptime-network13 restart: unless-stopped1415 nginx:16 image: nginx:alpine17 volumes:18 - ./nginx.conf:/etc/nginx/nginx.conf:ro19 ports:20 - "80:80"21 - "443:443"22 depends_on:23 - uptime-kuma24 networks:25 - uptime-network26 restart: unless-stopped2728volumes:29 uptime-kuma-data:3031networks:32 uptime-network:33 driver: bridge34EOF3536# 2. Create the .env file37cat > .env << 'EOF'38# Uptime Kuma39# First-run setup via web UI40# Create admin account on first visit4142# Docker socket for container monitoring43EOF4445# 3. Start the services46docker compose up -d4748# 4. View logs49docker compose logs -fOne-Liner
Run this command to download and set up the recipe in one step:
terminal
1curl -fsSL https://docker.recipes/api/recipes/uptime-kuma-status/run | bashTroubleshooting
- Uptime Kuma shows 'Cannot connect to Docker daemon': Ensure the Docker socket mount has proper permissions and the docker group is accessible
- Status page returns 502 Bad Gateway: Check that Uptime Kuma container is running and NGINX upstream configuration points to the correct internal network address
- Monitors fail with 'ENOTFOUND' errors: Verify DNS resolution from within the Docker network and ensure target services are accessible from the container
- Notification alerts not sending: Confirm notification service credentials are correct and check Uptime Kuma logs for authentication failures
- High memory usage on monitoring container: Reduce monitor frequency or limit the number of concurrent monitors in Uptime Kuma settings
- SSL certificate warnings on status page: Verify NGINX SSL configuration and ensure certificate files are properly mounted and readable
Community Notes
Loading...
Loading notes...
Download Recipe Kit
Get all files in a ready-to-deploy package
Includes docker-compose.yml, .env template, README, and license
Components
uptime-kumanginx
Tags
#uptime-kuma#monitoring#status-page#uptime#alerts
Category
Monitoring & ObservabilityAd Space
Shortcuts: C CopyF FavoriteD Download