Files
Containr/templates/uptime-kuma.md
T
2026-04-10 12:02:36 +02:00

5.7 KiB

Uptime Kuma Monitoring Template

Overview

Uptime Kuma is a fancy self-hosted monitoring tool that helps you track your websites, APIs, and services.

Quick Start

# Create docker-compose.yml with the content below
docker-compose up -d

Docker Compose

version: '3.8'

services:
  uptime-kuma:
    image: louislam/uptime-kuma:1
    container_name: uptime-kuma
    restart: always
    ports:
      - "3001:3001"
    volumes:
      - uptime-kuma-data:/app/data
    environment:
      - NODE_ENV=production
    networks:
      - uptime-kuma-network

volumes:
  uptime-kuma-data:

networks:
  uptime-kuma-network:
    driver: bridge

Environment Variables

  • NODE_ENV=production: Run in production mode

Setup Guide

  1. Deploy:

    docker-compose up -d
    
  2. Access: Open http://localhost:3001

  3. Initial Setup:

    • Create admin account
    • Set administrator password
    • Choose language preference
  4. Add First Monitor:

    • Click "Add New Monitor"
    • Enter URL/IP to monitor
    • Set check interval
    • Configure notifications

Monitor Types

HTTP(s) Monitor

# Example configuration
Monitor Type: HTTP(s)
Friendly Name: My Website
URL: https://example.com
Interval: 60 seconds
Timeout: 30 seconds
Retries: 3

TCP Port Monitor

# Example configuration
Monitor Type: TCP
Friendly Name: SSH Server
Hostname: server.example.com
Port: 22
Interval: 60 seconds
Timeout: 10 seconds

Ping Monitor

# Example configuration
Monitor Type: Ping
Friendly Name: Router
Hostname: 192.168.1.1
Interval: 30 seconds
Packet Size: 56

DNS Monitor

# Example configuration
Monitor Type: DNS
Friendly Name: Domain Resolution
Hostname: example.com
DNS Server: 8.8.8.8
Resolve Type: A
Interval: 300 seconds

Notification Channels

Email Notifications

# Setup in Uptime Kuma UI
Notification Type: Email
SMTP Host: smtp.gmail.com
SMTP Port: 587
Username: your-email@gmail.com
Password: your-app-password
From Email: monitor@example.com
To Emails: admin@example.com

Discord Notifications

# Setup in Uptime Kuma UI
Notification Type: Discord
Webhook URL: https://discord.com/api/webhooks/YOUR_WEBHOOK_URL

Telegram Notifications

# Setup in Uptime Kuma UI
Notification Type: Telegram
Bot Token: YOUR_BOT_TOKEN
Chat ID: YOUR_CHAT_ID

Slack Notifications

# Setup in Uptime Kuma UI
Notification Type: Slack
Webhook URL: https://hooks.slack.com/services/YOUR/SLACK/WEBHOOK

Reverse Proxy (Traefik)

labels:
  - "traefik.enable=true"
  - "traefik.http.routers.uptime-kuma.rule=Host(`status.yourdomain.com`)"
  - "traefik.http.routers.uptime-kuma.tls=true"
  - "traefik.http.routers.uptime-kuma.tls.certresolver=letsencrypt"
  - "traefik.http.services.uptime-kuma.loadbalancer.server.port=3001"

Backup Strategy

# Backup Uptime Kuma data
docker run --rm -v uptime-kuma-data:/data -v $(pwd):/backup alpine tar czf /backup/uptime-kuma-backup.tar.gz -C /data .

# Restore Uptime Kuma data
docker run --rm -v uptime-kuma-data:/data -v $(pwd):/backup alpine tar xzf /backup/uptime-kuma-backup.tar.gz -C /data

# Restart after restore
docker-compose restart uptime-kuma

Performance Optimization

# For high-volume monitoring
environment:
  - UPTIME_KUMA_MAX_MONITORS_PER_PAGE=100
  - UPTIME_KUMA_HEARTBEAT_INTERVAL=20

# Resource limits
deploy:
  resources:
    limits:
      memory: 512M
      cpus: '0.5'
    reservations:
      memory: 256M
      cpus: '0.2'

Advanced Configuration

Custom HTTP Headers

# In monitor configuration
HTTP Headers:
  User-Agent: Uptime-Kuma/1.0.0
  Authorization: Bearer YOUR_TOKEN

HTTP POST Body

# For API monitoring
Method: POST
Body: '{"key": "value"}'
Headers:
  Content-Type: application/json

Expected Status Codes

# Custom status codes
Accepted Status Codes: 200,201,202,204

Security

  • Change default admin password
  • Use HTTPS in production
  • Network access control
  • Regular backups
  • Monitor access logs

API Usage

# Get all monitors
curl -H "Authorization: Bearer YOUR_TOKEN" \
  http://localhost:3001/api/monitors

# Get monitor status
curl -H "Authorization: Bearer YOUR_TOKEN" \
  http://localhost:3001/api/monitors/1/status

# Add monitor via API
curl -X POST -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"type":"http","name":"Test","url":"https://example.com"}' \
  http://localhost:3001/api/monitors

Monitoring Best Practices

  1. Set appropriate intervals: Don't check too frequently
  2. Use retries: Handle temporary network issues
  3. Configure timeouts: Prevent hanging checks
  4. Set up notifications: Get alerts for issues
  5. Group monitors: Organize by service/environment
  6. Use tags: Filter and categorize monitors

Troubleshooting

  • Monitor failures: Check network connectivity
  • Notification issues: Verify webhook/API keys
  • Performance problems: Reduce check frequency
  • Database errors: Check disk space and permissions
  • Access problems: Verify firewall settings

Integration Examples

Docker Container Monitoring

Monitor Type: HTTP
URL: http://container-ip:port/health
Interval: 30 seconds
Expected Status Code: 200

Database Monitoring

Monitor Type: TCP
Hostname: postgres-server
Port: 5432
Interval: 60 seconds

SSL Certificate Monitoring

Monitor Type: HTTP(s)
URL: https://example.com
Check Certificate: true
Days Before Expiry: 30

Maintenance

# Check logs
docker-compose logs -f uptime-kuma

# Restart service
docker-compose restart uptime-kuma

# Update image
docker-compose pull && docker-compose up -d

# Clean up old data
docker exec uptime-kuma npm run prune