Kennst du den Moment? Du willst kurz was in Nextcloud nachschauen, und… nichts. Der Container ist irgendwann heute Nacht gestorben, und du erfährst es erst jetzt. Oder schlimmer: Die Familie erfährt es vor dir. Genau dafür gibt es Uptime Kuma — ein selbst gehostetes Monitoring-Dashboard, das deine Dienste im Blick behält und dich sofort benachrichtigt, wenn etwas nicht mehr antwortet. Open Source, hübsch anzusehen und in einer Viertelstunde am Start.

Kurz gesagt: Am Ende läuft Uptime Kuma als Docker-Container auf deinem Server, überwacht beliebig viele Dienste per HTTP, Ping oder TCP und schickt dir Benachrichtigungen aufs Handy. Dauer: rund 15 Minuten. Schwierigkeitsgrad: Einsteiger.
Schaubild: Uptime Kuma in 3 Schritten installieren — Bauplan anlegen, Container starten, Wachdienst einrichten
Der ganze Weg auf einen Blick — die Details zu jedem Schritt folgen unten.

Was du brauchst

  • Einen Server, auf dem Docker läuft — Raspberry Pi, Mini-PC, NAS oder eine VM, alles gut
  • Docker samt Compose-Plugin (bei aktuellen Docker-Installationen dabei, Test: docker compose version)
  • SSH-Zugang und ein bisschen Terminal-Grundwissen
  • Rund 15 Minuten Zeit
Docker Compose? Stell es dir wie ein Kochrezept für Container vor: In einer kleinen Textdatei steht, welcher Dienst mit welchen Zutaten (Image, Port, Speicherort) laufen soll — und mit einem einzigen Befehl kocht Docker alles genau nach Rezept. Jedes Mal identisch.

Schritt 1: Projektordner und Compose-Datei anlegen

Erst mal ein Zuhause für den Dienst. Wir legen einen Ordner an und wechseln hinein:

mkdir -p ~/uptime-kuma
cd ~/uptime-kuma

Darin erstellst du die Datei compose.yaml — das ist der Bauplan, aus dem Docker den Container zusammensetzt. Der Inhalt kommt eins zu eins aus dem offiziellen Repository:

services:
  uptime-kuma:
    image: louislam/uptime-kuma:2
    restart: unless-stopped
    volumes:
      - ./data:/app/data
    ports:
      - "3001:3001"

Kurz übersetzt: image: louislam/uptime-kuma:2 holt die aktuelle 2er-Version (Stand jetzt: 2.5.3). restart: unless-stopped sorgt dafür, dass der Container nach einem Server-Neustart von selbst wieder hochkommt. Die Zeile ./data:/app/data ist die wichtigste: Sie legt alle Monitore, Einstellungen und den kompletten Verlauf in einen Unterordner data neben deiner Compose-Datei. Ohne diese Zeile wäre nach jedem Neuerstellen des Containers alles weg. Und Port 3001 ist die Tür, über die du gleich das Web-Interface erreichst.

Schritt 2: Container starten

docker compose up -d

Das -d steht für detached, der Container läuft also im Hintergrund weiter, auch wenn du das Terminal schließt. Docker lädt beim ersten Mal das Image herunter, das dauert je nach Leitung einen Moment. Ob alles sauber hochgefahren ist, siehst du mit:

docker compose logs -f

Wenn dort eine Zeile mit Listening on 3001 auftaucht, bist du durch. Mit Strg+C kommst du aus der Log-Ansicht wieder raus, der Container läuft weiter.

Schritt 3: Ersteinrichtung im Browser

Öffne im Browser http://<IP-deines-Servers>:3001, also zum Beispiel http://192.168.1.50:3001. Beim ersten Aufruf begrüßt dich die Einrichtungsseite: Sprache wählen, Admin-Konto anlegen, fertig. Nimm ein ordentliches Passwort — und leg das Konto direkt nach der Installation an. Wer zuerst auf die Seite kommt, darf nämlich den Admin erstellen. Im Heimnetz ist das entspannt, trotzdem: nicht tagelang offen stehen lassen.

Uptime Kuma→ fragt alle 60s →Pi-hole·Nextcloud·dein Blog→ bei Ausfall →Telegram / E-Mail

