Cloudflare Tunnel bringt lokale Dienste ins Internet


Und zwar ohne Konfiguration der eigenen Firewall (kein Portforwarding). Kann mittels eigener Domain betrieben werden.

Die Domäne muss in der Cloudflare Platform registriert werden (DNS Server von Cloudflare müssen beim Registrar eingetragen sein).

Danach kann via Web oder CLI (empfohlen) der Tunnel konfiguriert und aufgebaut werden. Erfolgreich getestet unter Linux (Ubuntu und Raspberry Pi OS).

Domäne verbinden:

https://developers.cloudflare.com/fundamentals/get-started/setup/add-site/

Tunnel konfigurieren:

https://developers.cloudflare.com/cloudflare-one/connections/connect-apps/install-and-setup/tunnel-guide/local/#set-up-a-tunnel-locally-cli-setup

DNS Einstellungen:

https://dash.cloudflare.com

Nach der Konfiguration findet man seinen Tunnel im Dash Team Zero Trust Dashboard:

https://dash.teams.cloudflare.com

Account Limits (mit dem Gratis Account sind aktuell Stand 18.09.2022 -> 1000 Tunnel möglich):

https://developers.cloudflare.com/cloudflare-one/account-limits/

Bedingungen:

https://www.cloudflare.com/terms/

Beispiel Datei für die Konfiguration:

Beispiel der config.y m l
diese liegt unter: home/%username%/.cloudflared/config.y m l

Beachte: Leerzeichen und Abstände sind strikt einzuhalten, sonst gibt es beim Punkt Einrichtung des Routings /DNS weiter unten dann Probleme (Error parsing YAML).

tunnel: %UUID%
credentials-file: /home/%username%/.cloudflared/UUID.j s o n
ingress:
– hostname: %hostname%.%domain%.com
service: http://localhost:8080
– service: http_status:404

UPDATE 08.12.2022:

Nach Problemen mit der config Datei habe ich diese gemäss Anleitung von Cloudflare neu so strukturiert:

url: http://localhost:8080

tunnel: UUID

credentials-file: xxxxx

Das reicht schon für eine Applikation (wie z.B. einen Webservice).

Genaueres in der Anleitung von cloudflare.com (siehe Link oben).

Vorgehen:

Nach der Installation des Cloudflare Clients (mit Root Rechten) sind folgende Befehle elementar (Reihenfolge einhalten).

WICHTIG!!! ohne ROOT-Rechte:

cloudflared tunnel login

Web-Browser öffnet sich, Cloudflare Login nötig. Nun wird eine Zertifikatsdatei im oben erwähnten Pfad abgelegt. Diese dient der zukünftigen Authentifizierung. Die Domäne muss noch authorisiert werden (Fenster erscheint automatisch).

cloudflared tunnel create “Tunnelname”

Der Tunnel wird erstellt und die UUID wird bekannt (nötig für die Config Datei -> siehe Beispiel oben).

Nach der Ablage der Konfigurationsdatei kann das Tunnel Routing angelegt werden. Die DNS Einträge werden im gleichen Schritt automatisch von Cloudflared angelegt:

cloudflared tunnel route dns %Tunnelname% %Domänenname%

Die Änderungen können im Zero Trust Dashboard nachvollzogen werden. Der Tunnel ist nun eingetragen aber noch “rot” also inaktiv. Der DNS Eintrag ist im Cloudflare Dashboard ersichtlich (Sektion DNS). Ein ständiges Wechseln zwischen diesen beiden Dashboards ist nötig. Am Anfang verwirrend 🙂

Der Tunnel wird nun gestartet mittels:

cloudflared tunnel run %Tunnelname%

Nun sollte der Tunnel im Zero Trust Dashboard “grün” sein.

In der SSL/TLS Sektion im Cloudflare Dashboard können die SSL Einstellungen gesetzt werden. Z.b. Always use HTTPS (siehe Edge Certificates).

Weitere Einstellungen

Ok, der Tunnel soll nun noch als Service bei jedem System-Start aufgemacht werden?

Nun MIT ROOT Rechten:

cloudflared –config /home/%username%/.cloudflared/config.y m l service install

Service starten:

systemctl start cloudflared

Service neu starten:

systemctl restart cloudflared

Viel Spass damit!

PS: die Y M L Config Datei Endung muss natürlich aneinander geschrieben werden. WordPress hat aber ein Problem damit. Deshalb hier bei Copy-Paste anpassen.

, ,

Leave a Reply

Your email address will not be published. Required fields are marked *