Leitfaden Cloudflare Tunnel
Einleitende Gedanken
Auf einen Hinweis von eineb habe ich einen kleinen Leitfaden zusammengestellt, um einen Cloudflare-Tunnel als Alternative zu offenen Ports einzurichten.
‼️ Dieser Leitfaden erhebt keinen Anspruch auf Vollständigkeit, Richtigkeit und dokumentiert lediglich in groben Zügen meinen Weg.
Obwohl ich in der Vergangenheit keine negativen Erfahrungen mit offenen Ports (443/80 - mit ReverseProxy) gemacht habe, habe ich mich von Protogonos inspirieren lassen und dann erstmal zu Testzwecken (und als Übung) einen CF-Tunnel in der DXP2800 eingerichtet.
Der von Protogonos in die Welt gebrachte Claim "Keine Macht den offenen Ports" hat mich nicht mehr losgelassen, und je mehr ich mich damit beschäftigt habe, desto mehr reifte der Gedanke, diesen Weg einzuschlagen.
Seit kurzem habe ich das erlernte in meinem produktiven NAS (DS923+) umgesetzt und die Ports in der Fritz!Box geschlossen. In der täglichen Nutzung des NAS hat sich nicht viel geändert. Gleiche URL, keine spürbaren Auswirkungen auf die Geschwindigkeit im Seitenaufbau. Ausser, dass mit der aktiven Richtlinie eine zusätzliche Sicherheitsebene eingerichtet wurde.
Sowohl die aktuelle CF-Lösung, wie schon zuvor die Lösung mit den offenen Ports ist nicht der primäre Weg mein NAS (die Applikationen) zu nutzen. Eigentlich nur dann, wenn ich von einem Fremdgerät auf eine Applikation (Drive, Tandoor, etc.) zugreifen will, was unregelmässig und nicht täglich vorkommt. Aber in der Situation dann doch sehr angenehmem ist. Wenn ich unterwegs bin, nutze ich meine eigenen Geräte und damit dann ein Wireguard VPN das in der Fritz!Box läuft. Zuhause im eigenen LAN nutze ich die interne IP.
Es gibt noch viele andere Einstellungsmöglichkeiten und Funktionen auf die ich nicht eingehe - sie auch (noch) nicht verstehe 😜 . Aber das, was ich eingerichtet habe, habe ich schon kapiert. Am besten ist, sich einfach mal mit der Homepage von Cloudflare auseinandersetzen und sich darin - oder auch ausserhalb - zu informieren.
‼️ Achtung: Laie bietet Leitfaden an. 😀 Verwendung auf eigenes Risiko, jede Haftung ist explizit ausbedungen.
1. Erstellen kostenloser Cloudflare-Account
- Gehe zu https://dash.cloudflare.com/sign-up.
- Gib deine E-Mail-Adresse ein und wähle ein sicheres Passwort.
- Bestätige deine E-Mail durch den Link in der E-Mail.
- Melde dich an und gehe auf “Billing” → “Payment Methods”.
- Hinterlege deine Kreditkarte (sie wird nicht belastet, falls du keine kostenpflichtigen Dienste nutzt). Ich nutze dazu eine virtuelle Debit-Karte von Revolut im Zusammenspiel mit meinem Revolut-USD-Konto. Falls was passieren würde, wären lediglich ein paar Dutzend USD futsch.
- Richte gleich auch noch 2FA für Dein Konto ein.
2. Domain mit Cloudflare verbinden
Möglichkeit A: Domain direkt bei Cloudflare kaufen:
- Gehe zu "Domainregistrierung"
- Wähle „Domain registrieren".
- Suche dir eine freie Domain und kaufe sie (z. B. example.org)
- Die Domain wird dann automatisch mit deinem Cloudflare-Account verbunden.
Möglichkeit B: Domain bei einem anderen Anbieter (z. B. selfhost.de) kaufen:
- Nach dem Kauf z.B. bei selfhost.de gehst du zu Cloudflare: “Domain hinzufügen”.
- Gib die Domain ein und folge den Anweisungen.
- Du bekommst zwei Nameserver, die du beim Domainanbieter z.B. selfhost.de einträgst.
- Warte, bis die DNS-Übernahme abgeschlossen ist (kann bis zu 24 Std. dauern). Bei mir hat es etwa eine Stunde gedauert.
3. Cloudflare Tunnel erstellen
Voraussetzung: Cloudflare Zero Trust aktivieren (kostenlos).
- Melde Dich an Deinem Konto an
- Gehe zu “Access” → “Tunnels”.
- Klicke auf “Tunnel erstellen” → Tunnel benennen (z. B. ugreen-nas).
- Wähle z.B. Docker als Installationsmethode oder eine die für Dich passt.
- Cloudflare zeigt dir nun ein docker run-Befehl an – speichere ihn.
4. Tunnel im Docker auf NAS einrichten
- Melde dich per SSH oder über die NAS-Oberfläche an.
- Erstelle ein Verzeichnis für die Tunnel-Konfiguration
- Nutze den von Cloudflare bereitgestellten docker run-Befehl
- Der Tunnel verbindet sich nun mit Cloudflare.
- Der Tunnel kann z.B. auch via Docker/Portainer eingerichtet werden.
5. Anwendung mit Richtlinie erstellen
- Gehe in Cloudflare zu Access → Anwendungen.
- Klicke auf “Anwendung hinzufügen”.
- Wähle “Selbst gehostet”.
- Gib einen Namen an
- Erstelle eine öffentliche Hostnamen
- Wähle Zugangsrichtlinie und erstelle eine Regel z.B. E-Mail mit PIN der auf die hinterlegte E-Mail gesendet wird.
- Speichern und aktivieren.
- Weitere Richtlinien nach Wunsch hinzufügen
6. Hostnamen erstellen um eine App/das NAS von extern zu erreichen.
- Gehe zu Zero Trust
- Wähle Netzwerk, dann Tunnels
- Klicke auf den betreffenden Tunnel, wähle Bearbeiten
- Klicke auf "Öffentlicher Hostname", wähle "Öffentlichen Hostnamen hinzufügen"
- Fülle die Felder aus
7. Ursprungszertifikat (Origin)
Zweck: Der Hauptzweck eines Cloudflare Ursprungszertifikats ist es, eine sichere, Ende-zu-Ende-verschlüsselte Verbindung zwischen dem Cloudflare-Netzwerk und dem Ursprungsserver - also dem NAS herzustellen.
Vorteile, laut meiner Recherche im Internet (zusammengefasst) :
- Erhöhte Sicherheit: Gewährleistet, dass der gesamte Datenverkehr, vom Benutzer über Cloudflare bis zum Server, verschlüsselt ist.
- Vertrauenswürdigkeit: Da Cloudflare das Zertifikat ausstellt, wird es von den Cloudflare-Systemen als vertrauenswürdig eingestuft, was Fehler bei der TLS-Überprüfung im Tunnel vermeidet.
- Längere Gültigkeit: Cloudflare Ursprungszertifikate können für bis zu 15 Jahre ausgestellt werden, was den Wartungsaufwand im Vergleich zu anderen Zertifikaten reduziert, die häufiger erneuert werden müssen.
- Kostenlos: Cloudflare bietet diese Ursprungszertifikate kostenlos an.
- Wähle Dich in Dein Konto ein
- Klicke auf Deine Domain
- Gehe zu SSL/TLS
- Wähle Ursprungserver
- Klicke auf “Zertifikat erstellen”.
- Wähle:
- Gültigkeit: 15 Jahre
- Hostname: *.example.de oder spezifische Subdomain
- Key Format: PEM
- Cloudflare zeigt dir nun Private Key und Certificate.
- Speichern auf NAS:
- Menü 'Zertifikate' dann 'Importieren'
Speichere die Dateien bei Dir an einem sicheren Ort:
- origin.pem
- origin.key
- Wichtig: Konfiguration der Anwendung oder eines Webservers (z. B. nginx) so anpassen, dass dieses Zertifikat genutzt wird.