
🚀 So richtest du dynamisches DNS über Cloudflare auf dem Raspberry Pi ein
Ihr Heimserver auf dem Raspberry Pi läuft rund um die Uhr, aber Ihr Provider ändert täglich die externe IP. Die neue Adresse jedes Mal manuell anzusteuern, ist ein Job für Archäologen. Und DynDNS sowie No-IP bombardieren Sie mit E-Mails: „Melden Sie sich einmal im Monat an, sonst deaktivieren wir Ihren kostenlosen Account."
Wie sich herausstellt, kann Cloudflare als dynamisches DNS fungieren, ohne Werbemails, ohne Begrenzung der Aktualisierungsfrequenz und ohne fremde Subdomains. Sie haben Ihre Domain bereits bei Cloudflare? Dann benötigen Sie nur noch einen API-Token und ein Bash-Skript auf dem Raspberry Pi. In einer halben Stunde richten Sie einen Mechanismus ein, der den A-Record automatisch aktualisiert, sobald sich die IP ändert.
Und wenn Sie nicht nur „auf die Konsole zugreifen", sondern eine vollwertige Entwicklungsumgebung bereitstellen möchten, selbst mit WordPress, wird dieses Setup zur Grundlage: Sie erreichen Ihren Server von überall auf der Welt über eine ansprechende Subdomain wie home.example.com.
💡 Kurzüberblick:
- Schritt 1: Einen A-Record im DNS-Panel von Cloudflare mit der Test-IP
0.0.0.0anlegen - Schritt 2: Einen API-Token beziehen (keinen globalen Schlüssel, Tokens sind sicherer und mit einem Klick widerrufbar)
- Schritt 3: Ein Bash-Skript ausführen, das die aktuelle IP abfragt und an die Cloudflare-API übermittelt
- Schritt 4: Einen Cron-Job einrichten und manuelle Aktualisierungen für immer vergessen
Was Sie benötigen
- Eine bei Cloudflare hinterlegte und über deren DNS verwaltete Domain
- Raspberry Pi (jedes Modell geeignet, Pi 3, Pi 4, Pi Zero 2 W) mit Raspbian oder Raspberry Pi OS
- Statische lokale IP für den Raspberry Pi (konfiguriert in der OS-Oberfläche oder über den Router)
- Terminalzugriff auf den Pi via SSH oder direkt
Welche Dienste genau Sie auf dem Raspberry Pi hosten und wie Sie Ports auf dem Router weiterleiten, ist ein separates Thema, das über dieses Tutorial hinausgeht. Das Schema funktioniert gleichermaßen, ob für einen Webserver mit WordPress, VNC-Zugriff oder eine Überwachungskamera.
1. Einen A-Record für Ihren Heimserver anlegen
Wählen Sie eine Subdomain, sie wird Ihr dauerhafter Einstiegspunkt. Ich verwende home, aber Sie können jede beliebige wählen: dev, lab, cam.
- Rufen Sie das Cloudflare-Dashboard auf und wählen Sie Ihre Domain aus
- Navigieren Sie zum Tab DNS
- Klicken Sie auf Record hinzufügen, Typ A
- Geben Sie im Feld Name die Subdomain ein (zum Beispiel
home) - Tragen Sie im Feld IPv4-Adresse
0.0.0.0ein, vorläufig, um das Skript später zu testen - Lassen Sie den Proxy-Status deaktiviert (graue Wolke), Caching und Proxy sind für DDNS nicht erforderlich

