Zum Hauptinhalt springen
S-EDV news
← Alle Anleitungen
📘 Anleitung Synology / NAS 11.06.2026 · 10 min Lesezeit

changedetection.io auf dem Synology NAS installieren: Webseiten-Änderungen überwachen

Mit changedetection.io überwachst du Webseiten automatisch auf Änderungen – selbst gehostet auf dem Synology NAS. Anleitung mit Playwright-Browser-Container für JavaScript-Seiten und ntfy-Benachrichtigungen.

changedetection.io auf dem Synology NAS installieren und Webseiten Änderungen automatisch überwachen

Wer Webseiten manuell auf Änderungen prüft, verliert Zeit und übersieht trotzdem Wichtiges. changedetection.io automatisiert genau das: Du legst URLs an, bestimmst das Prüfintervall und bekommst eine Benachrichtigung, sobald sich etwas ändert. Für KMU sind das Lieferanten-Preislisten, Compliance-Seiten, Gesetzesänderungen oder Ausschreibungsportale. Privatnutzer nutzen den Dienst für Restock-Alerts, Ticketverfügbarkeit oder Behörden-Neuigkeiten. Der Dienst ist aktiv gepflegt (Version 0.55.7, Mai 2026, über 31.900 GitHub-Sterne), vollständig Open Source und läuft auf dem Synology NAS als Docker-Compose-Projekt – ohne Cloud-Abhängigkeit und ohne monatliche Kosten.

Voraussetzungen

  1. Synology NAS mit DSM 7.2 oder neuer, x86_64-Architektur (empfohlen; arm64 und arm/v7 werden ebenfalls unterstützt)
  2. Mindestens 2 GB RAM, bei Nutzung des Playwright-Browser-Containers mindestens 4 GB empfohlen
  3. Container Manager aus dem Synology Package Center installiert
  4. Ausreichend freier Speicherplatz auf Volume1 (mindestens 1 GB für Snapshots bei vielen Watches)
  5. Netzwerkzugang zum NAS im lokalen Netz oder per VPN
  6. Optional: laufende ntfy-Instanz auf dem NAS (siehe ntfy auf dem Synology NAS installieren)

Schritt 1: Datenverzeichnis anlegen

Öffne die File Station und lege den Ordner /volume1/docker/changedetection an. Dieser Pfad wird später als einziges Pflicht-Volume in den Container eingebunden und enthält die komplette Watch-Liste, alle Snapshots, Diff-Historien und Benachrichtigungseinstellungen. Zum Anlegen von Docker-Ordnern auf dem Synology NAS – einschließlich PUID/PGID-Ermittlung – lies die Grund-Anleitung Docker-Ordner und Berechtigungen auf dem Synology NAS.

Das offizielle changedetection.io-Image läuft als root, daher sind keine speziellen Eigentümerrechte nötig. PUID und PGID sind im offiziellen dgtlmoon-Image nicht vorhanden – diese Variablen existieren nur im inoffiziellen LinuxServer-Image, das einen anderen Volume-Pfad (/config statt /datastore) und andere Defaults verwendet. Verwende in dieser Anleitung ausschließlich das offizielle Image.

Verifizieren: Der Ordner /volume1/docker/changedetection ist in der File Station sichtbar und leer. Kein weiterer Unterordner ist nötig – changedetection.io legt seine Struktur beim ersten Start selbst an.

Schritt 2: Compose-Datei erstellen

Wechsle im Container Manager zu Projekt → Erstellen. Vergib den Projektnamen changedetection und lege den Projektpfad auf /volume1/docker/changedetection fest. Wie du ein Compose-Projekt im Container Manager anlegst, zeigt die Grund-Anleitung Container Manager auf dem Synology NAS: Docker-Compose-Projekt anlegen.

Trage die folgende compose.yaml ein. Ersetze DEINE-NAS-IP durch die tatsächliche IP-Adresse deines NAS (z. B. 192.168.1.100). Verwende ausschließlich Leerzeichen zur Einrückung – der Container Manager reagiert empfindlich auf Tab-Zeichen.

