dyndns-docker/README.md

242 lines
5.2 KiB
Markdown
Raw Permalink Normal View History

# 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.