Zum Inhalt springen
SONOYA.com
Digital Lifestyle

Bürgeramt-Termin frei? Automatisch per Push erfahren

Freie Termine beim Bürgeramt sind in Minuten weg. So meldet changedetection.io neue Termine per ntfy aufs Handy, ohne dass Du ständig neu lädst.

Von

Glockensymbol auf farbigem Verlauf für eine Push-Benachrichtigung, sobald beim Bürgeramt ein Termin frei wird

Neuer Personalausweis, Ummeldung, Führungszeugnis: In vielen Städten zeigt die Terminbuchung des Bürgeramts wochenlang nur „Keine Termine verfügbar“. Dabei werden laufend Termine frei, weil andere absagen oder umbuchen. Wer diese Lücken erwischen will, lädt die Seite normalerweise dutzende Male am Tag neu.

Diese Anleitung nimmt Dir das Neuladen ab. Das Werkzeug changedetection.io prüft die Terminseite in einem festen Abstand und schickt Dir eine Push-Nachricht aufs Handy, sobald sich dort etwas ändert. Buchen tust Du weiterhin selbst, das Programm sagt Dir nur, wann sich ein Blick lohnt.

Erst prüfen: Bietet Deine Stadt einen Wunschtermin?

Bevor Du etwas einrichtest, schau auf der Terminseite Deiner Stadt nach einer Warteliste. Einige Städte schicken von sich aus eine Mail, sobald ein passender Termin frei wird. Nürnberg bietet das zum Beispiel über die Terminvereinbarung des Bürgeramts an, Dortmund über ein Terminwunsch-Formular. Andere Städte schalten neue Termine zu festen Uhrzeiten frei, in Hannover laut Stadtverwaltung täglich gegen 8 Uhr. Gibt es so etwas, ist das der einfachste Weg. Die Überwachung lohnt sich dort, wo nur Absagen nachrücken und es keine Warteliste gibt.

Was Du brauchst

  • Einen Rechner, auf dem Docker läuft und der eingeschaltet bleibt, etwa einen Raspberry Pi, ein NAS oder einen kleinen Server.
  • Die ntfy-App auf dem Handy, aus dem App Store oder Google Play.
  • Die genaue Adresse der Terminseite für Deine Dienstleistung, also die Seite, auf der „Keine Termine verfügbar“ steht.

Für ntfy reicht der öffentliche Server ntfy.sh. Willst Du die Nachrichten auf einem eigenen Server halten, steht in Push-Benachrichtigungen selbst hosten mit ntfy, wie Du ihn einrichtest.

Schritt 1: changedetection.io starten

Lege einen Ordner an und darin eine Datei compose.yaml:

Code
mkdir -p ~/changedetection
cd ~/changedetection
nano compose.yaml

Füge diesen Inhalt ein. Er entspricht der Vorlage aus dem offiziellen Repository, ergänzt um einen Browser, den viele Terminportale brauchen, weil sie ihre Inhalte erst per JavaScript nachladen:

Code
services:
  changedetection:
    image: ghcr.io/dgtlmoon/changedetection.io
    container_name: changedetection
    volumes:
      - changedetection-data:/datastore
    ports:
      - 127.0.0.1:5000:5000
    environment:
      - PLAYWRIGHT_DRIVER_URL=ws://browser-sockpuppet-chrome:3000
    depends_on:
      - browser-sockpuppet-chrome
    restart: unless-stopped

  browser-sockpuppet-chrome:
    image: dgtlmoon/sockpuppetbrowser:latest
    hostname: browser-sockpuppet-chrome
    cap_add:
      - SYS_ADMIN
    restart: unless-stopped

volumes:
  changedetection-data:

Speichere mit Strg + O, bestätige mit Enter und schließe nano mit Strg + X. Dann startest Du beide Container:

Code
docker compose up -d

Die Oberfläche erreichst Du jetzt auf demselben Rechner unter http://localhost:5000. Läuft Docker auf einem anderen Gerät im Heimnetz, ersetze in der Zeile ports die 127.0.0.1 durch die IP-Adresse dieses Geräts. Auf einem Mac ist Port 5000 oft durch AirPlay belegt, dann nimm 127.0.0.1:5050:5000 und öffne http://localhost:5050.

