Journal-IndexDockup / Feldnotiz
Note / self-host-healthchecks

Healthchecks 2026 selbst hosten: Cron-Pings, Benachrichtigungen und Datenbank-Backups

Healthchecks mit korrekten Ports, persistentem Speicher, HTTPS, Secrets, Backups und Upgrade-Prüfungen selbst hosten. Erfahren Sie, wie Sie vorgehen, wenn Cronjobs eine interne URL anpingen.

Healthchecks selbst zu hosten wird beim ersten Redeploy interessant, nicht beim ersten docker run. Wenn Cronjobs eine interne URL anpingen oder E-Mail-Worker nicht laufen, kann Docker trotzdem einen vollkommen gesunden Prozess melden. Die folgende Bereitstellung orientiert sich am beobachtbaren Verhalten: Senden Sie aus einem Testjob Start-, Erfolgs- und Fehler-Pings, lassen Sie anschließend einen geplanten Ping aus und erhalten Sie die Benachrichtigung über den fehlenden Job.

Die Aufgabe von Healthchecks ist klar definiert: Dead-Man-Monitoring für Cronjobs und Hintergrundaufgaben. Diese Beschreibung zeigt, was öffentlich erreichbar bleiben muss, was privat bleiben sollte und welche Bestandteile ein Backup wiederherstellen muss.

Den Zustand sichern, den Healthchecks nicht neu erstellen kann

Der standardmäßige Healthchecks-Container benötigt keinen Mount für Anwendungsdaten. Der Wiederherstellungsumfang ist dennoch klar definiert: die Anwendungsdatenbank und die Konfiguration für Benachrichtigungen. Erstellen Sie kein leeres Volume, nur damit die Bereitstellung zustandsbehaftet aussieht; bewahren Sie stattdessen die exakte Image-Referenz und die geprüfte Konfiguration auf.

Erstellen Sie Healthchecks auf einem leeren Host neu und führen Sie die Abnahmetransaktion aus. Die Wiederherstellung ist erfolgreich, wenn Checks, Zeitpläne, Integrationen und Ping-Keys zurückkehren und ein absichtlich fehlender Ping die erwartete Benachrichtigung auslöst. Jede verbundene Datenbank oder jeder Kollaborationsdienst folgt seinem eigenen anwendungskonsistenten Backup-Plan, während der austauschbare Webcontainer aus dem Code neu erstellt wird. Der Leitfaden für Deployments von Git bis in die Produktion beschreibt diese reproduzierbare Grenze.

Bewahren Sie eine Prüfsumme oder einen Digest für das bekannte funktionierende Image auf und testen Sie nach Updates erneut. Bei einem zustandslosen Dienst ist ein erfolgreicher Neuaufbau der Restore-Test; für externen Zustand muss das Healthchecks-Runbook auf den separaten Verantwortlichen und das entsprechende Wiederherstellungsverfahren verweisen.

Einen austauschbaren Healthchecks-Container erstellen

Verwenden Sie einen Befehl, der alle wichtigen Entscheidungen sichtbar macht. Diese Basiskonfiguration bindet Healthchecks an das Loopback-Interface des Hosts, ergänzt die bekannten Daten-Mounts und setzt die erste erforderliche Einstellung. Ergänzen Sie für produktive Benachrichtigungen die geprüften Verbindungseinstellungen für Postgres und einen funktionierenden E-Mail-Versand; verwenden Sie für private Dienste private Namen.

docker run -d \
  --name healthchecks \
  --restart unless-stopped \
  -p 127.0.0.1:8000:8000 \
  -e SECRET_KEY=replace-with-a-long-random-value \
  -e SITE_ROOT=https://app.example.com \
  -e ALLOWED_HOSTS=app.example.com \
  -e DB=postgres \
  -e DB_HOST=postgres.internal \
  -e DB_NAME=healthchecks \
  -e DB_USER=healthchecks \
  -e DB_PASSWORD=replace-with-a-strong-database-password \
  healthchecks/healthchecks:latest

Ersetzen Sie frei schwebende Tags durch eine getestete Version oder einen Digest. Prüfen Sie nach dem Start docker logs --tail 200 healthchecks und bestätigen Sie, dass der Prozess auf Port 8000 lauscht. Führen Sie anschließend die Healthchecks-Abnahmeaktion aus. Eine Antwort von der Root-Seite kann nicht beweisen, dass das vollständige Szenario erfolgreich ist: Senden Sie aus einem Testjob Start-, Erfolgs- und Fehler-Pings, lassen Sie anschließend einen geplanten Ping aus und erhalten Sie die Benachrichtigung über den fehlenden Job.

Wovon Healthchecks abhängt

Ziehen Sie um Healthchecks drei Grenzen: den Eingang zu Port 8000, den dauerhaft zu speichernden Zustand und die unterstützenden Anforderungen. Der Container ist austauschbar, die beiden anderen Bereiche benötigen jedoch klare Verantwortliche. Der Netzwerkvertrag für Healthchecks umfasst Postgres und einen funktionierenden E-Mail-Versand für produktive Benachrichtigungen. Halten Sie private Endpunkte im internen DNS, erlauben Sie nur erforderliche ausgehende Verbindungen und geben Sie Healthchecks ein Service-Credential mit begrenztem Umfang.

