6 Punkte von GN⁺ 21 일 전 | 1 Kommentare | Auf WhatsApp teilen
  • Ein Praxisbeispiel für die Migration eines persönlichen Blogs zu bunny.net, um die zentralisierte Abhängigkeit von Cloudflare zu verringern
  • bunny.net ist ein in Slowenien ansässiger europäischer CDN-Dienst und bietet weltweit schnelle Leistung sowie ein effizientes PoP-Netzwerk
  • Für die Domain-Registrierung wird Porkbun verwendet, und die „Orange Cloud“-Funktion von Cloudflare wird in die bunny.net-Umgebung übertragen
  • Das CDN wird über schrittweise Konfigurationen wie Pull Zone, Caching-Richtlinien, SSL-Zertifikate und Edge Rule vollständig eingerichtet
  • Bereits mit Grundfunktionen wie DDoS-Schutz, Origin Shield und Stale Cache ist der Dienst stabil und kann für Privatnutzer eine praktische Alternative zu Cloudflare sein

Migration von Cloudflare zu bunny.net

  • Eine Zusammenstellung des Migrationsprozesses und der Konfigurationsmethode für den Umzug eines persönlichen Blogs zu bunny.net, um die Abhängigkeit von Cloudflare und Probleme der Zentralisierung zu reduzieren
    • Cloudflare bietet kostenlos leistungsstarke Funktionen, führt aber zu einer starken Abhängigkeit von einem einzelnen Unternehmen, und Ausfälle können sich strukturell auf das gesamte Internet auswirken
    • Aus Unbehagen über die Konzentration des Internets auf US-Unternehmen und aufgrund verschiedener Kontroversen wurde nach einer Alternative gesucht

Überblick über bunny.net

  • bunny.net ist ein in Slowenien ansässiges europäisches Unternehmen, das einen mit Cloudflare konkurrenzfähigen CDN-Dienst anbietet
    • Weltweit werden hohe Leistung und Geschwindigkeit erreicht; das PoP-Netzwerk ist zwar kleiner, aber effizient
    • Positiv bewertet wird auch, dass damit das Wachstum des europäischen Tech-Ökosystems unterstützt wird

Weg von Cloudflare

  • Für die Registrierung der Blog-Domain wurde zwar Cloudflare genutzt, doch war es schwierig, eine Alternative innerhalb Europas zu finden
    • INWX schied wegen fehlendem kostenlosem WHOIS-Datenschutz aus, stattdessen fiel die Wahl auf Porkbun
    • Porkbun nutzt Cloudflare-Infrastruktur, bietet aber eine hohe Support-Qualität
  • Die Cloudflare-Funktion „Orange Cloud“ (automatisches Caching, Verbergen des Origin, Schutzfunktionen) wird zu bunny.net migriert

Schritte zur Einrichtung von bunny.net

  • Konto erstellen

    • Bei der Anmeldung gibt es 20 US-Dollar Guthaben für 14 Tage, bei Hinterlegung einer Kreditkarte weitere 30 US-Dollar
    • Nach der E-Mail-Verifizierung kann die Einrichtung beginnen; es gilt nutzungsbasierte Abrechnung (mindestens 1 US-Dollar pro Monat)
    • Damit findet ein Wechsel zu einer Struktur statt, in der „der Nutzer nicht das Produkt, sondern der Kunde ist“
  • Pull Zone erstellen

    • Zentrale Komponente zur Aktivierung des CDN; der Server wird über die Angabe der Origin URL verbunden
    • Wenn mehrere Apps betrieben werden, sollte im Host-Header die Domain angegeben werden
    • Nach Auswahl des Standard-Tiers lassen sich regional unterschiedliche Zonen mit verschiedenen Preisen festlegen
    • Nutzer aus deaktivierten Regionen werden zur nächstgelegenen aktiven Zone umgeleitet
  • Pull Zone verbinden

    • Unter „Add a custom hostname“ die Domain der Website eingeben
    • Entsprechend der Anleitung einen CNAME-Record hinzufügen, um den CDN-Pfad zu verbinden (in der Form website.b-cdn.net)
    • Nach der DNS-Propagation mit „Verify & Activate SSL“ die SSL-Zertifizierung abschließen
    • Bei Erfolg wird die Website über das bunny.net-CDN ausgeliefert

Caching-Einstellungen

  • Wenn die Website passende Cache-Control-Header zurückgibt, respektiert bunny.net diese
    • Unter „Caching → General“ prüfen, ob „Respect origin Cache-Control“ aktiviert ist
    • Wenn no-cache gesetzt ist, wird nicht gecacht
  • Falls keine Cache-Header vorhanden sind, werden über Smart Cache automatisch nur Bilder, CSS, JS usw. gecacht
  • In einem auf Elixir Phoenix basierenden Blog wurde der public-Pipeline eine benutzerdefinierte Middleware für Cache-Header hinzugefügt
    • Mit cache-control: public, s-maxage=86400, max-age=0 werden auch HTML-Seiten gecacht
    • Beim Veröffentlichen neuer Beiträge muss der Pull-Zone-Cache manuell geleert werden, damit das aktuelle HTML übernommen wird
  • Messungen mit dem Tool Larm zeigten verbesserte Antwortzeiten an mehreren Standorten weltweit

