Eigene Webservices zu Hause mit Cloudflare veröffentlichen

 

Wer seine Webservices vom Internet erreichen will, kann dazu ein Port-Forwarding am Router einrichten. Für einen sicheren Zugriff auf mehrere Webservices kann zudem ein Reverse-Proxy mit SSL-Offloading zum Einsatz kommen. Alternativ zu diesem Setup bietet Cloudflare mit dessen Zero Trust Dienst eine Möglichkeit die Verbindung über einen Tunnel herzustellen. Der Tunnel wird dabei mit einem kleinen Hilfsprogramm aus dem eigenen Netzwerk aufgebaut, was eine einfache und sichere Verbindung von außen auf freigegebene Services ermöglicht. Nachdem der Tunnel ausgehend aufgebaut wird, benötigt der Internetzugang keine speziellen Voraussetzungen: keine fixe IP-Adresse, keinen DynDNS-Service und keine eingehenden Ports und somit auch kein Port-Forwarding am Router. Die einzige Voraussetzung ist eine Domain und ein CloudFlare-Account.

Voraussetzungen

  • CloudFlare-Konto (Für die Registrierung ist eine Kreditkarte notwendig, der Zero Trust Tunnel Service ist für eine limitierte Anzahl an Benutzern kostenlos)
  • kostenpflichtige Top Level Domain (TLD), erhältlich um ca. 15€ pro Jahr, je nach Domainendung.

Domain, besser nicht gratis ...

Für den Zugriff auf die eigenen Ressourcen über den Zero Trust Tunnel wird eine TLD-Domain vorausgesetzt, ein DynDNS-Service reicht dafür nicht. Obwohl es in der Vergangenheit auch kostenlose Domains, als Beispiel über den Anbieter Freenom.com gegeben hat, ist es nachhaltiger ein paar Euro / Jahr zu investieren und eine eigene Domain zu registrieren. 

Mit Stand Mai 2023 können auch bei Freenom.com keine kostenlosen Domains mehr registriert werden:

Informationen zur Registrierung und der Verwaltung einer Domain, siehe auch: Website Baukasten vs. Webspace oder ein eigener Webserver?

Cloudflare

Vorab ein Überblick zum Aufruf über das Internet bei Einsatz eines Cloudflare Tunnels:

Siehe dazu auch: https-Webservices als VPN Alternative: Zugriff auf das Netzwerk.

Domain registrieren

Wer noch keine Domain besitzt, kann diese bei einem beliebigen Hosting-Provider oder gleich direkt bei Cloudflare registrieren:

https://www.cloudflare.com/

Vorhandene Domains, oder Domains, die bei einem anderen Hosting-Provider registriert wurden, können in Cloudflare durch das Anpassen der DNS-Server eingebunden werden, siehe: Website Baukasten vs. Webspace oder ein eigener Webserver?

CloudFlare - Zero Trust Tunnel

Nachdem eine Domain in CloudFlare eingebunden wurde, kann dar Tunnel eingerichtet werden:

 

Der Wizard für das Erstellen eines Tunnels startet mit "Create a tunnel" 

Damit zwischen dem Netzwerk zu Hause und Cloudflare eine Verbindung aufgebaut werden kann, benötigen wir im lokalen Netzwerk einen kleinen Helfer. Nachdem ich meine Webservices mit Docker betreibe, verwende ich auch hier die Dockervariante für den Connector:

Durch den Start des "docker run" - Kommandos startet der Tunnel und baut eine Verbindung auf:

Docker-Tunnel docker run

Wer den Befehl zu einem bestehenden Projekt in eine docker-compose-Datei hinzufügen will, kann dies wie folgt:

Alternativ zu docker run: docker-compose.yml

version: '3'
services:
  cloudflaretunnel:
    image: cloudflare/cloudflared:latest
    restart: always
    command: "tunnel --no-autoupdate run"   
    environment:
      - TUNNEL_TOKEN=???

Der Start erfolgt mit dem Befehl "docker compose up -d"

Auch wäre es an dieser Stelle möglich für jedes Projekt, also für jede docker-compose-Datei ein eigenes Netzwerk und einen eigenen Tunnel zu verwenden. Der Einfachheit halber habe ich den Tunnel standalone mit der beschriebenen docker-compose-Datei umgesetzt. Für einen ersten Test habe ich Home-Assistant veröffentlicht:

Privates Netzwerk Routen

Für den Zugriff auf ein privates Webservice kann dafür eine Subdomain angelegt und ein im lokalen Netzwerk vorhandener Endpunkt mit Port angegeben werden. Home-Assistant kann in meinem Netzwerk über die URL http://192.168.1.5:8123 erreicht werden, entsprechend verwende ich diese URL als Service:

Zu guter Letzt fehlt uns dann noch das interne private Netzwerk:

Nachdem mein Router die IP-Range 192.168.1.1 verwendet und sich alle Netzwerkgeräte in diesem Subnetz befinden, kann ich das komplette Netz als potentielles Ziel für die veröffentlichten Services angeben:

Beim Aufruf der URL aus dem Internet sollte das veröffentlichte Service geladen werden.

Dadurch, dass ich als privates Netzwerk das komplette private Subnetz angegeben habe, kann ich zusätzliche Webservices jederzeit über einen zusätzlichen Public Hostname veröffentlichen:

Fazit

Ich dachte schon ein Port-Forwarding und der Einsatz eines Reverse-Proxy sei relativ schlank und einfach, dennoch geht es noch einfacher: Der Cloudflare-Tunnelservice ermöglicht einen einfachen und sicheren Zugriff auf private Netzwerkressourcen. Zum einen wird mit Cloudflare nicht die öffentliche IP des privaten Internetzugangs verwendet, zum anderen bietet Cloudflare die Möglichkeit den Zugriff durch zusätzliche Anmeldedienste zu schützen. Der Free Plan des Cloudflare-Zero-Trust-Service inkludiert den Zugriff für 50 User, was für den Zugriff auf die eigenen Webressourcen sicherlich reichen sollte. Anders beim Veröffentlichen eines Internetauftritts, hier ist ein Zero-Trust-Tunnel eventuell nicht die erste Wahl. 

positive Bewertung({{pro_count}})
Beitrag bewerten:
{{percentage}} % positiv
negative Bewertung({{con_count}})

DANKE für deine Bewertung!

Fragen / Kommentare


Durch die weitere Nutzung der Seite stimmst du der Verwendung von Cookies zu Mehr Details