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

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

changedetection.io auf dem Synology NAS einrichten: Webseiten auf Änderungen überwachen, mit optionalem Browser-Container für JavaScript-Seiten, Passwortschutz, CSS-Filtern und Benachrichtigungen über ntfy.

Geprüft am 30.09.2026 · für changedetection.io 0.60.8

WerbelinksMit * markierte Links sind Werbelinks: Bei einem Kauf erhalten wir eine Provision, der Preis bleibt gleich. Als Amazon-Partner verdiene ich an qualifizierten Verkäufen. Mehr dazu

Webseitenänderungen mit changedetection.io überwachen und Benachrichtigungen erhalten

Wer Webseiten von Hand auf Änderungen prüft, verliert Zeit und übersieht trotzdem Wichtiges. changedetection.io ruft festgelegte Seiten in einem gewählten Intervall ab und meldet jede Änderung. Typische Einsätze im Unternehmen sind Lieferanten-Preislisten, Compliance-Seiten, Gesetzesänderungen und Ausschreibungsportale; privat sind es Verfügbarkeiten oder Behördenmitteilungen. Der Dienst ist Open Source und läuft auf dem Synology NAS als Projekt im Container Manager, ohne Cloud-Dienst.

Voraussetzungen

  1. Synology NAS mit DSM 7.2 oder neuer und Container Manager; das Image gibt es für amd64, arm64 und arm/v7, den Browser-Container nur für amd64 und arm64
  2. Mindestens 2 GB RAM, mit Browser-Container 4 GB
  3. Mindestens 1 GB freier Speicher für Snapshots
  4. Zugriff auf das NAS im lokalen Netz oder per VPN
  5. Optional: ntfy auf dem NAS (siehe ntfy auf dem Synology NAS installieren)

Schritt 1: Datenverzeichnis anlegen

Legen Sie in der File Station den Ordner /volume1/docker/changedetection an. Er nimmt Watch-Liste, Snapshots, Diff-Historie und Einstellungen auf. Grundlagen zu Docker-Ordnern auf dem NAS beschreibt Docker-Ordner und Berechtigungen auf dem Synology NAS.

Das offizielle Image von dgtlmoon läuft als root und kennt keine Variablen PUID und PGID; diese gibt es nur im Image von LinuxServer.io, das zudem /config statt /datastore nutzt. Diese Anleitung verwendet das offizielle Image.

Verifizieren: Der Ordner ist in der File Station sichtbar und leer. Die Unterstruktur legt changedetection.io beim ersten Start an.

Schritt 2: Compose-Datei erstellen

Öffnen Sie im Container Manager Projekt → Erstellen, vergeben Sie den Namen changedetection und den Pfad /volume1/docker/changedetection (Details: Container Manager: Docker-Compose-Projekt anlegen). Tragen Sie die folgende compose.yaml ein und ersetzen Sie NAS-IP durch die LAN-Adresse Ihres NAS, zum Beispiel 192.168.1.100. Rücken Sie nur mit Leerzeichen ein.

