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

Change Detection 2026 selbst hosten: Browser-Fetching, Benachrichtigungen und Persistenz

Ein praxisnaher Leitfaden zum Self-Hosting von Change Detection mit Docker, Ports, persistenten Daten, TLS, Sicherheit, Backups und den Fehlern, die den Produktionseinsatz verhindern.

Ein Change-Detection-Container kann grün sein, während die für Nutzer relevante Funktion fehlerhaft ist. Bei Change Detection besteht dieser versteckte Fehler meist darin, dass einfache Requests auf Bot-Challenges stoßen oder der Browser-Service nicht erreichbar ist. Dieser Leitfaden verwendet als Abnahmetest: „Eine statische Seite und eine JavaScript-gerenderte Seite überwachen, eine kontrollierte Änderung einführen und für beide eine Diff-Benachrichtigung erhalten.“ Die Bereitstellung wird rückwärts von diesem Ergebnis her geplant.

Change Detection hat im Stack eine klar definierte Aufgabe: die Überwachung von Seitenänderungen, ohne einen Scraper schreiben zu müssen. Die Frage für den Produktionseinsatz lautet daher nicht, ob Port 5000 einmal antwortet, sondern ob Zustand, Abhängigkeiten und öffentliche Adresse nach einem Neustart, Update und Restore weiterhin zusammenpassen.

Change Detection von seinen Abhängigkeiten trennen

Die kleinste verantwortbare Change-Detection-Topologie umfasst einen privaten Listener auf Port 5000, eine Ingress-Route und eine dokumentierte Zustandsgrenze. Der Netzwerkvertrag für Change Detection ist ein Remote-Browser wie Playwright für JavaScript-lastige Seiten. Halte private Endpunkte im internen DNS, erlaube nur erforderliche ausgehende Verbindungen und gib Change Detection ein Service-Credential mit eingeschränktem Geltungsbereich.

Validiere die Topologie, indem du einen Client in einer sauberen Umgebung bittest, eine statische Seite und eine JavaScript-gerenderte Seite zu überwachen, eine kontrollierte Änderung einzuführen und für beide eine Diff-Benachrichtigung zu erhalten. Beobachte dabei die Browser-Worker-Konkurrenz, den Screenshot-Verlauf, die Latenz der Ziele und Anti-Bot-Challenges. Das Ergebnis zeigt, ob die nächste Verbesserung beim Arbeitsspeicher, Storage, Netzwerk oder in einem separaten Worker ansetzen sollte, statt zu einer beliebigen Dimensionierung des Containers zu verleiten.

Die Wiederherstellung von Change Detection messbar machen

Definiere Recovery Point und Recovery Time für Change Detection anhand von Überwachungsdefinitionen, Verlauf, Snapshots und Benachrichtigungseinstellungen. Binde /datastore vor dem Bootstrap ein, schreibe harmlose Testdaten und ersetze den Container, um zu beweisen, dass dieser Pfad tatsächlich persistent ist. Ein Named Volume löst die Persistenz bei Redeployments, nicht jedoch einen kompromittierten Server oder den Verlust des Servers.

Baue eine saubere Restore-Umgebung auf, verwende dieselbe gepinnte Anwendungsversion und beweise, dass Überwachungsdefinitionen, Verlauf und Benachrichtigungsziele wiederhergestellt werden und die kontrollierte Änderung erneut erkannt wird. Dokumentiere Befehle, Anpassungen der Besitzrechte und die verstrichene Zeit. Der Backup-Leitfaden bietet dafür einen nützlichen Standard: Ein Backup gilt nach der Wiederherstellung als vertrauenswürdig, nicht nach dem Upload.

Change Detection nach dem Bootstrap absichern

Übernimm keine Sicherheitsannahmen aus einem lokalen Tutorial. Das spezifische Risiko bei Change Detection besteht darin, den Überwachungsverlauf und Notification-Tokens ohne Authentifizierung offenzulegen. Im Produktionseinsatz sollte der Überwachungsverlauf daher geschützt werden, da er private URLs, Cookies und Zugangsdaten für Benachrichtigungen enthalten kann.

