242 lines
5.2 KiB
Markdown
242 lines
5.2 KiB
Markdown
# 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 <repository-url>
|
|
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.
|