ParameterWertHinweis
Image (Anwendung)ghcr.io/dgtlmoon/changedetection.io:0.60.8Offizielles Image, Stand September 2026
Image (Browser)dgtlmoon/sockpuppetbrowser:latestChrome für JavaScript-Seiten, optional; das Projekt veröffentlicht neue Stände nur unter latest
PortNAS-IP:5055:5000Nur im LAN erreichbar; intern läuft die Oberfläche auf 5000
Volume/volume1/docker/changedetection:/datastoreAlle dauerhaften Daten
services:
  changedetection:
    image: ghcr.io/dgtlmoon/changedetection.io:0.60.8
    container_name: changedetection
    hostname: changedetection
    restart: unless-stopped
    ports:
      - "NAS-IP:5055:5000"
    volumes:
      - /volume1/docker/changedetection:/datastore
    environment:
      - TZ=Europe/Berlin
      - PLAYWRIGHT_DRIVER_URL=ws://sockpuppetbrowser:3000
      - BASE_URL=http://NAS-IP:5055
      # - FETCH_WORKERS=10
      # - HIDE_REFERER=true
      # - DISABLE_VERSION_CHECK=true
    depends_on:
      - sockpuppetbrowser
    healthcheck:
      test: ["CMD", "python3", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:5000')"]
      interval: 30s
      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

PLAYWRIGHT_DRIVER_URL muss den hostname des Browser-Containers enthalten, hier sockpuppetbrowser. Der Browser-Container braucht auf vielen Systemen cap_add: SYS_ADMIN, damit Chrome seine Sandbox starten kann. Der Healthcheck nutzt Python, weil das Image kein curl enthält. Brauchen Sie keine JavaScript-Seiten, entfernen Sie den Dienst sockpuppetbrowser, depends_on und PLAYWRIGHT_DRIVER_URL.

Verifizieren: Unter Projekt → changedetection laufen changedetection und changedetection-browser (grüner Punkt). Der Haupt-Container meldet nach spätestens 90 Sekunden „healthy“. Stoppt der Browser-Container sofort, fehlt SYS_ADMIN.

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

Ist die DSM-Firewall aktiv, legen Sie unter Systemsteuerung → Sicherheit → Firewall → Bearbeiten → Erstellen eine Regel für TCP-Port 5055 an und beschränken die Quelle auf Ihr lokales Subnetz (Details: DSM-Firewall: Ports für Docker-Container freigeben). Geben Sie Port 5055 nicht im Router frei.

Verifizieren: http://NAS-IP:5055 zeigt im Browser die leere Watch-Liste.

Schritt 4: Passwort setzen

changedetection.io startet ohne Anmeldung. Jeder im Netz, der den Port erreicht, kann Watches und Benachrichtigungen ändern. Öffnen Sie Settings → General, tragen Sie unter Password ein starkes Passwort ein und speichern Sie.

Verifizieren: In einem privaten Browserfenster fragt http://NAS-IP:5055 nach dem Passwort.

Schritt 5: Ersten Watch anlegen und Fetcher wählen

Tragen Sie auf der Startseite die URL der zu überwachenden Seite ein und klicken Sie auf Watch. Unter Edit → Request wählen Sie den Fetcher:

  1. Basic fast Plaintext/HTTP Client (Standard): einfacher HTTP-Abruf ohne JavaScript, für statische Seiten, RSS-Feeds und JSON-APIs.
  2. Playwright Chromium/Javascript (Browser-Container): rendert die Seite vollständig mit JavaScript, nötig für Single-Page-Anwendungen und Shops mit nachgeladenen Preisen.

Für Preise und Verfügbarkeit gibt es zusätzlich den Watch-Typ für Preis- und Verfügbarkeitserkennung (Restock), der strukturierte Produktdaten auswertet und gezielt bei Preisänderung oder neuer Verfügbarkeit meldet.

Verifizieren: Der Watch erscheint in der Liste, nach dem ersten Abruf zeigt „Last checked“ einen Zeitstempel. Preview zeigt den abgerufenen Inhalt, beim Playwright-Fetcher auch einen Screenshot.

Schritt 6: CSS-Selektor setzen

Ohne Filter meldet changedetection.io jede Änderung der ganzen Seite, auch an Bannern und Menüs. Öffnen Sie den Watch mit Edit und tragen Sie im Reiter Filters & Triggers einen CSS-, XPath- oder JSONPath-Filter ein, zum Beispiel:

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

Mit dem Playwright-Fetcher steht im Reiter Visual Filter Selector ein Screenshot bereit; Sie klicken das gewünschte Element an und changedetection.io erzeugt den Selektor.

Verifizieren: Klicken Sie auf Recheck und öffnen Sie die Diff-Ansicht. Sie enthält nur noch den gewählten Seitenabschnitt; Hinzugefügtes erscheint grün, Entferntes rot.

Schritt 7: Benachrichtigungen einrichten (ntfy)

changedetection.io nutzt die Bibliothek Apprise und damit zahlreiche Benachrichtigungskanäle. Für ntfy auf dem NAS lautet die URL:

ntfy://192.168.1.100:2586/preisalarm

Für ntfy mit HTTPS und Zugriffstoken:

ntfys://TOKEN@ntfy.ihredomain.de/preisalarm

Tragen Sie die URL global unter Settings → Notifications oder je Watch unter Edit → Notifications ein und klicken Sie vor dem Speichern auf Send test notification.

Verifizieren: Die Testnachricht erscheint in der ntfy-App. Fehlt sie, prüfen Sie Schema (ntfy:// bzw. ntfys://), Adresse und Port sowie das Protokoll unter Container Manager → Container → changedetection → Protokoll.

Schritt 8: Update durchführen

Sichern Sie zuerst den Ordner /volume1/docker/changedetection, denn Datenmigrationen lassen sich nicht zurücknehmen. Tragen Sie dann den neuen Tag aus den Releases in der compose.yaml ein und erstellen Sie das Projekt neu: im Container Manager über Projekt → changedetection → Aktion → Erstellen oder per SSH (SSH auf dem Synology NAS aktivieren):

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

Verifizieren: Beide Container laufen, alle Watches sind vorhanden und die Fußzeile der Oberfläche zeigt die neue Version.

Troubleshooting / Typische Fehler

  1. „Failed to launch the browser process“: cap_add: SYS_ADMIN fehlt beim Browser-Container. Ergänzen und Projekt neu erstellen.
  2. JavaScript-Seiten liefern nur rohes HTML: Der Watch nutzt den Basic-Fetcher, oder PLAYWRIGHT_DRIVER_URL passt nicht zum hostname des Browser-Containers.
  3. Oberfläche nicht erreichbar: Firewall-Regel fehlt, Port 5055 ist belegt oder NAS-IP in ports stimmt nicht mit der Adresse des NAS überein.
  4. Container dauerhaft „unhealthy“: Der Healthcheck ruft ein Programm auf, das im Image fehlt (etwa curl). Verwenden Sie den Python-Healthcheck aus Schritt 2.
  5. Keine Benachrichtigungen: falsches URL-Schema (http:// statt ntfy://) oder nicht erreichbarer Host. Mit Send test notification und dem Container-Protokoll prüfen.
  6. Browser-Container stürzt bei vielen Watches ab: zu wenig RAM. Senken Sie MAX_CONCURRENT_CHROME_PROCESSES auf 3 bis 5 und passen Sie FETCH_WORKERS an.
  7. YAML-Fehler im Container Manager: Tabs in der compose.yaml. Nur Leerzeichen verwenden.

Häufige Fragen

Brauche ich den sockpuppetbrowser-Container immer?

Nein. Für statische Seiten, RSS-Feeds und JSON-APIs genügt der Standard-Fetcher. Der Browser-Container belegt einige hundert MB RAM; auf kleinen NAS-Modellen lassen Sie ihn weg und ergänzen ihn bei Bedarf.

Wie überwache ich nur einen bestimmten Seitenabschnitt?

Mit einem CSS-, XPath- oder JSONPath-Filter im Reiter Filters & Triggers oder mit dem Visual Filter Selector (Schritt 6).

Wie lange werden Änderungen gespeichert?

Standardmäßig unbegrenzt. Alle Snapshots liegen in /volume1/docker/changedetection; überwachen Sie den Speicherbedarf und löschen Sie nicht mehr benötigte Historie je Watch.

Kann ich Login-geschützte Seiten überwachen?

Ja, mit dem Playwright-Fetcher. Unter Edit → Browser Steps hinterlegen Sie Aktionen wie Felder ausfüllen und Schaltflächen klicken. Die Zugangsdaten liegen dann im Datenverzeichnis; nutzen Sie ein eigenes Konto mit Leserechten.

Wie viele Seiten kann ich gleichzeitig überwachen?

Die Anzahl ist nicht begrenzt. FETCH_WORKERS (Standard 10) steuert die parallelen Abrufe, MAX_CONCURRENT_CHROME_PROCESSES die Browser-Prozesse.

Wie aktualisiere ich changedetection.io?

Ordner sichern, Image-Tag in der compose.yaml anheben und das Projekt neu erstellen (Schritt 8). Die Daten bleiben erhalten.

Fazit

changedetection.io überwacht Webseiten zuverlässig und ohne externen Dienst: der einfache Fetcher für statische Inhalte, der Browser-Container für JavaScript-Seiten. Binden Sie den Port an die NAS-Adresse, setzen Sie ein Passwort und legen Sie den Image-Tag fest. Auf Geräten mit weniger als 4 GB RAM lassen Sie den Browser-Container weg. Als Ergänzung für Cronjobs und Backups eignet sich Healthchecks 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