Cloudflare

31. Jänner 2023

Bis vor Kurzem war mir Cloudflare wegen seines DNS-Servers (1.1.1.1) und als CDN (Content Delivery Network) bekannt.

Beim Surfen bin ich dann allerdings auf neuere Features gestoßen, die mein Interesse geweckt haben – angefangen mit Cloudflare Tunnel.

Meine Domänen habe ich bei hosting.de registriert. Da ich keine statische IP habe und es mir das Geld bisher nicht der Wert war, hatte ich ein Tool, welches regelmäßig prüft, ob sich die IP-Adresse geändert hat, und entsprechend den A-Record per API angepasst hat. In meiner Firewall war zusätzlich ein Port-Forwarding konfiguriert, welches eingehende Requests auf meinen Home-Server weitergeleitet hat. Von dort hat Nginx die Requests wieder weitergeleitet. Das Ganze hat erstaunlich gut funktioniert. Allerdings war die Konfiguration einer Subdomäne immer mit relativ viel Aufwand verbunden: Eintrag bei hosting.de, Zertifikat über LetsEncrypt, Einstellungen in Nginx. Außerdem war ich nie sonderlich glücklich, dass meine interne IP öffentlich war. Die Firewall hatte des Öfteren mit interessanten Anfragen aus China und Russland zu tun 😉.

Mit Cloudflare Tunnel funktioniert das Ganze anders. Als Nameserver für meine Domänen habe ich jetzt Cloudflare konfiguriert sowie einen Cloudflare Tunnel eingerichtet. Dort kann ich ganz einfach Subdomänen anlegen und definieren, wohin in meinem Netz ein Request auf eine solche Subdomäne weitergeleitet werden soll. Das dazugehörige Tool „Cloudflared“ läuft als Docker Container auf meinem Home-Server. Weiters ist es sehr einfach möglich bei Cloudflare einzelne Subdomänen so einzurichten, dass nur bestimmte Benutzer darauf Zugriff haben (Azure AD, Facebook, SAML, Auth0, …). Meine eigene IP ist somit nicht mehr direkt bei meiner Domäne gelistet, da alles über das Cloudflare-Netzwerk läuft.

Als Nächstes habe ich mich mit Cloudflare Pages auseinandergesetzt. Bis dato hatte ich Drone.io installiert. Sobald ich in GitHub einen PR in den Main-Branch übernommen habe, hat Drone.io einen Build aktiviert und das Ergebnis auf meinem Home-Server abgelegt. Mit Cloudflare Pages habe ich dies nun alles dahingehend geändert, dass sowohl der Build als auch die Veröffentlichung direkt über Cloudflare gemacht wird. Somit werden mein Internet und mein Home-Server nicht mehr mit diesen Requests „belastet“. Die komplette Einrichtung hat mich, inkl. dem kurzen Einlesen in die Dokumentation, ca. 15 Minuten gekostet. Ich bin begeistert 😀.

Cloudflare hat zwar nicht ansatzweise die Anzahl an Cloud-Diensten wie Azure oder AWS, aber es gibt dennoch ein paar, die erwähnenswert sind:

  • Workers: entspricht Azure Functions oder AWS Lamba
  • R2: entspricht Azure Storage oder AWS S3
  • KV: Key-Value-Storage
  • Queues: entspricht Azure Queue Storage bzw. einer primitiven Form von Azure Service Bus
  • D1: eine gemanagte SQLite-Datenbank

Mit diesen Diensten habe ich zwar noch keine Erfahrung, aber werde sie mir definitiv bei Gelegenheit anschauen.

Auch die Preise finde ich sehr fair. Bei fast allen Diensten ist ein kostenloses Kontingent enthalten, das für private Zwecke mehr als ausreichen dürfte.