Empfohlene Grundeinstellungen

  • „Force SSL“ aktivieren, um alle Anfragen auf HTTPS zu erzwingen
  • DDoS-Schutz ist standardmäßig enthalten; zusätzlich reduziert aktiviertes Origin Shield die Serverlast
    • Dabei wird ein Standort in der Nähe des Origin gewählt, um den Cache zu zentralisieren, und Edge-Server fragen zunächst Origin Shield ab
  • Mit den Optionen „Stale Cache: While Origin Offline / While Updating“
    • werden gecachte Inhalte auch bei einem Origin-Ausfall weiter ausgeliefert
    • und während Updates vorübergehend ältere Cache-Inhalte bereitgestellt
  • Eine Edge Rule hinzufügen, um die automatisch generierte Pull-Zone-Domain auf die eigentliche Domain umzuleiten
    • Regelname: „Default domain redirect“
    • Aktion: Redirect, Statuscode 301
    • Bedingung: Bei Anfragen an *://<slug>.b-cdn.net/* Weiterleitung zu https://jola.dev{{path}}

Abschluss und Bewertung

  • Diese Konfiguration behandelt nur die Grundfunktionen von bunny.net; Edge Rules, erweiterte Cache-Konfiguration, Security Shield, Video-Streaming, Edge Scripting, Edge Containers werden noch nicht behandelt
  • Statistiken, Logs und Metriken im Dashboard sind äußerst detailliert, und auf Anfragebene lässt sich verfolgen, ob ein Objekt aus dem Cache kam und wo Probleme auftraten
  • Künftig sollen alle Dienste zu bunny.net migriert werden; erwartet wird auch die Einführung von S3-kompatiblem Storage
  • Auch für Privatnutzer ist dies eine ausreichend konkurrenzfähige Alternative zu Cloudflare

