BREAKING CHANGE: Replace custom implementation with universal DDNS client - Replace custom Python implementation with qmcgaw/ddns-updater - Add Web UI for monitoring on port 8000 - Add support for 50+ DNS providers (not just Hetzner) - Add multi-domain support via JSON configuration - Add config.json.example for Hetzner setup - Update documentation with Web UI and new setup process - Remove custom Python code, Dockerfile, requirements.txt - Simplify deployment with established, production-ready solution Benefits: - Professional Web UI for status monitoring - Active community support - Flexibility for future provider changes - Well-tested, production-ready solution Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> |
||
|---|---|---|
| .env.example | ||
| .gitignore | ||
| CHANGELOG.md | ||
| CLAUDE.md | ||
| README.md | ||
| config.json.example | ||
| docker-compose.yml | ||
README.md
DynDNS Docker für Hetzner DNS
Ein Docker-basiertes Dynamic DNS System für die Hetzner DNS Console mit qmcgaw/ddns-updater - einem universellen DDNS-Client, der 50+ Provider unterstützt.
Features
- ✅ Automatische Erkennung von IP-Änderungen
- ✅ Integration mit Hetzner DNS API
- ✅ Web-UI für Überwachung und Verwaltung (Port 8000)
- ✅ Konfigurierbare Check-Intervalle
- ✅ Unterstützt 50+ DNS-Provider (nicht nur Hetzner)
- ✅ Multi-Domain-Support
- ✅ IPv4 und IPv6 Unterstützung
- ✅ Health Check für Container-Monitoring
- ✅ Automatische Restart-Policy
Voraussetzungen
- Docker und Docker Compose
- Hetzner DNS API Token
- Domain bei Hetzner DNS verwaltet
Installation
1. Repository klonen
git clone <repository-url>
cd dyndns-docker
2. Konfiguration erstellen
a) Umgebungsvariablen (optional)
cp .env.example .env
Bearbeiten Sie .env für optionale Einstellungen:
PERIOD=5m # Update-Intervall
LOG_LEVEL=info # Log-Level
b) DDNS-Konfiguration (erforderlich)
Erstellen Sie data/config.json basierend auf der Vorlage:
mkdir -p data
cp config.json.example data/config.json
Bearbeiten Sie data/config.json:
{
"settings": [
{
"provider": "hetzner",
"zone_identifier": "your_zone_id_here",
"domain": "example.com",
"host": "@",
"ttl": 60,
"token": "your_hetzner_api_token_here",
"ip_version": "ipv4"
}
]
}
3. Hetzner API Token und Zone ID ermitteln
API Token erstellen:
- Melden Sie sich im Hetzner DNS Console an
- Gehen Sie zu "API Tokens"
- Klicken Sie auf "Create access token"
- Geben Sie einen Namen ein (z.B. "DynDNS")
- Wählen Sie Read & Write Rechte
- Kopieren Sie den generierten Token
Zone ID finden:
- Gehen Sie zu Ihrer Domain-Übersicht
- Die Zone ID finden Sie in der URL oder im Domain-Detail
- Alternativ: API-Aufruf
curl -H "Auth-API-Token: YOUR_TOKEN" https://dns.hetzner.com/api/v1/zones
4. Container starten
docker-compose up -d
5. Web-UI aufrufen
Öffnen Sie im Browser: http://localhost:8000
Hier sehen Sie:
- ✅ Aktuellen IP-Status
- ✅ Letztes Update
- ✅ Update-Historie
- ✅ Fehler und Warnungen
Konfiguration
Domain-Konfiguration
| Parameter | Beschreibung | Beispiel |
|---|---|---|
provider |
DNS-Provider Name | hetzner |
zone_identifier |
Hetzner Zone ID | abc123... |
domain |
Domain-Name | example.com |
host |
Subdomain oder @ für Root |
@, home, *.example.com |
ttl |
Time-to-Live in Sekunden | 60 |
token |
Hetzner API Token | xyz789... |
ip_version |
IP-Version | ipv4, ipv6, ipv4 or ipv6 |
Umgebungsvariablen
| Variable | Beschreibung | Standard |
|---|---|---|
PERIOD |
Update-Intervall | 5m |
LOG_LEVEL |
Log-Level | info |
Mehrere Domains konfigurieren
Sie können mehrere Domains in data/config.json hinzufügen:
{
"settings": [
{
"provider": "hetzner",
"zone_identifier": "zone1_id",
"domain": "example.com",
"host": "@",
"token": "token1",
"ip_version": "ipv4"
},
{
"provider": "hetzner",
"zone_identifier": "zone2_id",
"domain": "example.org",
"host": "home",
"token": "token2",
"ip_version": "ipv4"
}
]
}
Verwendung
Container Status prüfen
docker-compose ps
Logs anzeigen
docker-compose logs -f
Container neu starten
docker-compose restart
Container stoppen
docker-compose down
Konfiguration neu laden
Nach Änderungen an data/config.json:
docker-compose restart
Weitere unterstützte Provider
Dieser Setup nutzt qmcgaw/ddns-updater, der auch diese Provider unterstützt:
- Cloudflare
- Google Domains
- DuckDNS
- No-IP
- Namecheap
- GoDaddy
- und 40+ weitere
Um einen anderen Provider zu nutzen, passen Sie einfach die provider-Konfiguration in data/config.json an. Siehe Dokumentation für Details.
Troubleshooting
Container startet nicht
docker-compose logs
Web-UI nicht erreichbar
- Prüfen Sie, ob Port 8000 verfügbar ist
- Prüfen Sie Firewall-Einstellungen
DNS-Update schlägt fehl
- Prüfen Sie den API Token
- Prüfen Sie die Zone ID
- Prüfen Sie die Logs:
docker-compose logs -f
Konfiguration testen
# Prüfen Sie die config.json Syntax
cat data/config.json | jq .
Versioning
Dieses Projekt folgt einer vereinfachten Versionierungsstruktur:
- 0.1: Große Änderungen (neue Features, Breaking Changes)
- 0.0.1: Kleine Änderungen (Bugfixes, kleinere Verbesserungen)
- 1.x: Major Releases (nur nach Anweisung)
Links
Lizenz
MIT License
Support
Bei Fragen oder Problemen erstellen Sie bitte ein Issue im Repository.