Zum Hauptinhalt springen
Zurück zur Kategorie

Uptime Kuma Installation: Self-Hosted Uptime-Monitoring

Uptime Kuma Installation mit Docker, HTTP/TCP/DNS/Ping-Monitoring, Benachrichtigungsintegrationen (Telegram, Discord, E-Mail), Status-Page-Erstellung und Alert-Konfiguration.

Lesezeit: 12 Min Self-Hosting
uptime-kumamonitoringuptimeself-hostingdockerbenachrichtigungenstatus-page
Autor
REXE Teknoloji Network & Security Team
Redaktion
REXE Teknoloji Technical Editorial
Erstveröffentlichung
Letzte Aktualisierung

Uptime Kuma Installation: Self-Hosted Uptime-Monitoring

Uptime Kuma ist ein Self-Hosted Uptime-Monitoring-Tool, das den Betriebsstatus Ihrer Dienste und Websites überwacht. Mit einer schönen Weboberfläche, verschiedenen Monitor-Typen und umfangreichen Benachrichtigungsintegrationen bietet es eine großartige Alternative zu Uptime Robot.

Was ist Uptime Kuma?

Herausragende Merkmale von Uptime Kuma:

  • Monitor-Typen: HTTP(S), TCP, DNS, Ping, Docker Container, Steam Game Server
  • Benachrichtigungskanäle: Telegram, Discord, Slack, E-Mail, PagerDuty, Webhook und 90+ Integrationen
  • Status-Page: Anpassbare Statusseite
  • SSL-Überwachung: Verfolgung des Ablaufdatums von Zertifikaten
  • Wartungsfenster: Geplante Wartungsfenster definieren
  • 2FA-Unterstützung: Zwei-Faktor-Authentifizierung
  • Mehrsprachig: 40+ Sprachen

Installation

Installation mit Docker (Empfohlen)

hljs bash
docker run -d \
  --name uptime-kuma \
  --restart=always \
  -p 3001:3001 \
  -v uptime-kuma:/app/data \
  louislam/uptime-kuma:latest

Nach der Installation:

http://SERVER_IP:3001

Installation mit Docker Compose

hljs yaml
# docker-compose.yml
version: '3.8'
services:
  uptime-kuma:
    image: louislam/uptime-kuma:latest
    container_name: uptime-kuma
    restart: unless-stopped
    ports:
      - "3001:3001"
    volumes:
      - uptime-kuma:/app/data
    security_opt:
      - no-new-privileges:true

volumes:
  uptime-kuma:
hljs bash
docker compose up -d

HTTPS mit Nginx Reverse Proxy

hljs nginx
server {
    listen 80;
    server_name uptime.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name uptime.example.com;

    ssl_certificate /etc/letsencrypt/live/uptime.example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/uptime.example.com/privkey.pem;

    location / {
        proxy_pass http://localhost:3001;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_cache_bypass $http_upgrade;
    }
}

Monitor-Typen

HTTP(S)-Monitor

Monitor Type: HTTP(S)
Friendly Name: Startseite
URL: https://example.com
Heartbeat Interval: 60 Sekunden
Retries: 3
Accepted Status Codes: 200-299

TCP-Port-Monitor

Monitor Type: TCP Port
Friendly Name: MySQL-Datenbank
Hostname: db.example.com
Port: 3306
Heartbeat Interval: 120 Sekunden

DNS-Monitor

Monitor Type: DNS
Friendly Name: DNS-Prüfung
Hostname: example.com
Resolver Server: 8.8.8.8
DNS Resolve Type: A
Expected Value: 1.2.3.4

SSL-Zertifikat-Überwachung

Monitor Type: HTTP(S)
URL: https://example.com
# Im SSL-Tab:
Enable SSL Certificate Expiry Notification: AN
Notify Before (days): 30

Benachrichtigungsintegrationen

Telegram-Benachrichtigung

hljs bash
# 1. Bot über BotFather erstellen
# Bot-Token erhalten: 1234567890:ABCdefGHIjklMNOpqrSTUvwxYZ

# 2. Chat-ID ermitteln
curl https://api.telegram.org/bot<TOKEN>/getUpdates
# Wert "chat":{"id":123456789} notieren
Notification Type: Telegram
Bot Token: 1234567890:ABCdefGHIjklMNOpqrSTUvwxYZ
Chat ID: 123456789

Discord-Benachrichtigung

hljs bash
# Webhook in Discord erstellen:
# Server-Einstellungen → Integrationen → Webhooks → Neuer Webhook
# Webhook-URL kopieren
Notification Type: Discord
Discord Webhook URL: https://discord.com/api/webhooks/...
Username: Uptime Kuma

E-Mail (SMTP)-Benachrichtigung

Notification Type: Email (SMTP)
From Email: alerts@example.com
To Email: admin@example.com
SMTP Host: smtp.gmail.com
SMTP Port: 587
SMTP Username: alerts@example.com
SMTP Password: app-passwort
Security: STARTTLS