BASE_URL ist eine Konfiguration und kein Secret. Halte seinen Wert explizit fest und schütze gleichzeitig die separaten Zugangsdaten, die Change Detection verwendet. Beschränke den Zugriff auf Dateisystem und Netzwerk, sichere Setup-Endpunkte ab und definiere Limits für Uploads, Requests oder Ausführung rund um Browser-Worker-Konkurrenz, Screenshot-Verlauf, Ziellatenz und Anti-Bot-Challenges.

Belege sammeln, bevor Change Detection live geht

Erstelle vor dem Zugriff durch echte Nutzer ein Release-Arbeitsblatt für Change Detection. Es muss das gepinnte Image, Port 5000, die kanonische Origin, persistente Pfade und den Verantwortlichen für einen Remote-Browser wie Playwright für JavaScript-lastige Seiten nennen. Füge das erwartete Ergebnis dieses Ablaufs bei: eine statische Seite und eine JavaScript-gerenderte Seite überwachen, eine kontrollierte Änderung einführen und für beide eine Diff-Benachrichtigung erhalten.

Verwende das Arbeitsblatt nach einem normalen Austausch des Containers und nach einem sauberen Restore. Die Wiederherstellung gilt nur dann als erfolgreich, wenn Überwachungsdefinitionen, Verlauf und Benachrichtigungsziele zurückkehren und die kontrollierte Änderung erneut erkannt wird. Erfasse außerdem einen kurzen Ressourcen-Trace zu Browser-Worker-Konkurrenz, Screenshot-Verlauf, Ziellatenz und Anti-Bot-Challenges. Bewahre ihn neben dem Release auf, damit künftige Kapazitätsänderungen mit derselben Auslastung verglichen werden können.

Füge einen kontrollierten Fehler ein: Verweigere der Test-Identity vorübergehend den Zugriff auf einen Remote-Browser wie Playwright für JavaScript-lastige Seiten. Bestätige, dass Change Detection das Problem an der richtigen Grenze meldet, stelle den gültigen Zustand wieder her und führe den Ablauf erneut aus. Damit wird die Sichtbarkeit von Fehlern geprüft, nicht nur der Erfolg. So verhindert du, dass eine gesund aussehende Oberfläche einen fehlerhaften Worker, Callback oder eine unterbrochene Datenbankverbindung verbirgt.

Den Start von Change Detection reproduzierbar machen

Ein minimales Kommando ist nützlich, wenn es sichtbar macht, was die Plattform später verwalten wird.

docker run -d \
  --name change-detection \
  --restart unless-stopped \
  -p 127.0.0.1:5000:5000 \
  -v change-detection-data:/datastore \
  -e BASE_URL=https://app.example.com \
  dgtlmoon/changedetection.io:latest

Port 5000 bleibt hier auf dem Host privat, und jeder erforderliche Pfad ist explizit angegeben. Ergänze die geprüften Verbindungseinstellungen für einen Remote-Browser wie Playwright für JavaScript-lastige Seiten und verwende private Namen für private Services. Überprüfe den Start sowohl anhand der Logs als auch mit dem anwendungsspezifischen Nachweis: eine statische Seite und eine JavaScript-gerenderte Seite überwachen, eine kontrollierte Änderung einführen und für beide eine Diff-Benachrichtigung erhalten. Sobald alles verifiziert ist, pinne die Image-Version, damit ein routinemäßiger Austausch das Verhalten nicht unbemerkt verändert.

Domains, Proxy-Header und Port 5000

Behandle die externe Change-Detection-URL als Konfiguration, die Redeployments übersteht. Setze zuerst BASE_URL und jeden Browser-Endpunkt auf Adressen, die der Container erreichen kann. Leite anschließend den Hostnamen an Port 5000 weiter und bewahre dabei den ursprünglichen Host und das ursprüngliche Schema.

Die Checkliste zur Deployment-Erreichbarkeit kann belegen, dass Requests den Container erreichen. Danach sollte der bekannte Fehler — einfache Requests stoßen auf Bot-Challenges oder der Browser-Service ist nicht erreichbar — in Change Detection, seinem Zustand oder seiner Auslastung untersucht werden und nicht in der Zertifikatsautomatisierung.

Change Detection rund um seinen tatsächlichen Engpass betreiben