1 Kommentare

 
GN⁺ 21 일 전
Hacker-News-Kommentare
  • Bei einem positiven Blogpost wäre es für transparente Offenlegung wohl besser, ausdrücklich zu erwähnen, dass alle Links auf das Bunny Affiliate Program verweisen

    • Mir ist aufgefallen, dass ich zu viele Links eingefügt hatte, deshalb habe ich einige entfernt. Ich fand es nur interessant, dass Bunny ein Affiliate-Programm hat, und wollte das nicht absichtlich verbergen
    • Ich bin kein Jurist, aber wenn man vergütete Empfehlungen nicht offenlegt, könnte das gegen die FTC-Richtlinien verstoßen. Soweit ich weiß, gibt es nicht nur in den USA, sondern auch im Vereinigten Königreich ähnliche Regeln
  • Ich nutze bunny.net für CDN und DNS
    Da kostenlose Dienste irgendwann kostenpflichtig werden können, finde ich es besser, von Anfang an wenigstens einen kleinen Betrag zu zahlen. Ein Anstieg von 2 auf 3 Dollar ist okay, aber von kostenlos auf 20 Dollar wäre riskant
    Außerdem bevorzuge ich kleine, unabhängige Unternehmen, die Rücksicht auf Entwickler nehmen. Deshalb nutze ich bunny.net, transistor.fm und Plausible Analytics

    • In so einem Fall wechselt man einfach zu einem anderen Anbieter. Bei CDN und DNS gibt es kaum Vendor Lock-in; man exportiert die Konfiguration und importiert sie anderswo
    • Logisch betrachtet ist es wahrscheinlicher, dass Cloudflare die kostenlosen Kontingente nur moderat reduziert. Realistisch gesehen wollen Anbieter gegenseitig ruinöse Preispolitik vermeiden. Kleinere Unternehmen zu nutzen, bleibt trotzdem eine gute Entscheidung
    • Kostenlose Dienste helfen am Ende vor allem dem Anbieter, sodass der Nutzer leicht zum „Produkt“ wird. Wenn man zahlt, ist der Werteaustausch klarer
    • Allerdings können auch kostenpflichtige Dienste plötzlich die Preise erhöhen oder Bedingungen ändern
    • Ich nutze bunny.net aus demselben Grund. Es geht auch darum, die Vielfalt des Internet-Ökosystems zu erhalten
  • Ich betreibe ein SaaS mit Cloudflare Workers + Pages. Dass man serverlose Funktionen und statische Websites aus demselben Repository deployen kann, sorgt für eine sehr gute Developer Experience
    Allerdings hatte ich zuletzt ein Problem, bei dem der CDN-Edge-Cache auch nach einem Deployment noch veraltetes HTML ausgeliefert hat. Das Debugging ist schwierig, und man muss raten, welche Cache-Ebene schuld ist
    Trotzdem ist es zum Starten mit dem kostenlosen Tier unschlagbar. Mit Workers, Pages, KV und R2 kann man praktisch kostenlos eine produktive App betreiben

    • Der größte Vorteil von Cloudflare ist die wrangler CLI. Zusammen mit Claude Code kann man Konfiguration und Debugging vollständig automatisieren
    • Bunny hat ähnliche Funktionen. Es bietet auch eine SQLite-kompatible API und Edge Functions. Wegen regionaler Debugging-Probleme habe ich das kostenlose Tool dnsisbeautiful.com/global-http-availability gebaut
    • Ich hatte dasselbe Cache-Problem, und jemand hatte sogar ein Skript geteilt, um es zu beheben
    • Bunny hat kein kostenloses Tier, aber es nutzt Prepaid-Abrechnung, sodass kein Risiko plötzlicher Kosten besteht. Mir gefällt, dass man bei einem Traffic-Ausreißer nicht plötzlich Hunderttausende Dollar berechnet bekommt
    • Wir haben es so eingerichtet, dass der Cache nach Deployments automatisch in der CI geleert wird. Durch Verzögerungen bei der Cache-Propagation kann jedoch wieder stale Content zwischengespeichert werden
  • Cloudflare ist inzwischen nicht mehr nur ein CDN, sondern eine Edge-Plattform. Wenn man problemlos zu Bunny wechseln kann, hat man die eigentlichen Cloudflare-Funktionen wahrscheinlich gar nicht genutzt
    Schade ist, dass Standards wie WinterTC nicht richtig unterstützt werden. Eine dedizierte serve-Funktion wie in BunnySDK zu verwenden, ist sogar noch stärkere proprietäre Abhängigkeit

    • Der Vollständigkeit halber: Auch Cloudflares Edge-Plattform ist ziemlich geschlossen
    • WinterTC legt nicht fest, wie ein HTTP-Server gestartet wird. Es verlangt mindestens nur die Request-/Response-Schnittstellen der Fetch API
  • Wir nutzen Bunny für verschiedene Zwecke und sind sehr zufrieden. Besonders die Support-Qualität ist hervorragend. Cloudflare ist gut, stößt aber ohne kostenpflichtigen Enterprise-Support an Grenzen. Auch UpCloud hat exzellenten Support

  • Man hört oft den Satz „Cloudflare ist ein Single Point of Failure des Internets“, aber in Wirklichkeit ist es komplizierter
    Wenn kleine Dienste breit genutzt werden, könnte sich die Verteilung von Ausfällen ändern. Dafür könnte es häufiger kleinere Ausfälle geben
    Außerdem ist Cloudflares Infrastruktur nicht vollständig zentralisiert. Einige Dienste sind regional voneinander unabhängig

    • Einen einzelnen Anbieter zu nutzen, bleibt trotzdem ein Single Point of Failure. Wenn man echte Resilienz will, muss man mehrere Anbieter parallel einsetzen. Das heißt, man sollte einen eigenen Origin-Server betreiben und CDN nur minimal einsetzen
  • Ich bin vor einem Jahr zu Bunny gewechselt und sehr zufrieden. Es ist auch gut, einen EU-basierten CDN unterstützen zu können, und dank Magic Containers kann man für etwa 1 Dollar im Monat eine weltweit skalierbare API betreiben

    • Magic Containers eignen sich besonders für kleine Projekte. Sie bieten etwas Ähnliches wie Cloudflare Durable Objects, aber deutlich günstiger
  • Der Beitrag mag wie Werbung wirken, war aber tatsächlich nur ein geteilter Erfahrungsbericht. Die Affiliate-Links waren gekennzeichnet, und es gab keine Absicht, etwas zu verbergen

    • Die Kritik „von einem Single Point of Failure zu einem anderen gewechselt“ ist ein Missverständnis. Dem Autor ging es nicht um seine eigene Website, sondern um die Zentralisierung des gesamten Internets. Bunny ist eine Alternative zu einer US-zentrierten Struktur
    • Einige haben diesen Thread als Spam gemeldet
  • Ein Punkt, auf den man achten sollte: In Bildungseinrichtungen usw. wird die Domain *.b-cdn.net oft blockiert

    • Wir hatten ebenfalls das Problem, dass Assets blockiert wurden, nachdem wir Cloudflare R2 als CDN genutzt hatten, unter anderem bei einigen europäischen Behörden. Nach dem Wechsel zu Bunny war alles gelöst
  • Schade ist, dass es kein kostenloses Hosting gibt. Selbst bei wenig Traffic muss man 1 Euro pro Monat zahlen (zzgl. MwSt.)
    Außerdem gibt es nicht viele DNS-Anbieter, die CNAME flattening unterstützen. Auch die Cache-Invalidierung muss zweimal erfolgen, damit sie wirklich greift

    • Manche machen sich über den Preis lustig, aber der Punkt ist nicht der Betrag, sondern die Einstiegshürde. Das Problem ist, dass man eine Kreditkarte eingeben muss
    • Es gab auch spöttische Reaktionen wie „1 Euro ist also zu teuer“
    • Tatsächlich ist das Fehlen eines kostenlosen Tiers kein Bug, sondern ein Feature. Es ist eine Entscheidung für eine vorhersehbare Kostenstruktur
    • Verglichen mit kostenlosen, aber oft instabilen Diensten wie GitHub Pages ist 1 Euro ein völlig angemessener Betrag
    • Am Ende geht es um 1,20 Euro im Monat