docker.recipes

Uptime Kuma Status Page

beginner

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:latest
4 volumes:
5 - uptime-kuma-data:/app/data
6 - /var/run/docker.sock:/var/run/docker.sock:ro
7 ports:
8 - "3001:3001"
9 networks:
10 - uptime-network
11 restart: unless-stopped
12
13 nginx:
14 image: nginx:alpine
15 volumes:
16 - ./nginx.conf:/etc/nginx/nginx.conf:ro
17 ports:
18 - "80:80"
19 - "443:443"
20 depends_on:
21 - uptime-kuma
22 networks:
23 - uptime-network
24 restart: unless-stopped
25
26volumes:
27 uptime-kuma-data:
28
29networks:
30 uptime-network:
31 driver: bridge

.env Template

.env
1# Uptime Kuma
2# First-run setup via web UI
3# Create admin account on first visit
4
5# Docker socket for container monitoring

Usage Notes

  1. 1Dashboard at http://localhost:3001
  2. 2Create admin on first visit
  3. 3Multiple notification options
  4. 4Docker container monitoring
  5. 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 file
2cat > docker-compose.yml << 'EOF'
3services:
4 uptime-kuma:
5 image: louislam/uptime-kuma:latest
6 volumes:
7 - uptime-kuma-data:/app/data
8 - /var/run/docker.sock:/var/run/docker.sock:ro
9 ports:
10 - "3001:3001"
11 networks:
12 - uptime-network
13 restart: unless-stopped
14
15 nginx:
16 image: nginx:alpine
17 volumes:
18 - ./nginx.conf:/etc/nginx/nginx.conf:ro
19 ports:
20 - "80:80"
21 - "443:443"
22 depends_on:
23 - uptime-kuma
24 networks:
25 - uptime-network
26 restart: unless-stopped
27
28volumes:
29 uptime-kuma-data:
30
31networks:
32 uptime-network:
33 driver: bridge
34EOF
35
36# 2. Create the .env file
37cat > .env << 'EOF'
38# Uptime Kuma
39# First-run setup via web UI
40# Create admin account on first visit
41
42# Docker socket for container monitoring
43EOF
44
45# 3. Start the services
46docker compose up -d
47
48# 4. View logs
49docker compose logs -f

One-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 | bash

Troubleshooting

  • 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

Ad Space