Das Diagramm ist vollständig, wenn ein sauberer Client aus einem Testjob Start-, Erfolgs- und Fehler-Pings senden, anschließend einen geplanten Ping auslassen und die Benachrichtigung über den fehlenden Job erhalten kann. Erfassen Sie Zeit- und Ressourcendaten für die Anzahl der Checks, Kulanzzeiträume, die Verteilung der Benachrichtigungen, den E-Mail-Versand und Datenbankschreibvorgänge. Wenn die Transaktion fehlschlägt, zeigt die erste Grenze, die sich nicht wie dokumentiert verhält, ob Routing, lokale Kapazität oder ein unterstützender Dienst untersucht werden muss.

Healthchecks routen, ohne HTTPS falsch darzustellen

Legen Sie den endgültigen Healthchecks-Hostnamen fest, bevor Benutzer Callbacks oder Client-Einstellungen speichern, und setzen Sie SITE_ROOT und ALLOWED_HOSTS auf die externe HTTPS-Adresse. Die Plattformroute sollte TLS einmalig terminieren und auf den privaten Port 8000 zeigen.

Führen Sie die Abnahmetransaktion von außerhalb aus. Wenn der Client Healthchecks nie erreicht, verwenden Sie die Checkliste für die SSL-Validierung für DNS- und Zertifikatsprüfungen. Wenn die Anfrage Healthchecks erreicht, Cronjobs jedoch eine interne URL anpingen oder E-Mail-Worker nicht laufen, ändern Sie nicht weiter die Proxy-Weiterleitungen, sondern untersuchen Sie stattdessen die anwendungsspezifische Grenze.

Welche Nachweise vor dem Livegang von Healthchecks gesammelt werden sollten

Erstellen Sie ein kleines, kurzlebiges Healthchecks-Fixture und bewahren Sie es für jedes Release auf. Das Fixture sollte den tatsächlichen Workflow testen: Senden Sie aus einem Testjob Start-, Erfolgs- und Fehler-Pings, lassen Sie anschließend einen geplanten Ping aus und erhalten Sie die Benachrichtigung über den fehlenden Job. Notieren Sie den Image-Digest, den externen Hostnamen, die Adresse der Abhängigkeit und das erwartete Ergebnis, damit ein späterer Operator den Test wiederholen kann, ohne diesen Leitfaden interpretieren zu müssen.

Führen Sie das Fixture dreimal aus. Verwenden Sie beim ersten Mal die frische Bereitstellung. Ersetzen Sie beim zweiten Mal den Container, ohne den dauerhaft gespeicherten Zustand anzutasten. Stellen Sie beim dritten Mal das Backup in einer leeren Umgebung wieder her. Der dritte Durchlauf ist nur dann erfolgreich, wenn Checks, Zeitpläne, Integrationen und Ping-Keys zurückkehren und ein absichtlich fehlender Ping die erwartete Benachrichtigung auslöst. Erfassen Sie während jedes Durchlaufs Latenz und Ressourcennutzung im Zusammenhang mit der Anzahl der Checks, Kulanzzeiträumen, der Verteilung der Benachrichtigungen, dem E-Mail-Versand und Datenbankschreibvorgängen. Dies wird zur Grundlage für Benachrichtigungen statt eines willkürlichen CPU-Prozentsatzes.

Testen Sie abschließend gezielt den Negativpfad: Verweigern Sie der Testidentität vorübergehend den Zugriff auf Postgres und den funktionierenden E-Mail-Versand für produktive Benachrichtigungen. Bestätigen Sie, dass Healthchecks sichtbar fehlschlägt, ohne den Zustand zu beschädigen, stellen Sie die korrekten Bedingungen wieder her und wiederholen Sie die erfolgreiche Transaktion. Ein Release-Protokoll mit diesen vier Ergebnissen ist ein aussagekräftigerer Nachweis als Screenshots eines Dashboards oder eine einmalige curl-Antwort.

Fehlerübungen für Healthchecks

Beobachten Sie die Arbeit, die Healthchecks ausführt: die Anzahl der Checks, Kulanzzeiträume, die Verteilung der Benachrichtigungen, den E-Mail-Versand und Datenbankschreibvorgänge. Legen Sie für diese Arbeit Limits mit ausreichendem Spielraum fest und vermeiden Sie eine Liveness-Probe, die mit ihr konkurriert. Die Prüfung durch den Operator sollte weiterhin planmäßig versuchen, aus einem Testjob Start-, Erfolgs- und Fehler-Pings zu senden, anschließend einen geplanten Ping auszulassen und die Benachrichtigung über den fehlenden Job zu erhalten.

