dyndns-docker/README.md

5.2 KiB

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:

  1. Melden Sie sich im Hetzner DNS Console 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

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)

Lizenz

MIT License

Support

Bei Fragen oder Problemen erstellen Sie bitte ein Issue im Repository.