Der Record ist bereit. Nun besorgen wir den API-Zugriffsschlüssel.
2. Cloudflare-API-Token beziehen
Früher empfahlen alle Anleitungen den globalen API-Schlüssel, der vollen Zugriff auf alle Domains des Accounts gewährt. Das ist gefährlich: Wenn der Schlüssel kompromittiert wird, ist alles offengelegt. Heute empfiehlt Cloudflare API-Tokens mit granularer Berechtigung. Ein Token lässt sich auf eine bestimmte Domain und Aktion beschränken und im Fall einer Kompromittierung mit einem Klick widerrufen.
- Gehen Sie im Cloudflare-Dashboard zu: Mein Profil → API-Tokens
- Klicken Sie auf Token erstellen
- Wählen Sie die Vorlage DNS-Zone bearbeiten (oder erstellen Sie ein benutzerdefiniertes Token)
- Geben Sie im Abschnitt Zonen-Ressourcen die konkrete Domain an, für die Sie DDNS konfigurieren
- Klicken Sie auf Weiter zur Zusammenfassung → Token erstellen
- Kopieren Sie das Token, es wird nur einmal angezeigt
Das Token sieht aus wie eine lange Zeichenkette, die mit cfut_ beginnt. Bewahren Sie es an einem sicheren Ort auf, das Skript auf dem Raspberry Pi wird es gleich benötigen.
3. Automatisches Aktualisierungsskript auf dem Raspberry Pi
Verbinden Sie sich per SSH mit dem Raspberry Pi oder öffnen Sie das Terminal. Legen wir einen Ordner für das Skript an:
1 mkdir -p ~/cf && cd ~/cf
Nun das Skript selbst. Erstellen Sie die Datei cloudflare-ddns.sh:
1 nano ~/cf/cloudflare-ddns.sh
Kopieren Sie den folgenden Code hinein:
1 #!/bin/bash 2 3 ## Settings (replace with yours) 4 AUTH_EMAIL="[email protected]" 5 API_TOKEN="cfut_your_token" 6 ZONE_NAME="example.com" 7 RECORD_NAME="home.example.com" 8 9 ## Get current public IP 10 CURRENT_IP=$(curl -s https://api.ipify.org) 11 12 ## Get Zone ID 13 ZONE_ID=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones?name=$ZONE_NAME" \ 14 -H "Authorization: Bearer $API_TOKEN" \ 15 -H "Content-Type: application/json" | grep -o '"id":"[^"]*"' | head -1 | cut -d'"' -f4) 16 17 ## Get Record ID and current record IP 18 RECORD=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records?name=$RECORD_NAME" \ 19 -H "Authorization: Bearer $API_TOKEN" \ 20 -H "Content-Type: application/json") 21 22 RECORD_ID=$(echo "$RECORD" | grep -o '"id":"[^"]*"' | head -1 | cut -d'"' -f4) 23 DNS_IP=$(echo "$RECORD" | grep -o '"content":"[^"]*"' | head -1 | cut -d'"' -f4) 24 25 ## Update record if IP changed 26 if [ "$CURRENT_IP" != "$DNS_IP" ]; then 27 UPDATE=$(curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records/$RECORD_ID" \ 28 -H "Authorization: Bearer $API_TOKEN" \ 29 -H "Content-Type: application/json" \ 30 --data "{\"type\":\"A\",\"name\":\"$RECORD_NAME\",\"content\":\"$CURRENT_IP\",\"ttl\":120}") 31 32 echo "$(date): IP changed from $DNS_IP to $CURRENT_IP — updated" >> ~/cf/cloudflare-ddns.log 33 else 34 echo "$(date): IP unchanged ($CURRENT_IP)" >> ~/cf/cloudflare-ddns.log 35 fi
Ersetzen Sie die vier Variablen im Block „Settings" durch Ihre echten Werte. Email, dieselbe, die Sie für den Cloudflare-Login verwenden. Token, den Sie in Schritt 2 kopiert haben. Zone-Name, Ihre Domain ohne http://. Record-Name, die vollständige Subdomain.
Speichern Sie die Datei (Ctrl+O, Enter, Ctrl+X in nano) und machen Sie sie ausführbar:
1 chmod +x ~/cf/cloudflare-ddns.sh
Führen Sie sie manuell zur Prüfung aus:
1 ~/cf/cloudflare-ddns.sh
Wenn alles korrekt konfiguriert ist, gehen Sie ins Cloudflare-DNS-Panel. Die IP-Adresse des A-Records sollte sich von 0.0.0.0 auf Ihre echte öffentliche IP ändern. Das Log wird nach ~/cf/cloudflare-ddns.log geschrieben, prüfen Sie dort, falls etwas schiefgeht.
4. Automatisierung per Cron
Der manuelle Start dient nur dem Test. Ab hier übernimmt Cron.
1 crontab -e
Falls das System Sie auffordert, einen Editor zu wählen, nehmen Sie nano (in der Regel Nummer 2, der einfachste). Fügen Sie am Ende der Datei eine Zeile hinzu:
1 0 */6 * * * /bin/bash /home/pi/cf/cloudflare-ddns.sh
Dieser Eintrag führt das Skript alle 6 Stunden aus. Selbst wenn der Provider die IP nur alle paar Monate ändert, ist ein Sechs-Stunden-Fenster ein vernünftiger Kompromiss zwischen Aktualität und API-Last.
Wenn Sie eine höhere Frequenz wünschen, ersetzen Sie dies durch */30 * * * * (alle 30 Minuten). Aber bedenken Sie: Das kostenlose Limit der Cloudflare-API liegt bei 1200 Anfragen pro Minute, sodass selbst minütliche Aufrufe für eine Domain unbedenklich sind.
Speichern (Ctrl+X, Y, Enter). Cron übernimmt die Änderungen automatisch, ein Neustart des Dienstes ist nicht nötig. Hilfe zur Entschlüsselung der Sternchen finden Sie auf crontab.guru.
Kurze Videoanleitung zum gleichen Thema von NetworkChuck, mit Vorführung auf einem echten Raspberry Pi und Erklärung jedes Schritts:
Was tun, wenn das Skript die Zone-ID oder Record-ID nicht findet
Manchmal liefert die API die Kennungen nicht automatisch zurück, besonders wenn das Konto viele Domains oder ähnlich benannte Records enthält. Dann ermitteln Sie sie manuell:
- Gehen Sie ins Cloudflare-Dashboard, wählen Sie die Domain, Tab DNS
- Öffnen Sie die Entwicklertools des Browsers (
F12→ Tab Netzwerk → Untertab XHR) - Klicken Sie auf das Wolkensymbol neben Ihrem A-Record, dann erscheint eine Anfrage an die API im Netzwerk-Panel
- Rechtsklick darauf → Kopieren → Link-Adresse kopieren (Chrome) oder URL kopieren (Firefox)
- Im kopierten Link finden Sie den Teil nach
zones/, das ist die Zone-ID, nachdns_records/die Record-ID
Setzen Sie diese in die Variablen ZONE_ID und RECORD_ID im Skript ein, dann funktioniert alles. Stellen Sie sicher, dass die Wolke im DNS-Panel grau ist (Proxy aus): Cloudflare soll die IP für DDNS nicht cachen.
⁉️🤔 Häufig gestellte Fragen
Ist die Verwendung eines API-Tokens anstelle des globalen Schlüssels zwingend erforderlich?
Der globale Schlüssel funktioniert weiterhin, aber das Token ist die moderne und sichere Option. Ein Token lässt sich auf eine Domain und DNS-Bearbeitungsrechte beschränken. Der globale Schlüssel gewährt Zugriff auf das gesamte Konto. Falls das Skript oder der Pi kompromittiert werden, widerrufen Sie einfach das Token, während Sie den Schlüssel überall ändern müssten.
Wie unterscheidet sich dieser Ansatz von DuckDNS oder No-IP?
Drittanbieter-DDNS-Dienste vergeben eine Third-Level-Subdomain wie
myhome.duckdns.org. Der Cloudflare-Ansatz nutzt Ihre eigene Domain (home.example.com), das wirkt professioneller, hängt nicht vom Dienst eines Dritten ab und erfordert keine monatliche Anmeldung zur Aktivitätsbestätigung. Zudem erhalten Sie Zugang zum gesamten Cloudflare-Ökosystem: DDoS-Schutz, SSL-Zertifikate, Firewall-Regeln.
Muss ich Ports auf dem Router weiterleiten?
Ja, um den Raspberry Pi aus dem Internet zu erreichen. DDNS stellt nur sicher, dass die Domain stets auf die aktuelle IP zeigt. Damit der Verkehr von dieser IP aber zum Pi gelangt, müssen Sie auf dem Router Portweiterleitung für die benötigten Ports einrichten (22 für SSH, 80/443 für Web usw.).
Was tun, wenn der Raspberry Pi hinter einem ISP-NAT steckt?
Manche Provider setzen Carrier-Grade NAT (CGNAT) ein, dann haben Sie keine eigene öffentliche IP und DDNS hilft nicht. Lösung: Fordern Sie eine weiße IP beim Provider an (oft auf Anfrage kostenlos) oder nutzen Sie Cloudflare Tunnel, der einen verschlüsselten Kanal vom Pi zu Cloudflare ohne Portweiterleitung aufbaut.
Was kostet diese Lösung?
Nichts. Cloudflare DNS ist für unbegrenzte A-Records kostenlos. Den Raspberry Pi haben Sie bereits gekauft. Der Stromverbrauch eines Pi 3/4 unter Last liegt bei etwa 3-5 W, das macht jährlich grob 25-35 Euro.
Kann ich mehrere Subdomains aktualisieren?
Ja, duplizieren Sie die Blöcke mit
RECORD_NAMEundDNS_IPim Skript für jede Subdomain oder verpacken Sie die Logik in eine Schleife über ein Array von Namen.
Dynamisches DNS bei Cloudflare: Was Sie 2026 einrichten sollten
Das Schema mit Cloudflare-API und Cron hat mehrere Raspberry-Pi-Generationen überlebt und nichts an Relevanz eingebüßt. Sie erhalten Ihre eigene Subdomain, sind von keinem Drittanbieter für DDNS abhängig und zahlen keinen Cent.
Wenn Sie noch weiter gehen möchten, sehen Sie sich fertige Docker-Images an: oznu/cloudflare-ddns aktualisiert die IP alle 5 Minuten und wird über Umgebungsvariablen konfiguriert. Wer Python bevorzugt, findet mit aribasadme/rpi-cloudflare-ddns ein speziell auf den Raspberry Pi zugeschnittenes Image.
Das Entscheidende, was Sie heute erreicht haben: Der Raspberry Pi ist nun von überall auf der Welt unter einer festen Adresse erreichbar. Und das ist die Grundlage für alles, von einem WordPress-Entwicklungsserver bis hin zu Ihrem eigenen Cloud-Speicher.