Schritt 4: Den ersten Monitor anlegen

Klick oben links auf Neuer Monitor. Ein guter Kandidat für den Anfang ist ein Dienst, den du sowieso ständig brauchst, etwa dein Pi-hole oder deine Nextcloud:

  • Monitor-Typ: HTTP(s) — prüft, ob eine Webseite antwortet
  • URL: http://192.168.1.10/admin (die Adresse deines Dienstes)
  • Heartbeat-Intervall: 60 Sekunden sind ein vernünftiger Start

Neben HTTP(s) gibt es noch eine ganze Reihe weiterer Typen: Ping für alles, was eine IP hat, TCP-Port für Dienste ohne Weboberfläche, DNS-Abfragen, sogar Docker-Container lassen sich direkt überwachen. Für den Einstieg reichen HTTP und Ping völlig.

Schritt 5: Benachrichtigungen einrichten

Ein Monitoring, das niemandem Bescheid sagt, ist nur ein Dashboard zum Traurig-Angucken. Also: Profilbild oben rechts → EinstellungenBenachrichtigungen. Uptime Kuma unterstützt über 90 Dienste, von Telegram über E-Mail (SMTP) und Discord bis ntfy. Für Telegram brauchst du nur einen Bot-Token vom BotFather und deine Chat-ID, beides erklärt der Einrichtungsdialog direkt mit. Setz den Haken bei Standardmäßig aktiviert, dann gilt die Benachrichtigung automatisch für alle neuen Monitore.

Schritt 6: Updates einspielen

Neue Versionen holst du dir mit zwei Befehlen:

docker compose pull
docker compose up -d

Das erste Kommando lädt das neue Image, das zweite ersetzt den laufenden Container. Deine Daten bleiben dabei erhalten, die liegen ja im data-Ordner. Trotzdem mein Rat: Kopier den Ordner vorher kurz weg, dann kann dir auch ein missglücktes Update egal sein.

Häufige Stolpersteine

Port 3001 ist schon belegt. Dann meckert Docker beim Start mit port is already allocated. Lösung: In der Compose-Datei die linke Seite des Port-Mappings ändern, etwa "3002:3001". Die rechte Seite bleibt, wie sie ist — das ist der Port im Container.

Hinter dem Reverse Proxy bleibt die Seite leer. Uptime Kuma läuft im Gegensatz zu vielen Web-Apps über WebSocket. Dein Proxy muss das durchlassen: Im NGINX Proxy Manager genügt der Haken bei WebSockets Support, bei purem nginx brauchst du proxy_http_version 1.1; plus die Header Upgrade und Connection. Und wichtig: Uptime Kuma kann kein Unterverzeichnis wie example.com/kuma, es braucht eine eigene (Sub-)Domain.

Nach dem Neuerstellen des Containers sind alle Monitore weg. Dann fehlte das Volume-Mapping. Prüf mit docker compose config, ob die Zeile ./data:/app/data wirklich ankommt, und schau nach, ob neben der Compose-Datei ein data-Ordner mit Inhalt liegt.

Der Datenordner liegt auf einem Netzwerk-Share. Klingt praktisch, ist aber riskant: Uptime Kuma speichert in einer SQLite-Datenbank, und die braucht laut offizieller Doku ein Dateisystem mit POSIX-File-Locks. Auf NFS-Freigaben droht sonst Datenbank-Korruption. Leg den data-Ordner auf eine lokale Platte.

Fazit

Meine Einschätzung: Uptime Kuma gehört zu den Tools mit dem besten Verhältnis von Aufwand zu Nutzen im ganzen Homelab. Eine Compose-Datei, ein Befehl, und ab da weißt du zuerst, wenn ein Dienst umkippt — nicht deine Nutzer. Wer mag, baut später noch öffentliche Statusseiten oder Wartungsfenster dazu, aber schon die Basis-Installation nimmt dir eine Menge Unsicherheit ab. Für mich ist das einer der ersten Container auf jedem neuen Server.

Falls dein Homelab gerade wächst: Wirf auch einen Blick auf Proxmox VE 9.2 — seit Kurzem offiziell mit ARM-Unterstützung.

Quellen