Schritt 2: Die Terminseite als Watch anlegen

  1. Füge oben im Feld die Adresse der Terminseite ein und klicke auf Watch.
  2. Klicke beim neuen Eintrag auf Edit.
  3. Wähle im Reiter Request beim Fetch-Verfahren den Playwright-Browser statt der einfachen Abfrage. Nur so sieht changedetection.io die Termine, die die Seite nachlädt.
  4. Stell das Prüfintervall auf 10 Minuten und trag bei Random jitter seconds etwa 120 ein. Dann fragt das Programm nicht exakt im Takt ab, sondern mit kleinen Abweichungen.

Bleib bei 5 bis 15 Minuten. Kürzere Abstände bringen kaum mehr Treffer, belasten aber die Server der Stadt, und manche Portale sperren Adressen, die zu oft fragen. Lies außerdem die Nutzungsbedingungen des Portals. Automatisches Buchen ist fast überall untersagt, und diese Anleitung macht das bewusst nicht.

Schritt 3: Nur auf echte Termine reagieren

Ohne Filter meldet changedetection.io jede Änderung, also auch eine neue Uhrzeit im Seitenfuß oder einen geänderten Hinweistext. Damit nur freie Termine einen Alarm auslösen, nutzt Du im Reiter Filters & Triggers das Feld Block change-detection while text matches. Trag dort den Satz ein, den die Seite ohne Termine zeigt, zum Beispiel:

Code
Keine Termine verfügbar

Solange dieser Text auf der Seite steht, ignoriert das Programm alle Änderungen. Verschwindet er, weil Termine auftauchen, schlägt es Alarm. Den genauen Wortlaut kopierst Du am besten direkt von der Seite, denn jedes Portal formuliert anders.

Schritt 4: Push aufs Handy einrichten

Öffne die ntfy-App, tippe auf das Plus und abonniere ein Thema mit einem Namen, den niemand errät, etwa buergeramt-k7r2xq. Themen auf ntfy.sh sind öffentlich, jeder mit dem Namen kann mitlesen.

Trag in changedetection.io beim Watch im Reiter Notifications diese Adresse ein und ersetze das Thema durch Deines:

Code
ntfys://ntfy.sh/buergeramt-k7r2xq

Das Programm nutzt dafür die Bibliothek Apprise, ntfys steht für eine verschlüsselte Verbindung. Bei einem eigenen ntfy-Server mit Zugangstoken sieht die Adresse so aus: ntfys://tk_DEINTOKEN@ntfy.example.com/buergeramt. Schreib als Nachrichtentext etwas wie Termin frei: {{ watch_url }}, dann führt Dich ein Tipp auf die Benachrichtigung direkt zur Buchungsseite.

Prüfen, ob es funktioniert

Klicke beim Watch auf Send test notification. Die Nachricht muss nach wenigen Sekunden auf dem Handy erscheinen. Danach lohnt ein Blick auf den Reiter Preview: Dort siehst Du den Text, den changedetection.io auf der Seite gefunden hat. Steht dort Dein Satz „Keine Termine verfügbar“, ist der Browser richtig eingebunden. Fehlt die Terminliste ganz, lädt die Seite ihre Inhalte erst nach einem Klick, dazu gleich mehr.

Wenn es nicht klappt

Die Vorschau ist leer oder zeigt nur ein Cookie-Banner. Viele Portale verlangen zuerst einen Klick auf „Weiter“ oder die Auswahl einer Dienstleistung. Dafür gibt es den Reiter Browser Steps, in dem Du die Klicks einmal vormachst. Er funktioniert nur mit dem Playwright-Browser aus Schritt 1.

Es kommt bei jeder Prüfung ein Alarm. Der Blockiertext stimmt nicht exakt, etwa wegen eines anderen Anführungszeichens. Kopier ihn erneut aus der Vorschau.

Die Seite meldet nach einiger Zeit einen Fehler 429 oder sperrt Dich. Das Intervall ist zu kurz. Stell es auf 15 Minuten und erhöhe die Zufallsabweichung.

Fazit

Mit changedetection.io und ntfy musst Du die Terminseite nicht mehr selbst beobachten. Nutz zuerst eine Warteliste, wenn Deine Stadt eine anbietet, und überwach die Seite nur in vernünftigen Abständen. Das Muster funktioniert auch für Arzttermine, Restplätze in Kursen oder Ausverkauftes, das wieder lieferbar wird. Für Preise, die Du über mehrere Shops vergleichen willst, passt eher der Preisalarm mit Claude: Wunschprodukte automatisch prüfen.

Weiterlesen.