Erstelle Dashboards für Browser-Worker-Konkurrenz, Screenshot-Verlauf, Ziellatenz und Anti-Bot-Challenges. Ein CPU-Graph ohne Kontext zu dieser Auslastung kann nicht erklären, warum Change Detection langsam ist. Ergänze einen synthetischen oder geplanten Check, der mit harmlosen Testdaten eine statische Seite und eine JavaScript-gerenderte Seite überwacht, eine kontrollierte Änderung einführt und für beide eine Diff-Benachrichtigung erhält.

Berücksichtige vor einem Upgrade das anwendungsspezifische Risiko: Playwright-Image-Versionen, Datastore-Migrationen und Integrationen für Benachrichtigungen sollten gemeinsam aktualisiert werden. Stelle ein aktuelles Backup in einer isolierten Bereitstellung wieder her, führe dort die Migrationen aus und vergleiche das Verhalten. Wenn einfache Requests auf Bot-Challenges stoßen oder der Browser-Service nicht erreichbar ist, untersuche zunächst die betroffene Grenze — öffentliche Origin, Storage oder Abhängigkeit — bevor du andere Einstellungen änderst.

Was Dockup für Change Detection automatisieren sollte

Ein Dockup-Template sollte Image, Port 5000, Mounts, Health-Timing, Domain, TLS und Secret-Bereitstellung festlegen. Dockup sollte private Bereiche eines Remote-Browsers wie Playwright für JavaScript-lastige Seiten im internen Netzwerk halten und keinen zusätzlichen öffentlichen Port freigeben. Dieselbe Bereitstellung kann auf Dockup-Server und kundenseitig angebundene Kapazitäten zielen.

Sobald die Route aktiv ist, wende die öffentliche Einstellung an und versuche, eine statische Seite und eine JavaScript-gerenderte Seite zu überwachen, eine kontrollierte Änderung einzuführen und für beide eine Diff-Benachrichtigung zu erhalten. Sichere Überwachungsdefinitionen, Verlauf, Snapshots und Benachrichtigungseinstellungen und nimm den Restore-Test in den Betriebsplan auf. Das sind Verantwortlichkeiten von Change Detection, die auch nach der Bereitstellung der Infrastruktur sichtbar bleiben.

Häufig gestellte Fragen

Was benötigt Change Detection für eine Bereitstellung im Produktionseinsatz?

Leite den Change-Detection-Container auf Port 5000 über eine einzige HTTPS-Origin weiter. Die unterstützende Netzwerkanforderung ist ein Remote-Browser wie Playwright für JavaScript-lastige Seiten. Betrachte Change Detection erst dann als bereit, wenn du eine statische Seite und eine JavaScript-gerenderte Seite überwachen, eine kontrollierte Änderung einführen und für beide eine Diff-Benachrichtigung erhalten kannst.

Welche Change-Detection-Daten gehören in ein Backup?

Speichere /datastore persistent und nimm Überwachungsdefinitionen, Verlauf, Snapshots und Benachrichtigungseinstellungen in dasselbe Recovery-Manifest auf. Ein sauberer Change-Detection-Restore ist nur dann erfolgreich, wenn Überwachungsdefinitionen, Verlauf und Benachrichtigungsziele zurückkehren und die kontrollierte Änderung erneut erkannt wird.

Benötigt Change Detection HTTPS hinter einem Reverse Proxy?

Verwende HTTPS für die öffentliche Change-Detection-Origin und halte Port 5000 in der internen Route. Wende die Change-Detection-Einstellung korrekt an: Setze BASE_URL und jeden Browser-Endpunkt auf Adressen, die der Container erreichen kann. Bei Change Detection schützt HTTPS Zugangsdaten oder Benutzerinhalte während der Übertragung und sorgt für konsistentes, von der Origin abhängiges Client-Verhalten.

Wie sollte ein Change-Detection-Upgrade getestet werden?

Stelle den aktuellen Change-Detection-Zustand in einer isolierten Bereitstellung wieder her, wende die Zielversion an und wiederhole den Abnahmetest. Gehe dabei besonders sorgfältig vor, da Playwright-Image-Versionen, Datastore-Migrationen und Integrationen für Benachrichtigungen gemeinsam aktualisiert werden sollten. Behalte das vorherige Change-Detection-Image, bis die Grenzen für Datenmigration und Rollback geklärt sind.