So teilen Sie Ihre lokale WordPress- oder Drupal-Site mit Cloudflare Tunnel (Kostenlos)
Wenn Sie lokal mit DDEV entwickeln, müssen Sie Ihre Arbeit möglicherweise mit Kunden teilen, Webhooks von externen Diensten testen oder mit Remote-Teammitgliedern zusammenarbeiten. Cloudflare Tunnel bietet eine sichere, einfache Möglichkeit, Ihre lokalen Entwicklungssites für das Internet zugänglich zu machen, ohne Firewall-Ports öffnen oder sich mit komplexen Netzwerkkonfigurationen auseinandersetzen zu müssen.
Was ist Cloudflare Tunnel?
Cloudflare Tunnel (ehemals Argo Tunnel) ist Teil der Zero-Trust-Netzwerklösung von Cloudflare. Er erstellt eine sichere, nur ausgehende Verbindung von Ihrem lokalen Rechner zum Edge-Netzwerk von Cloudflare, das dann den öffentlichen Datenverkehr an Ihre lokalen Dienste weiterleitet. Das bedeutet:
- Keine offenen eingehenden Ports – Ihre Firewall bleibt sicher
- Keine öffentliche IP erforderlich – Funktioniert hinter NAT und Unternehmensfirewalls
- Kostenlos für die Entwicklung – Die schnellen Tunnel von Cloudflare sind kostenlos
- HTTPS standardmäßig – Automatische SSL/TLS-Verschlüsselung
- Einfache Einrichtung – Nur ein Befehl zum Starten
Was ist DDEV?
DDEV ist eine Docker-basierte lokale Entwicklungsumgebung, die das Einrichten von PHP-Projekten (Drupal, WordPress, Laravel usw.) mit minimaler Konfiguration erleichtert. Es bietet:
- Vorkonfigurierte Container für Web-, Datenbank- und andere Dienste
- Unterstützung für mehrere PHP-Versionen
- Integrierte SSL-Zertifikate für lokales HTTPS
- Befehlszeilentools für gängige Entwicklungsaufgaben
Die Verwendung von DDEV mit Cloudflare Tunnel ermöglicht es Ihnen, Ihre Website lokal auszuführen und bei Bedarf öffentlich freizugeben.
Voraussetzungen
Stellen Sie vor dem Start sicher, dass Sie Folgendes haben:
- Einen Mac, Linux- oder Windows-Rechner mit installiertem Docker
- Installiertes und konfiguriertes DDEV (offizielle Installationsanleitung oder lesen Sie meine Anleitung zur Einrichtung von DDEV für WordPress und Drupal)
- Ein funktionierendes DDEV-Projekt (wir verwenden Beispielseiten wie
myproject.ddev.site
undclient-site.ddev.site
) - Grundlegende Kenntnisse der Befehlszeile
- Kein Cloudflare-Konto erforderlich für schnelle Tunnel (die in dieser Anleitung behandelte Methode)
Hinweis: Wenn Sie persistente URLs mit benutzerdefinierten Domains wünschen (später behandelt), benötigen Sie ein kostenloses Cloudflare-Konto.
Schritt 1: Cloudflared installieren
Der cloudflared
Daemon ist der Client, der die Tunnelverbindung herstellt. Die Installation variiert je nach Plattform:
macOS (Homebrew)
brew install cloudflared
Linux (Debian/Ubuntu)
wget -q https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
sudo dpkg -i cloudflared-linux-amd64.deb
Linux (RHEL/CentOS)
wget -q https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-x86_64.rpm
sudo rpm -i cloudflared-linux-x86_64.rpm
Windows
Laden Sie das Installationsprogramm von der Cloudflare-Downloadseite herunter oder verwenden Sie Chocolatey:
choco install cloudflared
Überprüfen Sie die Installation:
cloudflared --version
Schritt 2: Ihre DDEV-Site starten
Stellen Sie sicher, dass Ihr DDEV-Projekt läuft. Navigieren Sie zu Ihrem Projektverzeichnis und starten Sie DDEV:
cd /pfad/zu/ihrem/projekt
ddev start
Ihre Website ist lokal unter etwas wie https://ihrprojekt.ddev.site
verfügbar. Überprüfen Sie, ob es funktioniert, indem Sie es in Ihrem Browser öffnen.
Schritt 3: Einen Cloudflare Tunnel für Ihre DDEV-Site erstellen
Hier wird es interessant. Führen Sie einen Befehl aus und cloudflared erstellt automatisch einen Tunnel mit einer öffentlichen URL. Keine Konto-Einrichtung, keine Authentifizierung, keine Konfiguration erforderlich. Die grundlegende Syntax lautet:
cloudflared tunnel --url <lokale-url> --http-host-header <hostname>
Beispiel 1: Meine Projekt-Site
cloudflared tunnel --url https://myproject.ddev.site/ --http-host-header myproject.ddev.site
Beispiel 2: Kunden-Site
cloudflared tunnel --url https://client-site.ddev.site/ --http-host-header client-site.ddev.site
Nachdem Sie diesen Befehl ausgeführt haben, sehen Sie eine Ausgabe wie:
2025-10-14T10:30:15Z INF Vielen Dank, dass Sie Cloudflare Tunnel ausprobieren. Dies ohne Cloudflare-Konto ist ein schneller Weg, um zu experimentieren und es auszuprobieren. Seien Sie sich jedoch bewusst, dass diese Tunnel ohne Konto keine Verfügbarkeitsgarantie haben. Wenn Sie Tunnel in der Produktion verwenden möchten, sollten Sie einen zuvor erstellten benannten Tunnel verwenden, indem Sie folgen: https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/
2025-10-14T10:30:15Z INF Fordere neuen schnellen Tunnel auf trycloudflare.com an...
2025-10-14T10:30:16Z INF +--------------------------------------------------------------------------------------------+
2025-10-14T10:30:16Z INF | Ihr schneller Tunnel wurde erstellt! Besuchen Sie ihn unter (es kann einige Zeit dauern, bis er erreichbar ist): |
2025-10-14T10:30:16Z INF | https://zufaellig-generierte-subdomain.trycloudflare.com |
2025-10-14T10:30:16Z INF +--------------------------------------------------------------------------------------------+
Kopieren Sie die generierte URL (z. B. https://zufaellig-generierte-subdomain.trycloudflare.com
) und teilen Sie sie mit allen, die Zugriff auf Ihre lokale Website benötigen!
Die Befehlsparameter verstehen
Lassen Sie uns aufschlüsseln, was jeder Parameter bewirkt:
--url
: Die lokale URL, unter der Ihre DDEV-Site läuft. Verwenden Sie HTTPS, wenn Ihre DDEV-Site SSL verwendet (was standardmäßig der Fall ist).--http-host-header
: Dies ist entscheidend für DDEV. Es weist cloudflared an, den korrekten Hostnamen im HTTP Host-Header weiterzuleiten. DDEV leitet Anfragen basierend auf diesem Header weiter. Ohne ihn erhalten Sie eine „404 Not Found“-Meldung oder sehen die falsche Website.
Warum ist --http-host-header notwendig?
Der DDEV-Router verwendet Virtual Hosting, was bedeutet, dass mehrere Websites auf derselben IP-Adresse und demselben Port laufen können. Der Router bestimmt, welche Website basierend auf dem Host
-Header in der HTTP-Anfrage bedient wird.
Wenn der Datenverkehr über Cloudflare Tunnel kommt, wäre der Host-Header normalerweise die von Cloudflare generierte Domain (wie zufaellig-generierte-subdomain.trycloudflare.com
). Durch die Angabe von --http-host-header myproject.ddev.site
überschreiben wir dies und stellen sicher, dass DDEV den korrekten Hostnamen sieht.
Benannte Tunnel für persistente URLs verwenden
Die oben genannte Methode für schnelle Tunnel ist perfekt für die Ad-hoc-Freigabe, aber die URL ändert sich jedes Mal, wenn Sie den Befehl ausführen, und es gibt keine Garantie für die Verfügbarkeit. Wenn Sie eine persistente URL mit Ihrer eigenen benutzerdefinierten Domain (wie meinprojekt.example.com
) benötigen, können Sie einen benannten Tunnel erstellen. Dies erfordert ein kostenloses Cloudflare-Konto.
1. Mit Cloudflare authentifizieren
cloudflared tunnel login
Dies öffnet einen Browser zur Authentifizierung bei Ihrem Cloudflare-Konto.
2. Einen benannten Tunnel erstellen
cloudflared tunnel create mein-ddev-tunnel
Dies generiert eine Tunnel-ID und eine Anmeldeinformationsdatei.
3. Eine Konfigurationsdatei erstellen
Erstellen Sie ~/.cloudflared/config.yml
:
tunnel: <TUNNEL-ID>
credentials-file: /Users/ihrbenutzername/.cloudflared/<TUNNEL-ID>.json
ingress:
- hostname: mysite.example.com
service: https://myproject.ddev.site
originRequest:
httpHostHeader: myproject.ddev.site
noTLSVerify: true
- service: http_status:404
Hinweis: noTLSVerify: true
ist erforderlich, da DDEV selbstsignierte Zertifikate verwendet.
4. Ihre Domain routen
cloudflared tunnel route dns mein-ddev-tunnel mysite.example.com
5. Den Tunnel ausführen
cloudflared tunnel run mein-ddev-tunnel
Ihre Website ist nun unter https://mysite.example.com
mit einer persistenten URL erreichbar!
Häufige Anwendungsfälle
1. Kundendemos
Teilen Sie sich in Arbeit befindliche Websites mit Kunden, ohne sie auf Staging-Server hochladen zu müssen:
cloudflared tunnel --url https://kunden-demo.ddev.site/ --http-host-header kunden-demo.ddev.site
Senden Sie die generierte URL an Ihren Kunden für sofortiges Feedback.
2. Webhook-Tests
Testen Sie Webhooks von Diensten wie Stripe, GitHub oder Twilio, die eine öffentliche URL benötigen:
cloudflared tunnel --url https://webhooks.ddev.site/ --http-host-header webhooks.ddev.site
Konfigurieren Sie den Webhook im externen Dienst so, dass er auf Ihre Cloudflare-URL verweist.
3. Tests auf mobilen Geräten
Testen Sie Ihre responsiven Designs auf echten mobilen Geräten, ohne sich im selben Netzwerk befinden zu müssen:
cloudflared tunnel --url https://mobiltest.ddev.site/ --http-host-header mobiltest.ddev.site
Öffnen Sie die Cloudflare-URL auf Ihrem Telefon, um Tests auf echten Geräten durchzuführen.
4. Remote-Zusammenarbeit
Teilen Sie Ihre Entwicklungsumgebung mit entfernten Teammitgliedern:
cloudflared tunnel --url https://team-kollaboration.ddev.site/ --http-host-header team-kollaboration.ddev.site
Ihr Team kann auf die Website zugreifen, als würde es sie lokal ausführen.
Fehlerbehebung
404 oder falsche Website wird angezeigt
Stellen Sie sicher, dass Sie den Parameter --http-host-header
mit dem korrekten DDEV-Hostnamen verwenden:
cloudflared tunnel --url https://meineseite.ddev.site/ --http-host-header meineseite.ddev.site
SSL-Zertifikatsfehler
Wenn Sie einen benannten Tunnel mit einer Konfigurationsdatei verwenden, fügen Sie noTLSVerify: true
zum Abschnitt „Origin Request“ hinzu, da DDEV selbstsignierte Zertifikate verwendet.
Tunnel startet nicht
Überprüfen Sie, ob cloudflared bereits läuft:
ps aux | grep cloudflared
Beenden Sie bei Bedarf alle vorhandenen Prozesse:
pkill cloudflared
DDEV-Site lokal nicht erreichbar
Überprüfen Sie, ob Ihre DDEV-Site läuft:
ddev describe
Stellen Sie sicher, dass die verwendete URL mit der Ausgabe übereinstimmt.
Sicherheitsaspekte
Obwohl Cloudflare Tunnel von Natur aus sicher ist, sollten Sie diese Punkte beachten:
- Produktionsdatenbanken nicht freigeben – Nur Entwicklungssites mit nicht-sensiblen Daten tunneln
- Schnelle Tunnel sind temporär – URLs verfallen und sollten nicht für die Produktion verwendet werden
- Authentifizierung verwenden – Bei sensiblen Projekten Cloudflare Access-Authentifizierung zu Ihren benannten Tunneln hinzufügen
- Tunnelzugriff überwachen – Überprüfen Sie Cloudflare Analytics, um zu sehen, wer auf Ihre Tunnel zugreift
- Tunnel bei Beendigung stoppen – Verwenden Sie Strg+C, um den Tunnel zu beenden, wenn Sie fertig sind
Alternative: Der integrierte Share-Befehl von DDEV
DDEV verfügt auch über einen integrierten Befehl ddev share
, der ngrok verwendet. Cloudflare Tunnel bietet jedoch mehrere Vorteile:
- Kostenlos ohne Ratenbegrenzungen (ngrok-Gratistarif hat Einschränkungen)
- Bessere Leistung durch das globale Netzwerk von Cloudflare
- Integration mit Cloudflare Zero Trust für erweiterte Funktionen
- Persistente benannte Tunnel mit benutzerdefinierten Domains
Dennoch ist ddev share
noch einfacher, wenn Sie nur etwas Schnelles benötigen und keine zusätzlichen Tools installieren möchten.
Vereinfachung des Prozesses mit ddev-share-cf
Um diesen Prozess noch einfacher zu gestalten, habe ich das DDEV-Addon ddev-share-cf erstellt. Dieses Addon integriert Cloudflare Tunnel direkt in DDEV und ermöglicht es Ihnen, Ihre lokalen Websites mit einem einfachen Befehl freizugeben, ohne cloudflared oder Konfigurationsdateien manuell verwalten zu müssen.
Installation
Installieren Sie das Addon mit einem einzigen Befehl:
ddev get davo20019/ddev-share-cf
Verwendung
Nach der Installation führen Sie einfach aus:
ddev share-cf
Das Addon übernimmt die gesamte Tunnelkonfiguration automatisch und macht es so einfach wie der integrierte Share-Befehl von DDEV, aber mit allen Vorteilen von Cloudflare Tunnel.