// Tutorial · Monitoring · Self-Hosting

Uptime Kuma selbst hosten: Monitoring & Status-Seite

📅 04.09.2026 ⏱ 9 Min. Lesezeit ✍️ Redaktion

Läuft dein Server noch? Und was ist mit der Status-Seite für deine Nutzer? Uptime Kuma – ebenfalls vom Dockge-Macher – ist ein schlankes, selbst gehostetes Monitoring-Tool: Es prüft deine Dienste in einstellbaren Intervallen, alarmiert dich über Dutzende Kanäle und veröffentlicht den Zustand optional auf einer eigenen Status-Seite. In diesem Tutorial richtest du Uptime Kuma mit Docker Compose ein.

Warum Uptime Kuma?

„Läuft bei mir“ ist keine Antwort, wenn es um deine selbst gehosteten Dienste geht. Uptime Kuma prüft deine Dienste automatisch und meldet sich, wenn etwas ausfällt – ganz ohne Cloud-Anbieter, der deine Ausfälle mitprotokolliert. Dazu kommen öffentliche Status-Seiten im Stil von „status.page“, die du deinen Nutzern zeigen kannst. Das Tool ist Open Source, mehrsprachig (u. a. Deutsch) und bewusst schlank.

Wie es funktioniert: Ein Monitor prüft einen Dienst in einem festen Intervall (HTTP, Ping, Port …). Schlägt er fehl, versendet Uptime Kuma Benachrichtigungen über den Kanal deiner Wahl. Aus mehreren Monitoren baust du eine öffentliche Status-Seite.

Konzept: Monitore, Benachrichtigungen & Status-Seiten

  • Monitor-Typen: HTTP(S), TCP/Port, Ping, DNS, Schlüsselwort in der Antwort, Push-, Cron- und Docker-Monitore u. v. m.
  • Intervalle & Auswertung: Prüfintervalle frei wählbar; Ausfälle werden mit Dauer und Historie gespeichert.
  • Benachrichtigungen: Telegram, Discord, E-Mail/SMTP, Matrix, ntfy, Slack, Webhooks & Co. – 90+ Anbieter, jeweils mit „Test“-Button.
  • Status-Seiten: Öffentlich schaltbar, gruppierbar, mit dunklem Design und Verlauf – ohne Login erreichbar.
  • Zugang: Login mit Benutzerrollen (Admin/Lesen); die Status-Seite selbst bleibt bewusst öffentlich, wenn du sie freigibst.
  • Versionen: :2 ist der aktuelle Hauptzweig (neue Oberfläche); wer von v1 kommt, migriert über ein Backup.

Vorbereitung: Datenordner & Nutzer

mkdir -p ~/uptime-kuma/data
cd ~/uptime-kuma
  • ./data/app/data: hier liegt die komplette Installation inklusive SQLite-Datenbank (kuma.db), Hintergrundbildern und Zertifikaten.
  • USER_UID/USER_GID: im offiziellen Image nicht dokumentiert und ohne Funktion – sie schaden nicht, lassen sich aber gefahrlos entfernen.
  • Port 3001 intern – gebunden wird nur an 127.0.0.1, den Rest übernimmt der Reverse Proxy.
Rechte an /app/data: Beim ersten Start legt der Container die Datenbank an. Kommt es zu Schreibfehlern, gehört das Volume dem falschen Nutzer – Besitzer des Ordners passend zum Container-Nutzer setzen.

Docker Compose – die Datei

Deine Vorlage, bereinigt (leerer networks: {}-Block und network_mode: bridge entfernt – beides unnötig) und kommentiert:

services:
  uptime-kuma:
    image: louislam/uptime-kuma:2
    restart: unless-stopped
    ports:
      # Host-Port : Container-Port
      - "127.0.0.1:50522:3001"   # Web-UI nur lokal, Proxy macht den Rest
    volumes:
      - ./data:/app/data          # Datenbank + Einstellungen
    deploy:
      resources:
        limits:
          cpus: "2.0"
          memory: 2G
    environment:
      - USER_UID=1000
      - USER_GID=1000
  • louislam/uptime-kuma:2: Major-Tag :2 für den aktuellen Hauptzweig – Updates per docker compose pull.
  • 127.0.0.1:50522:3001: Uptime Kuma lauscht intern auf Port 3001.
  • Ein Docker-Socket wird für HTTP-/Ping-Monitore nicht benötigt – erst der Monitor-Typ „Docker“ braucht Zugriff auf die Docker-API.
  • Limits (2 CPU / 2 GB) sind für ein Monitoring-Setup mit ein paar Dutzend Monitoren mehr als ausreichend.

Konfiguration: Rollen, Benachrichtigungen & mehr

ThemaErklärung
Benutzer & RollenDer erste Account (Setup) wird Admin; weitere Nutzer lassen sich mit Leserechten oder als weitere Admins anlegen.
BenachrichtigungenUnter „Einstellungen → Benachrichtigungen“ Kanäle anlegen (Telegram, Discord, SMTP …) und mit „Test“ verifizieren, bevor ein Monitor sie nutzt.
Monitor „Docker“Prüft Container-Status – dafür zusätzlich den Docker-Socket mounten (Achtung: Socket-Zugriff = weitreichende Rechte).
Status-SeitenPro Status-Seite wählst du Monitore und Gruppen aus; eine Status-Seite ist ohne Login erreichbar und lässt sich auch in Dark-Theme betreiben.
SSL-ÜberwachungZertifikatsablauf wird für HTTPS-Monitore automatisch erfasst und gemeldet.
API & BadgesUptime Kuma bietet API-Endpunkte und Status-Badges für READMEs/Websites – beides deaktivierbar.
Benachrichtigungen erst testen: Jeder Kanal hat einen „Test“-Button. Erstelle zuerst einen Testkanal (z. B. ntfy oder Telegram), bevor du Monitore anlegst – sonst merkst du Ausfälle erst, wenn es zu spät ist.