Status-Page erstellen

Neue Status-Page

  1. Status PagesNew Status Page
  2. Seitenname und Slug festlegen: status.example.com
  3. Logo und Titel hinzufügen
  4. Monitore zu Gruppen hinzufügen
  5. Mit Save speichern
hljs bash
# Status-Page-Einstellungen:
Title: Dienststatus
Description: Echtzeit-Status aller unserer Dienste
Theme: Auto (Hell/Dunkel)
Custom Domain: status.example.com

Wartungsfenster

Maintenance → Add Maintenance
Title: Wöchentliche Wartung
Strategy: Recurring
Start Time: Sonntag 02:00
End Time: Sonntag 04:00
Timezone: Europe/Berlin
Affected Monitors: Alle Monitore

Uptime Kuma aktualisieren

hljs bash
docker stop uptime-kuma
docker rm uptime-kuma
docker pull louislam/uptime-kuma:latest

docker run -d \
  --name uptime-kuma \
  --restart=always \
  -p 3001:3001 \
  -v uptime-kuma:/app/data \
  louislam/uptime-kuma:latest

Datensicherung

hljs bash
# Uptime Kuma-Daten sichern
docker exec uptime-kuma tar -czf /tmp/backup.tar.gz /app/data
docker cp uptime-kuma:/tmp/backup.tar.gz ./uptime-kuma-backup-$(date +%Y%m%d).tar.gz

Sie können alle auf Ihren REXE-Servern laufenden Dienste mit Uptime Kuma überwachen. Mit Telegram-Benachrichtigungen werden Sie sofort über Dienstausfälle informiert.

Häufig gestellte Fragen

Nach der Installation von Uptime Kuma kann ich nicht auf Port 3001 zugreifen.

Öffnen Sie Port 3001 in der Firewall: 'ufw allow 3001/tcp'. Überprüfen Sie, ob der Container läuft mit 'docker ps | grep uptime-kuma'. Wenn Sie Nginx Reverse Proxy verwenden, überprüfen Sie die proxy_pass-Einstellungen und das SSL-Zertifikat.

Telegram-Benachrichtigungen kommen nicht an.

Überprüfen Sie, ob das Bot-Token korrekt ist. Führen Sie 'curl https://api.telegram.org/bot<TOKEN>/getUpdates' aus, um die Chat-ID zu überprüfen. Sie müssen dem Bot mindestens eine Nachricht gesendet haben. Wenn Sie eine Gruppe verwenden, fügen Sie den Bot zur Gruppe hinzu und machen Sie ihn zum Admin. Verwenden Sie die 'Test'-Schaltfläche in den Benachrichtigungseinstellungen.

Mein HTTP-Monitor zeigt ständig 'down', obwohl die Website funktioniert.

Überprüfen Sie die Einstellung 'Accepted Status Codes' (Standard: 200-299). Wenn Ihre Website 301/302-Weiterleitungen zurückgibt, fügen Sie diese ebenfalls hinzu. Wenn ein SSL-Zertifikatsfehler vorliegt, aktivieren Sie die Option 'Ignore TLS/SSL error'. Erhöhen Sie den Timeout. Überprüfen Sie, ob die Website vom Server, auf dem Uptime Kuma läuft, erreichbar ist.

Wie verbinde ich eine Status-Page mit einer benutzerdefinierten Domain?

Geben Sie Ihren Domain-Namen in das Feld 'Custom Domain' in den Status-Page-Einstellungen ein (z.B. status.example.com). Erstellen Sie einen CNAME-Eintrag im DNS: status.example.com → uptime.example.com. Wenn Sie Nginx Reverse Proxy verwenden, fügen Sie einen neuen Server-Block hinzu. Holen Sie sich ein SSL-Zertifikat mit Let's Encrypt.

Ich habe viele Monitore in Uptime Kuma und erlebe Leistungsprobleme.

Erhöhen Sie das Heartbeat-Intervall (120-300 Sekunden statt 60). Deaktivieren Sie unnötige Monitore. Weisen Sie dem Uptime Kuma-Container mehr Ressourcen zu. Die SQLite-Datenbank kann bei wachsender Größe langsamer werden; bereinigen Sie regelmäßig alte Einträge. Verwenden Sie die Option 'Settings → Database → Shrink Database'.

Wie richte ich SSL-Zertifikat-Ablaufbenachrichtigungen ein?

Gehen Sie beim Erstellen oder Bearbeiten eines HTTP(S)-Monitors zum Tab 'SSL'. Aktivieren Sie die Option 'Enable SSL Certificate Expiry Notification'. Legen Sie fest, wie viele Tage im Voraus Sie benachrichtigt werden möchten (z.B. 30 Tage). Stellen Sie sicher, dass Ihr Benachrichtigungskanal (Telegram, E-Mail usw.) konfiguriert ist.

Verwandte Artikel

NetzwerkverkehrEingehend GbpsAusgehend Gbps