Denken Sie bei Updates daran, dass Anwendungsmigrationen und die Worker-Konfiguration gemeinsam aktualisiert werden müssen, damit die Webseite keine fehlerhafte Zustellung von Benachrichtigungen verdeckt. Stellen Sie den Kandidaten gegen eine wiederhergestellte Kopie bereit und wiederholen Sie den bekannten Test. Wenn Cronjobs eine interne URL anpingen oder E-Mail-Worker nicht laufen, verwenden Sie Laufzeit-Logs und die tatsächliche Netzwerkanfrage, um herauszufinden, welche Annahme sich geändert hat.

Die Vertrauensgrenze von Healthchecks festlegen

Schließen Sie das Bootstrap-Fenster, sobald der erste vertrauenswürdige Administrator existiert. Die konkrete Falle bei Healthchecks besteht darin, ein generiertes Secret zu verwenden, das sich bei jedem Neustart ändert; die sicherere Grenze bilden ein stabiles SECRET_KEY, eingeschränkte Projektmitgliedschaften und die Behandlung von Ping-URLs als Zugangsdaten.

Generieren Sie SECRET_KEY einmalig, halten Sie ihn aus Git heraus und bewahren Sie ihn zusammen mit dem Recovery-Manifest auf, da eine Änderung verschlüsselten oder signierten Anwendungszustand ungültig machen kann. Das private Netzwerk sollte die Zugangsdaten für Abhängigkeiten übertragen, und Rollen innerhalb von Healthchecks sollten nur die kleinstmögliche sinnvolle Aktion erlauben. Halten Sie vertrauliche Request-Bodies und Antworten von Providern aus den routinemäßigen Logs heraus.

Auch ein Dockup-Deployment benötigt einen Healthchecks-Abnahmetest

Dockup kann die austauschbaren Plattformbestandteile übernehmen: den Datenverkehr auf Port 8000 routen, Domain und Zertifikat bereitstellen, Secrets injizieren, persistenten Speicher anbinden und Healthchecks mit verwalteten oder privat angebundenen Diensten verbinden. Dies ist auf der Dockup-Infrastruktur oder auf einem von Ihnen angebundenen Server möglich.

Die Abnahmearbeiten für Healthchecks bleiben klar definiert. Setzen Sie nach dem One-Click-Deployment SITE_ROOT und ALLOWED_HOSTS auf die externe HTTPS-Adresse, verbinden und testen Sie Postgres sowie den funktionierenden E-Mail-Versand für produktive Benachrichtigungen und führen Sie dieses Szenario aus: Senden Sie aus einem Testjob Start-, Erfolgs- und Fehler-Pings, lassen Sie anschließend einen geplanten Ping aus und erhalten Sie die Benachrichtigung über den fehlenden Job. Diese Aufteilung ist beabsichtigt: Dockup beseitigt wiederkehrende Infrastrukturarbeiten, ohne vorzugeben, dass sich Anwendungsrollen, Zugangsdaten für Provider oder die Restore-Richtlinie von selbst festlegen.

Häufig gestellte Fragen

Was benötigt Healthchecks für ein produktives Deployment?

Routen Sie den Healthchecks-Container über einen HTTPS-Origin auf Port 8000. Die unterstützende Netzwerkanforderung umfasst Postgres und einen funktionierenden E-Mail-Versand für produktive Benachrichtigungen. Erklären Sie Healthchecks erst für einsatzbereit, wenn Sie aus einem Testjob Start-, Erfolgs- und Fehler-Pings senden, anschließend einen geplanten Ping auslassen und die Benachrichtigung über den fehlenden Job erhalten können.

Welche Healthchecks-Daten gehören in ein Backup?

Das standardmäßige Healthchecks-Image benötigt keinen Mount für Anwendungsdaten. Bewahren Sie die Konfiguration des Deployments auf und sichern Sie jeden verbundenen Zustand separat. Die Wiederherstellung ist erfolgreich, wenn Checks, Zeitpläne, Integrationen und Ping-Keys zurückkehren und ein absichtlich fehlender Ping die erwartete Benachrichtigung auslöst.

Benötigt Healthchecks HTTPS hinter einem Reverse Proxy?

Verwenden Sie HTTPS für den öffentlichen Healthchecks-Origin und halten Sie Port 8000 auf der internen Route. Setzen Sie die Healthchecks-Einstellung korrekt: SITE_ROOT und ALLOWED_HOSTS müssen auf die externe HTTPS-Adresse zeigen. Bei Healthchecks schützt HTTPS Zugangsdaten oder Benutzerinhalte während der Übertragung und sorgt für ein konsistentes Client-Verhalten, das vom Origin abhängt.

Wie sollte ein Healthchecks-Upgrade getestet werden?

Stellen Sie den aktuellen Healthchecks-Zustand in einem isolierten Deployment wieder her, spielen Sie die Kandidatenversion ein und wiederholen Sie die Abnahmetransaktion. Gehen Sie dabei besonders sorgfältig vor, da Anwendungsmigrationen und die Worker-Konfiguration gemeinsam aktualisiert werden müssen, damit die Webseite keine fehlerhafte Zustellung von Benachrichtigungen verdeckt. Bewahren Sie das vorherige Healthchecks-Image auf, bis die Grenzen für Datenmigration und Rollback verstanden sind.