Reverse Proxy & WebSockets

Die UI spricht nur HTTP auf localhost – dahinter gehört ein TLS-Proxy. Für Live-Updates nutzt Uptime Kuma WebSockets, die durchgereicht werden müssen:

server {
  listen 443 ssl;
  listen [::]:443 ssl;
  http2 on;
  server_name status.meine.domain;

  access_log off;
  error_log /var/log/nginx/status.meine.domain.error.log;
  ssl_certificate /etc/ssl/private/status.meine.domain_ecc/fullchain.cer;
  ssl_certificate_key /etc/ssl/private/status.meine.domain_ecc/status.meine.domain.key;

  ssl_protocols TLSv1.2 TLSv1.3;
  ssl_early_data on;
  ssl_session_cache shared:SSL:50m;
  ssl_session_timeout 1d;

  add_header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload" always;
  add_header X-Content-Type-Options "nosniff" always;
  add_header X-Frame-Options "DENY" always;
  add_header Referrer-Policy "no-referrer" always;

  location / {
    proxy_http_version 1.1;
    # WebSockets für Live-Updates der Oberfläche
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";

    proxy_set_header Host $http_host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Scheme $scheme;

    proxy_read_timeout 3600s;
    proxy_pass http://127.0.0.1:50522;
  }
}
Öffentliche Status-Seite, privates Dashboard: Die Status-Seite darf öffentlich sein – das Dashboard (Login) nicht. Wer die Admin-Oberfläche freigeben will, sollte sie hinter einer Auth-Ebene (VPN, Basic Auth, Authelia …) schützen oder zumindest starke Passwörter + 2FA nutzen.

Erster Start & erster Monitor

cd ~/uptime-kuma
docker compose up -d
docker compose logs -f uptime-kuma

Danach https://status.meine.domain öffnen:

  • Beim ersten Aufruf legst du das Admin-Konto an (Benutzername + sicheres Passwort).
  • Unter „Neuer Monitor“ einen Dienst anlegen: z. B. „HTTP(s)“ auf https://sky.huuu.biz oder einen Ping auf deinen Router.
  • Kontrollwerte setzen (erwarteter Statuscode, Keyword) – dann erscheint der Monitor mit grünem Herz.
  • Für echte Ausfälle: unter „Benachrichtigungen“ einen Kanal anlegen und dem Monitor zuweisen – Auslöser sind Fälle wie „Down“ oder „SSL abgelaufen“.
  • Status-Seite: Monitore in einer Gruppe zusammenfassen und die Seite als „öffentlich“ aktivieren – fertig ist dein eigenes status.meine.domain.

Backups, Updates & Versionen

Das Backup besteht aus dem kompletten ./data-Ordner. Am sichersten kopierst du die SQLite-Datei bei gestopptem Container (docker compose stop → kopieren → starten); alternativ bietet die UI unter „Einstellungen → Backup“ einen Export an.

Update & Migration: docker compose pull && docker compose up -d – die Daten bleiben dank Volume erhalten. Wer von v1 (:1) auf v2 wechselt: vorher Backup erstellen, danach die neue Oberfläche prüfen. Vor jedem großen Versionssprung gilt: erst sichern, dann aktualisieren.

Häufige Probleme (FAQ)

ProblemLösung
Monitor meldet „Down“, Dienst läuft aberKontrollwerte prüfen (Statuscode/Keyword); bei HTTPS evtl. Zertifikatskette oder User-Agent des Monitors anpassen.
Keine BenachrichtigungenKanal vorher mit „Test“ prüfen und dem Monitor zuweisen; Auslöser wie „Down“ aktivieren.
Login nicht möglich / Passwort vergessenAdmin-Passwort über die UI zurücksetzen lassen oder Backup einspielen – die Datenbank enthält die Konten.
Live-Updates hängen in der OberflächeWebSocket-Upgrade im Proxy fehlt (Upgrade/Connection, proxy_http_version 1.1).
Schreibfehler / Datenbank wird nicht angelegtBesitzer von ./data prüfen (chown auf Container-Nutzer), Pfad des Volumes kontrollieren.
Uptime Kuma erreicht deine Dienste nichtMonitore laufen vom Server aus – Firewall-/DNS-Probleme des Hosts betreffen auch Uptime Kuma; ggf. zweiten Monitor von außen (externer Check) ergänzen.

Fazit

Uptime Kuma liefert dir in fünf Minuten ein eigenes Monitoring samt öffentlicher Status-Seite – ohne Cloud, ohne versteckte Kosten und mit Benachrichtigungen über die Kanäle, die du ohnehin nutzt. Zusammen mit Dockge (vom selben Autor) hast du damit Monitoring und Stack-Verwaltung komplett in eigener Hand.

Die vier Merksätze: ① Ein Monitor pro Dienst, Kontrollwerte nicht vergessen. ② Benachrichtigungskanäle erst testen, dann zuweisen. ③ Status-Seite öffentlich, Dashboard hinter Login/Auth. ④ Backup = kompletter ./data-Ordner (idealerweise bei gestopptem Container).
📝
....

Wir betreiben unsere komplette Infrastruktur selbst auf Open-Source-Software und schreiben nur über Tools, die wir im Alltag wirklich einsetzen. Fragen zum Artikel? Schreib uns.