# DynDNS Docker für Hetzner DNS Ein Docker-basiertes Dynamic DNS System für die Hetzner DNS Console mit **[qmcgaw/ddns-updater](https://github.com/qdm12/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 ```bash git clone cd dyndns-docker ``` ### 2. Konfiguration erstellen #### a) Umgebungsvariablen (optional) ```bash cp .env.example .env ``` Bearbeiten Sie `.env` für optionale Einstellungen: ```env PERIOD=5m # Update-Intervall LOG_LEVEL=info # Log-Level ``` #### b) DDNS-Konfiguration (erforderlich) Erstellen Sie `data/config.json` basierend auf der Vorlage: ```bash mkdir -p data cp config.json.example data/config.json ``` Bearbeiten Sie `data/config.json`: ```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: 1. Melden Sie sich im [Hetzner DNS Console](https://dns.hetzner.com/) an 2. Gehen Sie zu **"API Tokens"** 3. Klicken Sie auf **"Create access token"** 4. Geben Sie einen Namen ein (z.B. "DynDNS") 5. Wählen Sie **Read & Write** Rechte 6. Kopieren Sie den generierten Token #### Zone ID finden: 1. Gehen Sie zu Ihrer Domain-Übersicht 2. Die **Zone ID** finden Sie in der URL oder im Domain-Detail 3. Alternativ: API-Aufruf `curl -H "Auth-API-Token: YOUR_TOKEN" https://dns.hetzner.com/api/v1/zones` ### 4. Container starten ```bash 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: ```json { "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 ```bash docker-compose ps ``` ### Logs anzeigen ```bash docker-compose logs -f ``` ### Container neu starten ```bash docker-compose restart ``` ### Container stoppen ```bash docker-compose down ``` ### Konfiguration neu laden Nach Änderungen an `data/config.json`: ```bash 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](https://github.com/qdm12/ddns-updater) für Details. ## Troubleshooting ### Container startet nicht ```bash 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 ```bash # 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 - [DDNS-Updater GitHub](https://github.com/qdm12/ddns-updater) - [Hetzner DNS Console](https://dns.hetzner.com/) - [Hetzner DNS API Dokumentation](https://dns.hetzner.com/api-docs) ## Lizenz MIT License ## Support Bei Fragen oder Problemen erstellen Sie bitte ein Issue im Repository.