Uptime Kuma ist ein quelloffener, selbst gehosteter Monitor für HTTP(S)-, TCP-, Ping-, DNS-, WebSocket- und weitere Prüfungen. Auf einem separaten VPS prüft er weiter, wenn Ihr Produktionsserver ausfällt, statt mit ihm zu verschwinden.
Diese Einrichtung von Uptime Kuma auf dem VPS installiert v2 mit Docker Compose, hält Port 3001 auf dem Loopback, ergänzt HTTPS über Caddy, leitet Benachrichtigungen an Telegram, Discord und Slack weiter und veröffentlicht eine Statusseite.
Voraussetzungen und was Sie brauchen
- Ein VPS mit mindestens 1 vCPU, 1 GB RAM und 10 GB lokalem SSD-Speicher
- Ubuntu 24.04 LTS oder eine andere aktuelle Ubuntu-Version, die Docker unterstützt
- Docker Engine und Docker Compose auf dem VPS installiert
- Eine Domain oder Subdomain, die per A-Record auf den VPS zeigt (etwa status.example.com)
- SSH-Zugang und Grundkenntnisse auf der Kommandozeile
Falls Docker noch nicht installiert ist, folgen Sie der Ubuntu-Installationsanleitung von Docker. Sie installiert Docker Engine und das unten verwendete Compose-Plug-in.
Warum der Monitoring-VPS getrennt von dem laufen muss, was er überwacht
Produktion und Monitoring auf demselben Server teilen sich dieselbe Ausfalldomäne. Fällt dieser Server aus, verschwinden die Anwendung und das System, das die Warnung verschicken soll, gleichzeitig.
Zwei praktische Aufteilungen verbessern das:
- Gleicher Anbieter, anderer Standort. Betreiben Sie Produktion und Monitoring auf getrennten Hosts an verschiedenen Standorten. Das verringert das Risiko eines Ausfalls einzelner Server oder eines Rechenzentrums, schützt aber nicht vor jedem anbieterweiten Netz- oder Control-Plane-Vorfall.
- Ein völlig anderer Anbieter. Den Monitor woanders zu hosten, schützt zusätzlich vor Vorfällen, die den gesamten Anbieter betreffen. Der Preis dafür ist ein weiteres Konto, eine weitere Rechnung und eine weitere Betriebsfläche.
Eine einzelne Instanz von Uptime Kuma hat weiterhin keinen Wächter von außen. Richten Sie eine externe HTTP(S)-Prüfung auf ihre öffentliche Statusseite ein. Der kostenlose Tarif von UptimeRobot umfasst derzeit 50 Monitore im Fünf-Minuten-Takt. Hochverfügbar wird Uptime Kuma dadurch nicht, aber Sie erfahren, wenn die Überwachung selbst ausfällt.
Dieselbe Regel gilt für öffentliche Statusseiten: Was Ihnen den Ausfall meldet, darf sich die Ausfalldomäne nicht mit dem teilen, was ausfällt.
Entwickeln Sie auf einem Linux-VPS mit Root-Zugriff, NVMe und AMD-EPYC-Power.
Linux-Pläne ansehenDen VPS richtig dimensionieren
Für Uptime Kuma gibt es keine verlässliche Formel von Monitoranzahl zu RAM, weil die Last von Monitortyp, Intervall, Wiederholungseinstellungen und Verlaufsaufbewahrung abhängt. Einfache HTTP(S)-, TCP-, Ping- und DNS-Prüfungen sind leichter als Browser-Engine-Prüfungen, die Chromium starten.
Für eine kleine Menge einfacher Prüfungen starten Sie mit 1 vCPU, 1 GB RAM und lokalem SSD-Speicher. Beobachten Sie den tatsächlichen Verbrauch mit docker stats uptime-kuma und das Wachstum der Datenbank mit du -sh /opt/uptime-kuma/data. Erhöhen Sie den Arbeitsspeicher, wenn die Auslastung dauerhaft hoch bleibt, der Container einen OOM-Kill meldet oder Sie Browser-Engine-Prüfungen einführen.
Das vollständige v2-Image enthält Chromium und ein eingebettetes MariaDB; die Dokumentation der Docker-Tags erklärt den Unterschied zwischen dem vollständigen und dem Slim-Image.
Uptime Kuma mit Docker Compose bereitstellen
Speichern Sie diese Datei als docker-compose.yml unter /opt/uptime-kuma/:
services:
uptime-kuma:
image: louislam/uptime-kuma:2
container_name: uptime-kuma
restart: unless-stopped
ports:
# Bind to localhost only. The reverse proxy will expose it on 443.
- "127.0.0.1:3001:3001"
volumes:
- ./data:/app/data
Drei Zeilen sind hervorzuheben:
- image: louislam/uptime-kuma:2 legt die Hauptversion fest. Der Tag :2 folgt der stabilen 2.x-Reihe. Verwenden Sie nicht :latest.
- 127.0.0.1:3001:3001 bindet den Container nur an localhost. Das öffentliche Internet darf Port 3001 nie direkt erreichen. Der Reverse Proxy hält das TLS-Zertifikat und den öffentlichen Hostnamen.
- Das Daten-Volume enthält die Datenbank, die Monitor-Konfiguration und den Verlauf. Halten Sie es auf lokalem Speicher, denn die Installationsdokumentation von Uptime Kuma warnt davor, dass Dateisysteme ohne zuverlässiges POSIX-Locking, darunter viele NFS-Setups, SQLite beschädigen können. Stoppen Sie den Stack, bevor Sie eine Kopie auf Dateisystemebene ziehen.
Starten Sie den Stack und prüfen Sie:
sudo install -d -o "$USER" -g "$USER" /opt/uptime-kuma
cd /opt/uptime-kuma
# Paste the docker-compose.yml file above.
sudo docker compose up -d
sudo docker compose ps
Erwartete Ausgabe von docker compose ps:
NAME IMAGE STATUS PORTS
uptime-kuma louislam/uptime-kuma:2 Up (healthy) 127.0.0.1:3001->3001/tcp
Um das Dashboard zum ersten Mal zu erreichen, öffnen Sie Port 3001 nicht ins Internet, auch nicht kurz. Nutzen Sie einen SSH-Tunnel:
ssh -L 3001:127.0.0.1:3001 [email protected]
Öffnen Sie http://localhost:3001 im Browser, legen Sie das Admin-Konto an, vergeben Sie ein starkes Passwort und schließen Sie den Tunnel. Ab jetzt erreicht Sie das Dashboard per HTTPS über Ihren Reverse Proxy.
Wenn Sie Compose nicht von Hand einrichten möchten, bieten wir auch Uptime Kuma als Ein-Klick-App an. Die aktuelle App-Seite nennt v1 und passt damit nicht zur v2-Einrichtung in diesem Leitfaden. Nehmen Sie den manuellen Compose-Weg, wenn Sie ausdrücklich v2 brauchen.
Reverse Proxy und TLS
Stellen Sie Uptime Kuma nicht direkt ins Netz. Setzen Sie einen Reverse Proxy davor, für TLS, saubere URL-Behandlung und einen einzigen öffentlichen Eingangspunkt. Zwei Wege.
Caddy. Falls Caddy noch nicht installiert ist, folgen Sie den offiziellen Ubuntu-Paketschritten. Läuft Caddy als Dienst auf dem Host, leitet das folgende Caddyfile auf Uptime Kuma auf dem Loopback weiter und kümmert sich automatisch um Ausstellung und Erneuerung des Zertifikats.
Profi-Tipp: Wenn auf dem Monitoring-VPS nur Uptime Kuma läuft, nehmen Sie Caddy. Das Caddyfile hat drei Zeilen, und Caddy erledigt Ausstellung und Erneuerung des Zertifikats automatisch. Kein Certbot und kein separater Erneuerungs-Timer, den Sie um 4 Uhr morgens hüten müssen.
Speichern Sie dies als /etc/caddy/Caddyfile:
status.example.com {
reverse_proxy 127.0.0.1:3001
}
Caddy neu laden:
sudo systemctl reload caddy
Prüfen:
curl -I https://status.example.com
Sie sollten eine erfolgreiche 2xx- oder 3xx-Antwort mit gültigem Zertifikat erhalten. Schlägt die Verbindung fehl, prüfen Sie, ob der A- oder AAAA-Record der Domain auf diesen VPS zeigt, ob Port 80 und 443 erreichbar sind und ob Caddy sich an beide binden kann. Das gehört zu den Voraussetzungen für automatisches HTTPS bei Caddy.
Nginx Proxy Manager. Läuft NPM direkt auf dem Host, legen Sie einen Proxy Host für status.example.com an, leiten Sie ihn an 127.0.0.1 auf Port 3001 weiter, fordern Sie ein Let's-Encrypt-Zertifikat an und aktivieren Sie Websockets Support. Läuft NPM in Docker, zeigt 127.0.0.1 auf den NPM-Container selbst. Verbinden Sie NPM und Uptime Kuma dann stattdessen mit demselben Docker-Netzwerk und leiten Sie den Proxy Host an uptime-kuma auf Port 3001 weiter.
Benachrichtigungen verteilen: Telegram, Discord, Slack
Uptime Kuma kann dasselbe Monitor-Ereignis an mehrere Benachrichtigungskanäle schicken. Richten Sie jeden Anbieter einmal ein und hängen Sie dann je nach Empfänger einen oder mehrere Kanäle an einen Monitor.
Benachrichtigungen werden global konfiguriert unter Einstellungen > Benachrichtigungen, und dann einzelnen Monitoren zugewiesen. Jeder Monitor kann einen oder viele Kanäle auslösen. Dieselbe Warnung kann per Telegram an die Bereitschaft, per Slack ans Team und per E-Mail ins Audit-Log gehen, alles aus einem einzigen Ereignis.
Telegram
- Schreiben Sie in Telegram an @BotFather und führen Sie /newbot aus. Wählen Sie einen Namen und einen Benutzernamen. BotFather antwortet mit einem Bot-Token. Bewahren Sie es auf.
- Schicken Sie Ihrem neuen Bot irgendeine Nachricht. Rufen Sie dann https://api.telegram.org/bot<YOUR_TOKEN>/getUpdates im Browser auf. Suchen Sie das Feld chat.id, das ist Ihre Chat-ID.
- In Uptime Kuma: Einstellungen > Benachrichtigungen > Benachrichtigung einrichten > Telegram. Fügen Sie das Bot-Token und die Chat-ID ein. Klicken Sie auf Testen. Prüfen Sie, ob der Bot die Testwarnung sendet.
- Kommt die Testnachricht nicht an, prüfen Sie Bot-Token und Chat-ID auf Richtigkeit und stellen Sie sicher, dass die Firewall des VPS ausgehendes HTTPS zu api.telegram.org zulässt.
Discord
- Öffnen Sie den Discord-Server, auf dem die Warnungen ankommen sollen. Klicken Sie mit der rechten Maustaste auf den Zielkanal, dann Kanal bearbeiten > Integrationen > Webhooks > Neuer Webhook. Geben Sie ihm einen Namen (etwa „Uptime Kuma“), wählen Sie den Kanal und kopieren Sie die Webhook-URL.
- In Uptime Kuma: Einstellungen > Benachrichtigungen > Benachrichtigung einrichten > Discord. Fügen Sie die Webhook-URL ein. Optional können Sie Benutzernamen und Avatar festlegen.
- Klicke auf Testen. Prüfen Sie, ob der Webhook die Testwarnung im Kanal postet.
Slack
- Erstellen Sie in Slack einen Incoming Webhook für den Kanal, in dem die Warnungen ankommen sollen. Slack liefert eine Webhook-URL der Form https://hooks.slack.com/services/T.../B.../....
- In Uptime Kuma: Einstellungen > Benachrichtigungen > Benachrichtigung einrichten > Slack. Fügen Sie die Webhook-URL ein. Optional konfigurieren Sie Symbol und Kanal-Override.
- Klicke auf Testen.
Sobald alle Tests durchlaufen, bearbeiten Sie jeden Monitor und wählen die Benachrichtigungskanäle aus, die er nutzen soll. Stellen Sie Max Retries (maximale Wiederholungen) und Retry Interval (Abstand zwischen Versuchen) so ein, dass ein kurzer Ausfall nicht sofort eine Warnung auslöst.
Die eingebaute Statusseite (und wann sie Ihnen nicht mehr reicht)
Uptime Kuma bringt öffentliche Statusseiten mit eigenen Slugs, gruppierten Monitoren, eigenen Domains, Vorfallsmeldungen und Nachrichten zu geplanten Wartungen mit. Aus einer Instanz lassen sich auch mehrere Statusseiten veröffentlichen, für verschiedene Dienste oder Zielgruppen.
Die größere Einschränkung liegt in der Kundenkommunikation. Besucher können sich derzeit nicht direkt auf einer Statusseite per E-Mail für Updates eintragen, und die öffentliche Seite bleibt Teil derselben Anwendung Uptime Kuma wie das Betreiber-Dashboard. Die Selbstanmeldung von Besuchern wird weiterhin als offener Feature-Wunsch geführt.
Wenn Sie Kundenabos oder ein vom Monitoring-Dashboard getrenntes Statussystem brauchen, ist Kener eine Alternative. Unser Beitrag zum selbst gehosteten Monitoring-Stack erklärt, wie sich die beiden Werkzeuge kombinieren lassen.
Häufige Probleme
Benachrichtigungen scheitern lautlos, wenn die Firewall des VPS ausgehendes HTTPS blockiert. Symptom: Der Test-Button funktioniert bei manchen Kanälen, bei anderen nicht. Lösung: Prüfen Sie, ob ausgehende HTTPS-Verbindungen erlaubt sind und curl -I https://api.telegram.org vom VPS aus erfolgreich ist.
Der Browser zeigt „ERR_TOO_MANY_REDIRECTS“ nach dem Aktivieren des Proxys. Suchen Sie nach doppelten HTTP-zu-HTTPS-Weiterleitungen in Caddy, Nginx Proxy Manager oder einem vorgelagerten CDN. Uptime Kuma soll weiterhin HTTP auf Port 3001 ausliefern, während der öffentliche Reverse Proxy das TLS terminiert. Wenn Sie vertrauenswürdige Proxy-Header aktivieren, lautet der aktuelle Pfad Einstellungen > Reverse Proxy > HTTP-Header > Trust Proxy.
Der Container startet alle paar Minuten neu. Prüfen Sie, ob der Container wegen Speichermangels beendet wurde, und beobachten Sie dann den aktuellen Verbrauch mit docker stats uptime-kuma. Wurde der Container per OOM beendet oder bleibt der Speicher nahe am VPS-Limit, erhöhen Sie den RAM, reduzieren Sie schwere Prüfungen oder vergrößern Sie deren Intervalle.
Die Statusseite funktioniert auf localhost, aber nicht über den öffentlichen Hostnamen. Prüfen Sie, ob der Reverse Proxy den Root-Pfad unverändert weiterleitet, den Host-Header erhält und WebSockets unterstützt. Uptime Kuma unterstützt keine Installation in einem Unterverzeichnis, nutzen Sie also eine eigene Domain oder Subdomain statt eines Pfads wie example.com/uptime-kuma.
Fazit
Uptime Kuma auf einem eigenen VPS gibt Ihnen die Kontrolle über Prüfungen, Alarmwege und die öffentliche Statusseite, aber Updates, Backups, OS-Patches und der externe Wächter für den Monitor gehen ebenfalls auf Ihr Konto. Wählen Sie einen VPS an einem anderen Standort als die Produktion, installieren Sie v2 mit Docker Compose oder nutzen Sie die Ein-Klick-App, nachdem Sie deren angegebene Version geprüft haben, setzen Sie Caddy davor und schalten Sie die Kanäle auf, die Ihr Team tatsächlich verfolgt.
Häufig gestellte Fragen
Wie viel RAM braucht Uptime Kuma?
Für Uptime Kuma gibt es keine verlässliche Formel von Monitoranzahl zu RAM, weil der Verbrauch von Monitortyp, Prüfintervall, Wiederholungseinstellungen, Verlaufsaufbewahrung und der Nutzung der Browser Engine abhängt. Für eine kleine Menge einfacher Prüfungen starten Sie mit 1 GB RAM und beobachten den tatsächlichen Verbrauch mit docker stats uptime-kuma. Erhöhen Sie den Speicher, wenn der Verbrauch nahe am Limit bleibt oder der Container per OOM beendet wird.
Sollte ich Uptime Kuma auf demselben Server wie meine Anwendung betreiben?
Nein. Teilen sich Monitoring-Werkzeug und Anwendung einen Server, nimmt ein Ausfall beide gleichzeitig offline, und Sie verlieren die Alarmierung genau dann, wenn Sie sie am dringendsten brauchen. Betreiben Sie Uptime Kuma auf einem eigenen VPS, idealerweise in einem anderen Rechenzentrum.
Kann Uptime Kuma Warnungen an Telegram, Discord und Slack senden?
Ja. Telegram, Discord und Slack gehören zu den eingebauten Benachrichtigungsdiensten, neben E-Mail, generischen Webhooks, PagerDuty, ntfy, Mattermost und vielen weiteren. Telegram nutzt ein Bot-Token und eine Chat-ID, Discord und Slack nutzen Webhook-URLs. Sie können mehrere Benachrichtigungskanäle an denselben Monitor hängen.
Was ist der Unterschied zwischen Uptime Kuma und UptimeRobot?
Uptime Kuma hosten Sie selbst, also verwalten Sie Server, Updates, Backups und Alarmwege. Es unterstützt Prüfintervalle bis hinunter zu 20 Sekunden. UptimeRobot ist gehostetes SaaS, und der aktuelle kostenlose Tarif enthält 50 Monitore mit Prüfungen alle fünf Minuten. Nehmen Sie Uptime Kuma, wenn Sie die Kontrolle wollen, und UptimeRobot, wenn Sie den Monitoring-Server nicht betreiben möchten.
Hat Uptime Kuma eine öffentliche Statusseite?
Ja. Sie wählen aus, welche Monitore sichtbar sind, gruppieren sie, veröffentlichen mehrere Statusseiten, hängen eigene Domains daran und planen Wartungsmeldungen. Die Selbstanmeldung von Besuchern per E-Mail ist nicht eingebaut, nutzen Sie also ein separates kundenorientiertes Statusseiten-Werkzeug, wenn Kunden Updates abonnieren sollen.
