az-dns/README.md
Jesko Anschütz 158a7efb72 initial
2025-10-20 14:25:11 +02:00

42 lines
1.6 KiB
Markdown

# az-dns
Kleines Go-Tool zum Aktualisieren von Hetzner DNS-A/AAAA-Records auf die aktuelle öffentliche IPv4/IPv6-Adresse.
## Konfiguration
Folgende Environment-Variablen müssen gesetzt werden:
- `HETZNER_TOKEN`: Hetzner Cloud API Token mit DNS-Schreibrechten.
- `HOSTNAME`: Der Hostname innerhalb der Zone, z. B. `@` für den Zonen-Apex oder `vpn`.
- `DOMAIN`: Die Zonendomain, z. B. `example.com`.
- `TTL`: TTL des Records als Ganzzahl (Sekunden).
Optionale Variablen:
- `LOG_LEVEL`: `debug`, `info` oder `warn` (Standard).
- `DRY_RUN`: Bei `true`/`1` werden nur die geplanten Änderungen geloggt, aber nicht ausgeführt.
## Build & Ausführung
Entweder einfach das richtige Binary verwenden (in ./binaries) oder selber compilieren (das dauert 3 Sekunden)
```bash
# Installieren/kompilieren
GOCACHE=$(pwd)/.gocache go build -o az-dns
# ausführen (setzt beide Records falls Adressen ermittelt werden können)
HETZNER_TOKEN=... HOSTNAME=... DOMAIN=... TTL=300 LOG_LEVEL=info ./az-dns
```
Das Programm versucht, sowohl die IPv4- als auch die IPv6-Adresse zu ermitteln. Gelingt nur eine der beiden Erkennungen, wird nur der entsprechende Record geschrieben. Fehlt ein Record, wird er neu angelegt, ansonsten aktualisiert.
## Hinweise
- Der `HOSTNAME` wird automatisch auf Hetzners Darstellung normalisiert (`@` für den Apex).
- Das Tool nutzt `https://api.ipify.org` bzw. `https://api6.ipify.org` zur Adressfeststellung.
- DNS-Updates erfolgen über die neue Hetzner Cloud DNS-API unter `https://api.hetzner.cloud/v1`.
- Im Dry-Run-Modus werden nur Logausgaben erzeugt, was sich gut für Cronjobs/CI eignet.
## LIZENZ
The MIT License (MIT) --> siehe LICENSE-File