DynDNS mit Hetzner
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!