ParameterWertHinweis
Image (Haupt)ghcr.io/dgtlmoon/changedetection.io:latestOffizielles Image (GitHub Container Registry); :latest pinnen oder auf konkrete Version wechseln
Image (Browser)dgtlmoon/sockpuppetbrowser:latestPlaywright-/Chrome-Container für JS-Seiten; optional, aber empfohlen
Port5055:5000Host-Port 5055 frei wählbar; intern läuft die UI auf 5000
Volume/volume1/docker/changedetection:/datastoreEinziges Pflicht-Volume; enthält alle persistenten Daten
Architekturamd64, arm64, arm/v7, arm/v6Alle gängigen Synology-Plattformen werden unterstützt
services:
  changedetection:
    image: ghcr.io/dgtlmoon/changedetection.io:latest
    container_name: changedetection
    hostname: changedetection
    restart: unless-stopped
    ports:
      - "5055:5000"
    volumes:
      - /volume1/docker/changedetection:/datastore
    environment:
      - TZ=Europe/Berlin
      - PLAYWRIGHT_DRIVER_URL=ws://sockpuppetbrowser:3000
      - BASE_URL=http://DEINE-NAS-IP:5055
      # - FETCH_WORKERS=10
      # - HIDE_REFERER=true
      # - DISABLE_VERSION_CHECK=true
    depends_on:
      - sockpuppetbrowser
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:5000"]
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 90s

  sockpuppetbrowser:
    image: dgtlmoon/sockpuppetbrowser:latest
    container_name: changedetection-browser
    hostname: sockpuppetbrowser
    restart: unless-stopped
    cap_add:
      - SYS_ADMIN
    environment:
      - SCREEN_WIDTH=1920
      - SCREEN_HEIGHT=1024
      - SCREEN_DEPTH=16
      - MAX_CONCURRENT_CHROME_PROCESSES=10

Wichtig: Die Umgebungsvariable PLAYWRIGHT_DRIVER_URL muss exakt den hostname-Wert des Browser-Containers enthalten – hier sockpuppetbrowser. Jeder Tippfehler führt zu „connection refused“-Fehlern, ohne dass die UI eine klare Meldung ausgibt. Der Browser-Container benötigt zwingend cap_add: SYS_ADMIN, damit Chromium seine Sandbox starten kann. Ohne diese Linux-Capability schlägt der Start mit „Failed to launch the browser process“ fehl.

Verifizieren: Im Container Manager unter Projekt → changedetection sind beide Services – changedetection und changedetection-browser – mit dem Status Wird ausgeführt (grüner Punkt) aufgelistet. Der Healthcheck des Haupt-Containers wechselt nach spätestens 90 Sekunden von „starting“ auf „healthy“. Falls der Browser-Container sofort stoppt, fehlt die SYS_ADMIN-Capability oder das Image wurde nicht vollständig geladen.

Schritt 3: Firewall-Regel für Port 5055 hinzufügen

Wenn die DSM-Firewall aktiv ist, musst du eine Regel für den Host-Port 5055 anlegen. Die detaillierte Vorgehensweise beschreibt die Grund-Anleitung DSM-Firewall auf dem Synology NAS: Ports für Docker-Container freigeben. Kurzweg: Systemsteuerung → Sicherheit → Firewall → Bearbeiten → Hinzufügen, Port 5055 (TCP), Quelle auf das lokale Subnetz einschränken.

Verifizieren: Rufe im Browser http://DEINE-NAS-IP:5055 auf. Die changedetection.io-Startseite mit der leeren Watch-Liste erscheint. Falls die Seite nicht lädt, prüfe Firewall-Regeln und ob der Container auf Port 5055 lauscht.

Schritt 4: Ersten Watch anlegen und Fetcher wählen

Öffne die Web-UI unter http://DEINE-NAS-IP:5055 und klicke auf + Watch hinzufügen. Trage die URL der zu überwachenden Seite ein.

