Intro

Mein Provider zieht mir regelmäßig den Teppich unter den Füßen weg: rund jeden Monat hat mein Router/Modem eine neue IP. Bisher habe ich mich auf ein fremdes ansible-playbook verlassen, welches mir meine DNS-Einträge entsprechend ändern sollte. Das hat jetzt immer öfter nicht funktioniert. Deshalb bin ich selber ran!

Python zur Hilfe

Ich muss mir zwar erstmal die Hände waschen, um diese ganze Python-Typunsicherheit loszuwerden, aber immerhin habe ich ein Skript zusammengebastelt das das tut, was es soll.

Konkret geht es darum die hinterlegte IP im “A”-Record, auf die die root-domain ("@") zeigt, zu aktualisieren. Außerdem wäre es gut, Bescheid zu bekommen, falls mal irgendwas fehlschlägt. Dafür benutze ich ntfy.sh. Damit kann man sich selbst über ein festgelegtes Topic Benachrictigungen zukommen lassen. Sogar inklusive Android-App! Mehr Infos zum Setup auf der eben erwähnten Webseite. In diesem Snippet ist der ntfy-Service aber optional.

Der Code spricht für sich:

Cronjobs zur Automatisierung

Das einzige was man als Anwender noch tun muss, ist folgendes:

-> Entsprechende Umgebungsvariablen setzen:

$ echo "HETZNER_API_TOKEN=meinSicheresToken" >> /etc/environment
$ echo "HETZNER_DYNDNS_ZONE=meineTolleDomain.com" >> /etc/environment

optional:
$ echo "HETZNER_NTFY_TOPIC=meinTopicName" >> /etc/environment

-> Einen cronjob für einen gewissen Grad an Automation erstellen:

$ crontab -e

Und da beispielsweise sowas hinzufügen:

*/5 * * * * /root/dyndns.py

Die Frequenz in diesem Beispiel wäre dabei “jede 5-te Minute”. Bei crontabs hilft mir persönlich crontab.guru immer sehr. 👍

Bleibt nurnoch zu hoffen, dass die Uptime meiner Webseite jetzt auch wirklich erhöht wurde!