Anleitung: Lokale Dienste in ServBay sicher über Cloudflare Tunnel veröffentlichen
Cloudflare Tunnel (ehemals Argo Tunnel) ist ein Zero-Trust-Netzwerkdienst von Cloudflare. Er ermöglicht es, lokal laufende Webdienste, SSH oder andere Anwendungen sicher im Internet verfügbar zu machen – ohne öffentliche Ports zu öffnen oder komplexe Firewallregeln zu konfigurieren. Diese Anleitung zeigt Ihnen Schritt für Schritt, wie Sie im starken lokalen Web-Entwicklungsumfeld von ServBay mit dem cloudflared
-Client eine sichere Verbindung ins Internet herstellen.
Hauptvorteile:
- Verbesserte Sicherheit: Profitieren Sie von Cloudflares globaler Netzwerksicherheit, inklusive DDoS-Schutz, WAF (Web Application Firewall) und mehr.
- Einfache Netzwerkkonfiguration: Kein Port-Forwarding, keine NAT- oder Firewallregeln notwendig.
- Zero-Trust-Modell: Verbindungen sind ausgehend, was die Angriffsfläche stark minimiert.
- Cloudflare-Integration: Nutzen Sie Caching, Performance-Optimierungen und Analyse von Cloudflare.
Überblick
ServBay bietet Entwicklern eine integrierte und leicht zu verwaltende lokale Entwicklungsumgebung – mit Unterstützung für zahlreiche Programmiersprachen (PHP, Node.js, Python, Go, Java, Ruby, Rust etc.), Datenbanken (MySQL, PostgreSQL, MongoDB, Redis usw.) und Webserver (Caddy, Nginx, Apache). Standardmäßig sind mit ServBay entwickelte Websites oder Apps nur lokal erreichbar. Durch den Einsatz von Cloudflare Tunnel können Sie Ihren Entwicklungsstand einfach mit Teamkollegen teilen oder den lokalen Service gezielt extern zur Verfügung stellen und zugleich von der Sicherheit und Performance von Cloudflare profitieren.
Technisches Prinzip
Cloudflare Tunnel funktioniert, indem der cloudflared
-Client auf Ihrem lokalen Rechner (dort, wo ServBay läuft) eine oder mehrere verschlüsselte QUIC-Verbindungen zu einem Cloudflare-Edge-Node aufbaut. Da diese Verbindungen ausgehend sind, sind keine Anpassungen an Ihrem Router oder Ihrer Firewall für eingehenden Verkehr nötig. Greift jemand über die zum Tunnel gehörende Domain auf Ihren Dienst zu, landet der Datenverkehr erst bei Cloudflare und wird anschließend gesichert durch den Tunnel an Ihren lokalen cloudflared
-Client geleitet. Von dort wird die Anfrage an Ihren lokalen Dienst in ServBay (z.B. unter https://servbay.local
oder http://localhost:8000
) weitergereicht. Die Antwort geht dann denselben Weg zurück.
Vorbereitung
Stellen Sie vor dem Start sicher, dass folgende Voraussetzungen erfüllt sind:
- ServBay ist installiert und läuft: Ihre ServBay-Umgebung ist eingerichtet und der zu veröffentlichende Dienst/Wesite läuft. Beispielsweise ist die Standard-Domain
servbay.local
erreichbar. - Cloudflare-Konto: Sie besitzen ein Cloudflare-Konto.
- Domain bei Cloudflare hinterlegt: Eine eigene Domain, die zu Ihrem Cloudflare-Konto hinzugefügt wurde, deren DNS von Cloudflare verwaltet wird.
- Installation des
cloudflared
-Clients: Installieren Sie diecloudflared
-CLI auf Ihrem macOS-System, auf dem ServBay läuft.
1. Installation des cloudflared
-Clients
Für macOS empfehlen wir Homebrew. Sollten Sie Homebrew noch nicht installiert haben, folgen Sie zunächst der offiziellen Anleitung von Homebrew.
Installation via Homebrew (empfohlen):
brew update
brew install cloudflared
2
Manueller Download für macOS ARM (Apple Silicon):
# Download der Binary für macOS ARM (Apple Silicon)
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-darwin-arm64.tgz | tar xz
# Die heruntergeladene Binary ins System-PATH verschieben
sudo mv cloudflared /usr/local/bin/
2
3
4
Überprüfung der Installation: Nach der Installation prüfen Sie mit folgendem Befehl, ob cloudflared
erfolgreich installiert wurde und welche Version vorliegt:
cloudflared --version
# Beispielausgabe: cloudflared version 2024.5.0 (built 2024-05-01)
2
Die Version kann variieren – wichtig ist die erfolgreiche Anzeige eines Versionshinweises.
2. Anmelden am Cloudflare-Konto
Melden Sie sich im Terminal mit folgendem Befehl an Ihrem Cloudflare-Konto an:
cloudflared tunnel login
cloudflared
öffnet daraufhin automatisch Ihren Browser und leitet auf die Cloudflare-Loginseite um. Wählen Sie das Cloudflare-Konto aus, dem Ihre Domain zugeordnet ist, und autorisieren Sie den Zugriff. Nach erfolgreicher Autorisierung sehen Sie eine Bestätigung im Browser, und im Terminal erscheint ein Hinweis auf den Abschluss sowie der neue cert.pem
-Key im Standard-Konfigurationsverzeichnis (meist ~/.cloudflared/
).
Tunnel einrichten: Praxis
Jetzt erstellen wir einen neuen Tunnel und konfigurieren ihn so, dass der Verkehr an den gewünschten lokalen ServBay-Dienst weitergeleitet wird.
Wesentliche Schritte
Tunnel erstellen
Legen Sie im Terminal einen neuen Tunnel an – mit einem selbsterklärenden Namen, z.B.
servbay-demo-tunnel
:bashcloudflared tunnel create servbay-demo-tunnel
1Die Ausgabe nennt die Tunnel-ID (UUID) und den Pfad zur
credentials-file
. Notieren Sie sich die Tunnel-ID, z.B.a7b8c9d0-e1f2-3a4b-5c6d-7e8f9a0b1c2d
. Im Verzeichnis~/.cloudflared/
wird zudem eine gleichnamige JSON-Datei mit Zugangsdaten erzeugt (z.B.a7b8c9d0-e1f2-3a4b-5c6d-7e8f9a0b1c2d.json
) – diese Datei sicher aufbewahren!DNS-Eintrag setzen
Damit Cloudflare Ihre Domain dem Tunnel zuordnen kann, legen Sie einen CNAME-DNS-Eintrag an. Mit diesem Befehl geht das bequem via
cloudflared
:bashcloudflared tunnel route dns servbay-demo-tunnel servbay-demo.yourdomain.com
1Ersetzen Sie
servbay-demo-tunnel
durch den Namen Ihres Tunnels undservbay-demo.yourdomain.com
durch die gewünschte Subdomain (achten Sie darauf, dassyourdomain.com
Ihre bei Cloudflare verwaltete Domain ist).Nach Ausführung wird in Ihrer Cloudflare DNS-Konfiguration für
servbay-demo.yourdomain.com
ein CNAME-Record gesetzt, der auf<TUNNEL-ID>.cfargotunnel.com
zeigt.Konfigurationsdatei anlegen
cloudflared
nutzt eine YAML-Datei, um das Routing zu konfigurieren. Typischer Pfad:~/.cloudflared/config.yml
. Falls die Datei nicht existiert, erstellen Sie sie neu.Bearbeiten Sie
~/.cloudflared/config.yml
. Beispielinhalt:yaml# tunnel: UUID Ihres Tunnels – durch Ihre eigene ID ersetzen tunnel: a7b8c9d0-e1f2-3a4b-5c6d-7e8f9a0b1c2d # credentials-file: Pfad zur Credentials-Datei, üblicherweise im ~/.cloudflared/ - benannt nach der Tunnel UUID credentials-file: /Users/IhrBenutzername/.cloudflared/a7b8c9d0-e1f2-3a4b-5c6d-7e8f9a0b1c2d.json # Benutzername und Pfad anpassen! ingress: # Regeln für eingehende Anfragen - hostname: servbay-demo.yourdomain.com # Externe Domain, wie für DNS konfiguriert service: https://servbay.local # Lokale Adresse des ServBay-Dienstes. ServBay bietet standardmäßig servbay.local mit SSL. originRequest: # noTLSVerify: true # Bei selbstsignierten Zertifikaten (z.B. von ServBay User CA) diesen Wert ggf. aktivieren, um TLS-Checks zu überspringen # Bei gültigem Zertifikat (z.B. von Let's Encrypt via ServBay ACME) ist dies nicht nötig. # Für einfaches lokales Testing empfiehlt sich meist die ServBay-CA mit aktiviertem noTLSVerify. - service: http_status:404 # Fallback-Regel, gibt 404 zurück wenn keine hostname-Regel passt
1
2
3
4
5
6
7
8
9
10
11
12
13
14Wichtige Hinweise:
- Die Werte für
tunnel
undcredentials-file
mit den tatsächlich generierten UUID/Daten vervollständigen. hostname
auf Ihre gewählte Subdomain aus Schritt 2 anpassen.service: https://servbay.local
zeigt auf die Standard-HTTPS-Adresse Ihres ServBay-Projekts. Wenn Ihr Dienst auf einer anderen Adresse/Port (z.B. Node.js aufhttp://localhost:3000
) läuft, diese Werte entsprechend anpassen.- Mit
originRequest.noTLSVerify: true
können Sie (bei selbstsignierten Zertifikaten wie ServBay User CA) das TLS-Zertifikat auf Ihrer lokalen Instanz deaktivieren. Bei offiziell vertrauenswürdigen Zertifikaten (z.B. Let's Encrypt via ServBay) ist diese Option nicht erforderlich.
- Die Werte für
Tunnel-Dienst starten
Nach Abschluss der Konfiguration kann der Tunnel gestartet werden:
cloudflared tunnel run servbay-demo-tunnel
Ersetzen Sie servbay-demo-tunnel
durch Ihren Tunnelnamen.
cloudflared
baut nun die Verbindung zu Cloudflare auf. Im Terminal erscheinen Status- und Logmeldungen. Solange der Prozess läuft, bleibt der Tunnel aktiv. Soll der Tunnel als Dienst im Hintergrund laufen, empfiehlt sich die Einrichtung als Systemdienst (unter macOS z.B. via launchctl
– Details sprengen jedoch den Rahmen dieser Anleitung).
Verifizierung des Dienstes
Nach erfolgreichem Start können Sie von außen via Domain auf den lokalen ServBay-Dienst zugreifen:
Zugriff auf die konfigurierte Domain: Öffnen Sie die im vorherigen Schritt konfigurierte Domain, z.B.
https://servbay-demo.yourdomain.com
, im Browser.Wichtige Prüfungen:
- Ihre Seite sollte wie beim lokalen Zugriff auf
https://servbay.local
erscheinen. - Die Adressleiste zeigt ein gültiges SSL-Zertifikat an (dieses wird von Cloudflare für Ihre Domain ausgestellt, nicht von Ihrer lokalen Instanz!).
- Über die Entwicklertools des Browser können Sie im HTTP-Header u.a. das Feld
CF-RAY
finden – dies bestätigt den Weg durch das Cloudflare-Netzwerk.
- Ihre Seite sollte wie beim lokalen Zugriff auf
Tipps für fortgeschrittene Konfiguration
Mehrere Dienste routen
Unter config.yml
im Bereich ingress
können Sie verschiedene Domains/Subdomains zu unterschiedlichen lokalen Diensten routen (z.B. verschiedene Websites oder APIs):
ingress:
- hostname: api.yourdomain.com
service: http://localhost:8080 # Beispiel: Lokale API auf Port 8080
- hostname: app.yourdomain.com
service: https://servbay.local # Hauptseite
- service: http_status:404
2
3
4
5
6
Monitoring & Logs
Mit cloudflared
stehen Ihnen diverse Befehle zur Überwachung und Fehleranalyse bereit:
- Echtzeit-Metriken anzeigen:bash
cloudflared tunnel info servbay-demo-tunnel
1 - Detaillierte Logs:
cloudflared tunnel run
gibt Logs direkt im Terminal aus. Loglevel und Dateiausgaben können flexibel eingestellt werden.
Cloudflare Access integrieren
Für ein noch höheres Sicherheitsniveau empfiehlt sich die Kombination mit Cloudflare Access – einer Zero-Trust-Zugriffsplattform, mit der Sie granulare Authentifizierung und komplexe Zugriffsregeln für Ihre Dienste festlegen können. Die Einrichtung erfolgt typischerweise im Cloudflare Dashboard.
Fehlerbehebung
Folgende Tabelle hilft bei der Analyse gängiger Fehlerursachen:
Problem | Lösungsempfehlung |
---|---|
502 Bad Gateway beim Zugriff | Prüfen Sie, ob Ihr ServBay-Dienst korrekt läuft und lokal erreichbar ist (https://servbay.local etc.).Kontrollieren Sie die service -Adresse und Port im config.yml .Bei HTTPS und aktiviertem Zertifikatscheck, prüfen Sie Ihr Zertifikat oder aktivieren Sie noTLSVerify . |
DNS-Fehler/Domain nicht erreichbar | Prüfen Sie, ob in Cloudflare ein korrekter CNAME-Eintrag auf <TunnelID>.cfargotunnel.com existiert – ggf. Test via dig oder nslookup . |
Zertifikatfehler im Browser | Prüfen Sie, ob die im config.yml hinterlegte hostname -Angabe exakt mit der aufgerufenen Domain übereinstimmt.Bei TLS-Problemen zwischen cloudflared und dem lokalen Dienst: Zertifikat kontrollieren bzw. originRequest.noTLSVerify: true aktivieren. |
Fehler im Befehl cloudflared tunnel run | Prüfen Sie, ob ~/.cloudflared/config.yml existiert und im YAML-Syntax korrekt ist.Kontrollieren Sie die Korrektheit von tunnel - und credentials-file -Angaben.Prüfen Sie, ob die Zugriffsrechte für Konfigurations- und Credential-Dateien passen. |
Langsame/instabile Verbindungen | Prüfen Sie Ihre lokale Netzwerkanbindung. Cloudflare Tunnel nutzt QUIC – stellen Sie sicher, dass dieses Protokoll nicht geblockt wird. Regionseinstellung und ggf. Cloudflare-Support konsultieren. |
Zusammenfassung der Vorteile
Durch den Einsatz von Cloudflare Tunnel in ServBay können Sie:
- Lokale Fortschritte sicher teilen: Entwickelte Websites/Apps einfach dem Team oder Kunden präsentieren.
- Tests externer Schnittstellen: Webhooks oder andere Dienste testen, die externen Zugriff erfordern.
- Enterprise-Security nutzen: Profitieren Sie von DDoS-Schutz, WAF und anderen Sicherheitsfeatures von Cloudflare – auch für lokale Dienste!
- Netzwerk-Konfiguration vereinfachen: Kein Port-Forwarding, keine Firewallregeln.
- Optimierte Erreichbarkeit: Schneller, weltweiter Zugriff via Cloudflares Anycast-Infrastruktur.
Die leistungsstarke lokale Entwicklungsumgebung von ServBay, kombiniert mit sicherem Cloudflare-Tunnel-Zugang, bietet Entwicklern einen effizienten und besonders geschützten Workflow.
Fazit
Diese Anleitung hat gezeigt, wie Sie in ServBay cloudflared
installieren, konfigurieren und innerhalb weniger Schritte einen Cloudflare Tunnel einrichten, um lokale Webdienste sicher im Internet bereitzustellen. Mit dieser Kombination nutzen Sie die Multi-Stack-Fähigkeiten von ServBay und die Sicherheitsvorteile von Cloudflare Tunnel optimal für produktive Entwicklung und effektive Teamarbeit. Beachten Sie: Cloudflare Tunnel ist Teil der Cloudflare Zero Trust Plattform. Es lohnt sich, auch zusätzliche Features wie Cloudflare Access für noch granulare Zugriffskontrolle und Sicherheit zu testen.