Im Feld Request / Fetcher wählst du die passende Abruf-Methode:

  1. Basic fast Fetch (Standard): Einfacher HTTP-Abruf ohne JavaScript-Rendering. Geeignet für statische HTML-Seiten, RSS-Feeds und JSON-APIs. Schnell und ressourcenschonend.
  2. Playwright Chromium (Browser-Container): Rendert die Seite vollständig im Chrome-Browser, führt JavaScript aus und wartet auf dynamische Inhalte. Notwendig für Single-Page-Applications, Shops mit dynamisch geladenen Preisen und Login-geschützte Bereiche.

Für KMU-Szenarien lohnt der Playwright-Fetcher besonders bei Lieferanten-Shops mit JavaScript-gerenderten Preisen. Der dedizierte „Price & Product Restock“-Fetcher erkennt strukturierte Preisdaten und löst Alerts gezielt bei Preissenkungen oder Neuverfügbarkeit aus.

Verifizieren: Der neue Watch erscheint in der Liste mit dem Status Fetching… oder OK. Nach dem ersten erfolgreichen Abruf zeigt die Spalte „Last checked“ einen Zeitstempel. Klicke auf den Watch-Eintrag und dann auf Preview, um den abgerufenen Seiteninhalt zu sehen. Bei Playwright-Fetcher ist außerdem ein Screenshot verfügbar.

Schritt 5: CSS-Selektor setzen (optional, aber empfohlen)

Ohne Filterung reagiert changedetection.io auf jede Änderung der gesamten Seite – inklusive Werbebanner und Navigationsmenüs. Für praxistaugliche Überwachung empfiehlt sich ein gezielter Selektor.

Öffne den Watch über das Stiftsymbol (Edit). Im Reiter Filters & Triggers findest du das Feld CSS/JSON/XPath Filter. Beispiele:

.product-price
#stock-status
table.price-list

Beim Playwright-Fetcher steht zusätzlich der Visual Selector zur Verfügung: Ein Screenshot der Seite wird angezeigt, und du klickst direkt auf das Element, das überwacht werden soll. changedetection.io generiert daraus automatisch den passenden CSS-Selektor.

Verifizieren: Klicke in der Watch-Liste auf Recheck now (Uhr-Symbol). Nach dem Abruf öffne die Diff-Ansicht (Augensymbol). Geänderte Textstellen erscheinen farbig hervorgehoben: Hinzugefügtes in Grün, Entferntes in Rot. Wenn nur der gewünschte Seitenabschnitt im Diff erscheint und keine Werbeinhalte, ist der Selektor korrekt gesetzt.

Schritt 6: Benachrichtigungen einrichten (ntfy)

changedetection.io verwendet intern die Apprise-Bibliothek und unterstützt über 85 Benachrichtigungskanäle. Für selbst gehostetes ntfy auf demselben NAS (Anleitung: ntfy auf dem Synology NAS installieren) lautet das URL-Schema:

ntfy://NAS-IP:PORT/thema-name

Beispiel für ein selbst gehostetes ntfy ohne TLS:

ntfy://192.168.1.100:2586/preisalarm

Für ntfy mit HTTPS und Token-Authentifizierung:

ntfys://token@ntfy.meinedomain.de/preisalarm

Die Konfiguration erfolgt entweder global für alle Watches (Settings → Notifications) oder pro Watch (Edit → Notifications). Trage die Apprise-URL in das Textfeld ein und klicke auf Send test notification, bevor du speicherst. Achte darauf, dass das Schema ntfy:// korrekt geschrieben ist – ein falsches Schema führt zu einem stillen Fehlschlag ohne Fehlermeldung in der UI.

Verifizieren: Nach dem Klick auf Send test notification erscheint eine Push-Nachricht auf deinem Gerät (ntfy-App) oder im gewählten Kanal. Falls keine Nachricht eintrifft: URL-Schema und Hostname prüfen, ntfy-Container-Status prüfen, und im Container-Log von changedetection nach Apprise-Fehlern suchen (Container Manager → changedetection → Protokoll).

Schritt 7: Update durchführen

Updates auf neue changedetection.io-Versionen sind einfach und verlustfrei, da alle persistenten Daten im gemounteten Volume liegen. Öffne ein SSH-Terminal auf dem NAS (Anleitung: SSH auf dem Synology NAS aktivieren und verbinden) und führe folgenden Befehl aus:

cd /volume1/docker/changedetection
docker compose pull && docker compose up -d

Alternativ steht im Container Manager unter Projekt → changedetection → Aktion → Pull und neu erstellen eine grafische Schaltfläche zur Verfügung. Vor dem Update empfiehlt sich eine kurze Sicherung des Verzeichnisses /volume1/docker/changedetection, da Datenbankmigrationen zwischen Versionen nicht rückgängig gemacht werden können.

Verifizieren: Nach dem Update zeigt docker compose ps oder die Container-Manager-Übersicht beide Container wieder als running. Die Web-UI unter http://DEINE-NAS-IP:5055 ist erreichbar, alle Watches sind vorhanden, und unter Settings → About ist die neue Versionsnummer sichtbar.

Troubleshooting / Typische Fehler

  1. „Failed to launch the browser process“: Der sockpuppetbrowser-Container startet, aber Chrome schlägt fehl. Ursache: cap_add: SYS_ADMIN fehlt in der Compose-Datei. Lösung: Capability hinzufügen, Projekt neu deployen.
  2. JS-Seiten zeigen nur rohen HTML-Quelltext: PLAYWRIGHT_DRIVER_URL ist nicht gesetzt oder falsch geschrieben. Prüfe, ob der Hostname in der URL exakt mit dem hostname-Wert des sockpuppetbrowser-Services übereinstimmt (ws://sockpuppetbrowser:3000).
  3. Web-UI nicht erreichbar: DSM-Firewall blockiert Port 5055. Firewall-Regel prüfen und ggf. hinzufügen. Auch einen Port-Konflikt mit einem anderen Dienst ausschließen.
  4. Container startet, aber kein Schreibzugriff auf /datastore: Das Verzeichnis wurde mit falschen Berechtigungen angelegt. Da das offizielle Image als root läuft, ist das selten ein Problem – aber prüfe, ob der Ordner existiert und beschreibbar ist.
  5. Ntfy-Benachrichtigungen bleiben aus (stiller Fehlschlag): Das URL-Schema ist falsch (z. B. http:// statt ntfy://) oder der Hostname ist nicht auflösbar. Apprise gibt in der UI keinen Fehler aus. Lösung: URL mit Send test notification testen und Container-Log auf Apprise-Fehler prüfen.
  6. sockpuppetbrowser crasht bei vielen gleichzeitigen Watches: RAM-Verbrauch zu hoch. MAX_CONCURRENT_CHROME_PROCESSES im Browser-Container auf 3–5 reduzieren; FETCH_WORKERS im Hauptcontainer entsprechend anpassen.
  7. YAML-Fehler im Container Manager: Tab-Zeichen in der compose.yaml verursachen Parser-Fehler. Ausschließlich Leerzeichen zur Einrückung verwenden.

Häufige Fragen

Brauche ich den sockpuppetbrowser-Container immer?

Nein. Für statische HTML-Seiten, RSS-Feeds und JSON-APIs reicht der Standard-HTTP-Fetcher vollständig aus. Der Browser-Container ist nur nötig, wenn Seiten JavaScript benötigen – typischerweise Single-Page-Applications oder Shops mit dynamisch geladenen Preisen. Da der Browser-Container 300–600 MB RAM belegt, lohnt sich der Verzicht auf NAS-Geräten mit wenig Arbeitsspeicher. Du kannst ihn jederzeit nachrüsten, indem du die Compose-Datei ergänzt und das Projekt neu deployest.

Wie überwache ich nur einen bestimmten Seitenabschnitt?

Über CSS-Selektoren, XPath oder JSONPath im Reiter Filters & Triggers jedes Watch-Eintrags. Beim Playwright-Fetcher steht zusätzlich der Visual Selector zur Verfügung: Du klickst auf dem Screenshot direkt auf das gewünschte Element und changedetection.io erzeugt den Selektor automatisch. So bekommst du Alerts nur für den Preis oder den Lieferstatus – ohne Rauschen durch Werbebanner oder Navigationsänderungen.

Wie lange werden Änderungen gespeichert?

Standardmäßig unbegrenzt. Unter Settings → Keep history kannst du ein Limit setzen (z. B. die letzten 100 Änderungen pro Watch), um den Speicherbedarf zu kontrollieren. Alle Snapshots liegen im Volume /volume1/docker/changedetection.

Kann ich Login-geschützte Seiten überwachen?

Ja, mit dem Playwright-Fetcher. Unter Edit → Browser Steps kannst du Aktionen hinterlegen: Felder ausfüllen, Buttons klicken, Formulare absenden. So loggst du dich vor dem Abruf automatisch ein und changedetection.io überwacht den Bereich hinter dem Login – geeignet für Kundenportale oder interne Intranet-Seiten.

Wie viele Seiten kann ich gleichzeitig überwachen?

Beliebig viele. Alle Watches laufen als interne Queue. Die Umgebungsvariable FETCH_WORKERS (Standard: 10) steuert die Parallelität. Bei vielen Watches oder kurzen Intervallen kannst du den Wert erhöhen. Beachte, dass der Browser-Container ein separates Limit über MAX_CONCURRENT_CHROME_PROCESSES hat.

Wie aktualisiere ich changedetection.io?

Im SSH-Terminal aus dem Compose-Verzeichnis: docker compose pull && docker compose up -d. Alternativ nutze die Container-Manager-Funktion Pull und neu erstellen. Die Daten in /volume1/docker/changedetection bleiben vollständig erhalten. Vor größeren Updates empfiehlt sich eine kurze Sicherung dieses Ordners.

Fazit

changedetection.io ist eines der ausgereiftesten selbst gehosteten Monitoring-Werkzeuge für Webseiten. Die Kombination aus einfachem HTTP-Fetcher für statische Inhalte und Playwright-Browser-Container für JavaScript-lastige Seiten macht es universell einsetzbar – von der Lieferanten-Preisliste bis zur Compliance-Seite. Der KMU-Mehrwert liegt im Preis: null Euro laufende Kosten, keine Datenweitergabe, volle Kontrolle über die Monitoring-Regeln. Wer bereits ntfy auf dem Synology NAS betreibt, kann Benachrichtigungen in wenigen Minuten einrichten. Die einzige spürbare Einschränkung ist der RAM-Bedarf des Browser-Containers auf Geräten mit weniger als 4 GB – dort lohnt es sich, den Browser-Service wegzulassen und nur bei Bedarf zu aktivieren. Für einen vollständigen Monitoring-Stack auf dem NAS eignet sich changedetection.io gut als Ergänzung zu weiteren Admin-Werkzeugen – zum Beispiel dem Healthchecks-Dienst für Cronjob- und Backup-Monitoring auf demselben NAS.

Weiterführende Anleitungen und Quellen

  1. ntfy auf dem Synology NAS installieren: Push-Benachrichtigungen für Server und Skripte
  2. Healthchecks auf dem Synology NAS installieren: Cronjobs und Backups überwachen
  3. Container Manager auf dem Synology NAS: Docker-Compose-Projekt anlegen, starten und aktualisieren
  4. DSM-Firewall auf dem Synology NAS: Ports für Docker-Container freigeben
  5. Beszel Server Monitoring mit Docker einrichten: Hub und Agent installieren

Offizielle Quellen: changedetection.io GitHub-Repository (docker-compose.yml, Dokumentation) · changedetection.io auf Docker Hub