Dropping Cloudflare for Bunny.net

7 hours ago (jola.dev)

In the interests of transparent disclosure on such a positive blog post, It might be worth calling out that all the links on the page are all linked to the Bunny Affiliate Program. [1]

[1] https://bunny.net/affiliate/

  • Sorry, I realize I overdid it on the affiliate links so I've called out the link and removed some others. Just thought it was nice that they had an affiliate program. Nothing shady intended!

  • Yeah IANAL, but this sort of endorsement with undisclosed remuneration would probably run afoul of FTC guidelines, which is why you see disclaimers like "As an Amazon Associate I earn from qualifying purchases" everywhere. The author seems to live in the UK, but a cursory search suggests there's something similar there as well.

I use bunny.net for CDN and DNS.

I don't like free offerings, because what if they decide to charge someday? What if someone decides "free is not feasible, we start charging $20 per instance now".

I'd rather have a low fee now, a change from $2 to $3 is more likely and that's fine for me. But from free to not free is risky for me.

I also like smaller, independent-ish ompanies that actually care about developers. That's why I use bunny.net, transistor.fm, Plausible Analytics.

  • >I don't like free offerings, because what if they decide to charge someday? What if someone decides "free is not feasible, we start charging $20 per instance now".

    You can just move to another provider at that point. At least when it comes to CDN and DNS there’s literally no vendor lock-in.

    You can grab your dns records export them to csv and import somewhere else easily and a CDN is just a file server so you can just give your files to someone else easily.

    • > At least when it comes to CDN and DNS there’s literally no vendor lock-in.

      ehhhh, really depends on which CDN features you're using, and at what volume. Using ESI? VCL? Signed URLs or auth? Any other custom functionality? Are you depending on your provider's bot management features which are "CONTACT FOR PRICE" with other providers? Does your CDN provider have a special egress deal with your cloud provider?

      It's possible to picture this being easy in the same way that being multi-cloud or multi-region is easy.

      2 replies →

  • > I don't like free offerings, because what if they decide to charge someday? What if someone decides "free is not feasible, we start charging $20 per instance now". > I'd rather have a low fee now, a change from $2 to $3 is more likely and that's fine for me. But from free to not free is risky for me.

    With free offerings, you’re always helping the supplier in some way. Then you become the product. Which makes it difficult to understand the value exchange; it’s much easier to do so when you’re just paying a fair sum of money.

  • Logically, the only thing CloudFlare would do is lower or eliminate the free usage tier. For instance, if X million operations are currently free, they make X/2 operations free. I don't think they would do that, but if they did, it couldn't possibly be existential to any viable company.

    Practically, any metered supplier can put you out of business. It usually doesn't happen because destruction is mutually assured.

    +1 for using smaller, more independent companies in any case!

    • Except for those cases where CF sales have threatened to kick businesses off the platform unless they join an five or six figure enterprise plan because they've passed some unpublished threshold.

  • Well said. I use bunny.net for many of the same reasons, and to support diversity of solutions in the internet ecosystem.

  • >What if someone decides "free is not feasible, we start charging $20 per instance now".

    This logic doesn't hold much water, however. Abrupt changes in pricing or other conditions happen with paid tiers as well

    • Yes, but combine that with a small-ish provider, this will also hurt them (e.g. see Google Maps price hike). Either way, if I use a service 20x a month and it costs $15, I can handle a hike to $20, that's fine, somewhat predictable. They also relied on those customers, they can't just get rid of all $15 customers.

      But if a free offering suddenly says "We are getting rid of free, only starting $899 a month baseline, because we noticed our free users aren't converting and we only want to support enterprise from now on". Well, then I have to move everything.

      Still a big price hike can come, but +20% monthly is easier to stomach than if I can't be sure what will happen to the free offering.

  • If the rest of the market moved to $20, why would economics of another vendor moving from $2 to $3 at the same time be plausible?

    • While this will probably happen over time, free* offerings are an anomaly you can‘t build a business on. But even 1€/months minimum is probably too low to cover costs.

I'm currently running a SaaS on Cloudflare Workers + Pages. The developer experience is genuinely good, deploying serverless functions and static sites from the same repo has been seamless.

But I hit a real issue recently: CDN edge caching served stale HTML after a deploy, and the service worker cached the bad response. Took a CDN purge from the dashboard to fix. The debugging experience when things go wrong at the edge is painful, you're always guessing which cache layer is the problem.

That being said, the free tier is hard to beat for getting started. Workers, Pages, KV, R2 — you can run a full production app at near-zero cost until you hit scale. Not sure if Bunny offers that.

  • Cloudflare's biggest benefit is the wrangler cli which when paired with claude code means that you can completely handoff setup/debugging/analysis.

    Some of you may be skeptical about this but it allows for much easier management when working on multiple SaaS/hobby projects/personal tools.

  • This is why we purge cache from CI after a deploy[0], and other places when our users publish a story, etc.

    That said, the edge-caching being how it is, it's possible to run into some race-conditions where the cache has been purged but not propagated to the edge network, and if visited too soon, the stale version might end up back into the cache.

    [0]:

      curl --fail --output "/dev/null" --silent --show-error -X POST "https://api.cloudflare.com/client/v4/zones/{our_zone_id}/purge_cache" \
        -H "Authorization: Bearer $CLOUDFLARE_CACHE_PURGE_API_TOKEN" -H "Content-Type: application/json" \
        --data '{"hosts": ["instorier.com", "www.instorier.com"]}'

  • Bunny doesn’t have a free tier, but their greatest asset is that it has prepaid billing: there’s zero risk of running up a surprise six figure bill just because of being attacked, making a mistake with a deploy, or other sudden sources of resource usage. I’d rather my site go down than to be on the hook for hundreds of thousands, which many projects have no hope of generating from sudden spikes in traffic of any source.

    There’s a cost limit to how much high availability is worth on any project but vendors like CloudFlare don’t respect that.

    • And this is why I am immediately shifting to bunny from cloudflare at this point.

      A week ago I (a hobbyist running a small side project for a dollar or two a month in normal usage, so my account is marked as "individual") got hit with a ~$17,000 bill from Google cloud because some combination of key got leaked or my homelab got compromised, and the attacker consumed tens of thousands in gemini usage in only a few hours.

      Google denied a rate adjustment, and haven't reached back out to me for a good few days now. My credit card denied the charge because it was over my credit limit by a good few thousand dollars and they suspected fraud, but now I am terrified of being taken to collections and ruining my prospects of renting an apartment due to my credit score/history being ruined, or them just taking me to court.

      I am never going to use "use now pay later" services, especially with cloud portals where it's so hard to put in a actual cap, and the cloud provider not having any sane rate limits. I am fine paying if it was negligence or a mistake on my part as a very expensive lesson in security, but 17k is brutal.

      The fact they don't have an easy way to hard cap usage (especially for an individual account) and have ineffective rate limits (how on earth is an account that pays a few dollars a month able to run up tens of thousands in just a few hours), makes me never want to use their (or any use now pay later with no easy caps or rate limits) service ever again. Or even a phone number to call.

      2 replies →

  • DB seems like the main shortcoming in the stack for them. I don't want to deal with the limitations of D1. Seems like a serverless postgres setup a la Neon/Supabase would be a slam dunk.

Cloudflare is not a CDN anymore but the workers edge platform, if you can move to bunny.net, you were not really using cloudflare. I don't understand how none of the alternatives really embrace WinterTC

If i see something horrific like:

import * as BunnySDK from "@bunny.net/edgescript-sdk" BunnySDK.net.http.serve(async (request: Request) =>

Thats a proprietary lock-in worse than what it tries to replace!

  • AFAIC, WinterTC doesn't specify how to start an HTTP server. Their minimum common API requires, among other things, that the Request and Response interfaces from the fetch specification are present. Unfortunately, it does not specify any sort of serve function.

    • Because an edge runtime should not directly start servers in the first place. You provide handlers that fulfil requests from the system. Edge runtimes that pretend to start the servers in the edge worker context are flawed and ugly from the very start. APIs like that leak implementation details and increase vendor lock-in for no added benefit.

      1 reply →

I switched a year ago and have been absolutely loving them. Not just because we can support a EU based CDN, but their Magic Containers are amazing. I can have global instantly scalable API's that cost me barely $1 a month until used.

  • Yes, Magic Containers is excellent. I don't know if it scales up to huge loads well -- that might be expensive -- but it scales down really well. For a very lightly loaded hobby project it's almost free.

    A few people here are complaining about the lack of a free tier, but Magic Containers can cover a lot of the same ground as Cloudflare's Durable Objects, which IIRC cost a minimum of $5/month.

I've been on Bunny for a while now, personally. It's pretty good, and I managed to dodge the last major Cloudflare outage which was nice.

But, a few things could be more straightforward. Cloudflare makes the whole static site and DNS zone piece feel far more seamless. With Bunny you will still need to stitch records between different parts of their dashboard.

We use them for a couple of things - very happy. I think probably the best reason (other than service robustness): support. CloudFlare is great until it's not, and you aren't paying $$$ for enterprise support. This is probably one of the most underrated reasons to switch to any lesser known (but still rock solid) infra services. UpCloud too - great support!

We at ottex.ai use bunny.net to deploy globally an openrouter like speach-to-text API (5 continents, 26 locations, idle cost 3$).

Highly recommend their Edge Containers product, super simple and has nice primitives to deploy globally for a low latency workloads.

We connect all containers to one redis pubsub server to push important events like user billing overages, top-ups etc. Super simple, very fast, one config to manage all locations.

  • Are cold starts an issue?

    • There is no cold starts at all. It’s running non-stop.

      Bunny bills per resource utilization (not provisioned) and since we run backend on Go it consumes like 0.01 CPU and 15mb RAM per idle container and costs pennies.

This has to be an ad right? Affiliate link in the blog, non sensical reasoning for switching (single point of failure to... another single point of failure) etc

  • It's not, but I can see how it came across like that. I just wrote up my experience moving over, and I thought it was nice they had an affiliate link. I've cleaned it up and called out the affiliate link. Nothing shady intended.

  • > (single point of failure to... another single point of failure)

    I feel like you missed what the author meant with that phrase. The author wasn't talking about for their website, but the internet as a whole.

    > I can’t help but feel that the idea of centralizing the internet into a single US corporation feels off.

    The point of picking Bunny.net is that it's alternative to this single entity that's got so much of the internet running through it, and is less susceptible to the BS in the US.

Unfortunately it doesn't offer free hosting for hobbyists. Even for superficial traffic you'll have pay 1 euro a month (plus VAT).

Not many DNS management providers (that I'm aware of, please correct me) support CNAME flattening. That is having your A record point to a CNAME.

Every time I purge the pull zone cache, I do it twice, cause once from my CI isn't enough. My CI does individual page cache invalidation during deployment, but there needs to be some kind of delay (with no feedback) when assets are distributed across.

  • Other commenters laughing at you for the price... It's not about the price it's about the barrier. Even if I love a service, I won't get very many people to try it if they need to enter a credit card.

    • It's also a barrier for education.

      Almost all technological choices I made as a teen were driven by "what hosting can I get for free, as my parents sure as hell won't put down their payment information for that". Back then that usually meant PHP and a max. 50MB MySQL.

      6 replies →

    • If entering a credit card is too much you probably aren't a potential customer. Part of keeping a service low cost is keeping services efficient. Having a large pool of people using it for free who will never become customers will force the cost higher for those who do pay.

      Good riddance to the "free" model. It's never actually free. You either pay with your data, or have to consume ads, or you're forcing other customers to pay for your free usage.

    • I get that credit cards are a barrier of entry but I’m more willing to give providers a break now that AI agents make it much easier to abuse free tiers. It’s also harder for smaller companies to offer free tiers. If we want a more diverse set of service providers we as customers need to be willing to accept some trade-offs.

  • > Unfortunately it doesn't offer free hosting for hobbyists. Even for superficial traffic you'll have pay 1 euro a month (plus VAT).

    ?

    So 1 euro a month is too expensive for you? Wow.

    Just pay the 1 Euro or go to GitHub where that is free but goes down almost every week.

Very small caveat: A lot of the education space bans *.b-cdn.net due to malware, proxy tools, and other shenanigans.

  • That's interesting, we moved to Cloudflare R2 for our CDN solution, and we got reports from some european government institutions that our assets weren't loading, likely for similar reasons as you mention, so we rolled back whilst looking for options.

    The solution was to move to Bunny, and that worked for everyone.

> It’s a single point of failure for the internet. Every Cloudflare outage ends up in the news.

I hear this argument all the time, but I think it's more complicated.

Firstly, if people used more diverse / smaller services the distribution of outages would change. While there will likely to be more frequent "smaller" asynchronous outages, many platforms can still break even when only one of their dependencies break. So, you might likely to face even more frequent outages, although not synchronous.

Secondly, we are not sure if these smaller services are on par with the reliability of Cloudflare and other big players.

Thirdly, not all Cloudflare infrastructure is fully centralized. There is definitely some degree of distribution and independence in/between different Cloudflare services. Some Cloudflare outages can still be non global (limited by region or customers that use certain feature set, etc).

I do have a question, is it even possible to have a CDN set up where they don't MITM and strip your TLS and re-encrypt or are we just picking which jurisdiction gets to inspect your traffic?

edit: I'm thinking of the use case where the CDN as a proxy for APIs and uncachable content as well, where it used as a reverse proxy for transit/ddos protection.

  • Probably not. That’d look a lot like a bunch of load balancers around the world hitting your own backend. There’s generally not a way to cache web data without decrypting it inside the cache.

  • I mean you can even use Cloudflare in a non-MITM manner. You lose a lot of the "value" of a CDN but they support it. Cloudflare Spectrum would be the product.

  • Why would you want a content delivery network for uncachable content? Literally the point of CDN is to cache content and deliver it.

    Granted cloudflare also does DDOS protection, and that makes sense for an API. For that you could do some DDOS protection without stripping TLS, but it can only protect against volumetric attacks like syn/ack floods and not against attacks that are establishing full TCP connections and overwhelming the app server. (rate limiting incoming connections can go a long way, but depending on details, it might still be enough to overwhelm the serving resources, your use case is up to you to understand).

    • It seems like having a feedback loop to the DDOS protector could help a lot - i.e. saying how busy you are.

      At some level, it's like they become your edge router.

This isn't an either/or, you can use features from both and you have to compare carefully. I used to do a lot of image manipulation and had pluggable implementations for imgix, cloudflare images, and bunny. Bunny is by far the cheapest and that ended up being the mature solution (plus some custom processing). But for other caching, R2, workers, etc CF is great.

I'm in the process of doing this for a Spanish client because of the La Liga situation.

Only using edge storage, DNS, and CDN so far but very happy with Bunny.

  • I had not heard of the "La Liga situation", but googled and what I learned was that La Liga is a Spanish football (soccer) team, and their players did a protest action about not wanting a match to be staged in Florida, and the team owners tried to say it was an illegal strike, but a court recently disagreed and said it was protected protest....

    I still have no idea what any of this has to do with any clients moving from Cloudflare to Bunny.net, what am I missing?

I use Bunny for serving up videos. Best service by far. Inexpensive and fast streaming.

I had to move to Bunny.net after Cloudflare disabled my homepage following a malicious report, despite me being a paying customer for several years. I also never received a response to my appeal.

I’ve now been with Bunny.net for over a year and have been very happy with the service.

  • heh one bad report gets action. years as a paying customer get you silence. ugly asymmetry.

Seemingly lacks IPv6 though? Cloudflare requires you to pay them and make an explicit effort to disable IPv6. Sad to see it not enabled by default on Bunny.

  • They do support IPv6 but not in every POP, unless something changed.

    I have IPv6-only backends and I had to select serving from the main POPs rather than the entire network (which is fine by me as they are also cheaper).

  • How did you determine that Bunny lacks IPv6?

    The CDN certainly has it: https://bunny.net/blog/ipv6-returns-to-bunnycdn/

    Depending on where I query from, OP's blog does have it as well:

        # host jola.dev
        jola.dev has address 37.19.207.38
        jola.dev has IPv6 address 2400:52e0:1a04::1310:1

    • Seems @zorked is correct about some POPs simply lacking IPv6. I simply happened to hit one of those. Quite disappointing but I guess Bunny is on the cheap side and doesn't actually own or manage their network like big CDNs do.

I’ve mainly been using cloudflare for the very excellent (and free) premium DNS offering.

Easy upload of bind test files Flattened CNAME to support naked domains Robust free role based permissions to add other ppl

Anyone have suggestions for moving a stack of domains, many being little community and hobby projects away from cloudflare for a small overall price. Agency pricing like migadu offers for email on custom domains is what I have in mind.

https://www.migadu.com/pricing/

  • I've tested just about every DNS provider I could find. Self-hosting and Bunny aside, my needs are especially well met by CloudDNS and LuaDNS.

    https://www.cloudns.net/premium/

    https://www.luadns.com/pricing.html

    I've found every other offering to be lacking. Some examples: Cloudflare is alright but has settings footguns if you're not used to Their Way of Doing It™ (e.g., before using DNSControl, I had to manually flip switches to turn off proxying every time I updated my zones). deSEC is free and okay, but sometimes quite slow to propagate and its UI+API are unwieldy. DNS Made Easy is often pushed on social media, but it's ridiculously pricey for what you get if you don't need a SLA. DNSimple seemed nice but IIRC I couldn't get a different API token per zone (?).

    I'm currently relying mainly on LuaDNS. For me, it functions as a "dumb" DNS host (i.e., not using their Lua configuration-as-code system). Their API is oddly designed, but it's been passable since a recent-ish update, which has allowed me to safely port my zone files to DNSControl.

    https://dnscontrol.org

  • I should add a friend has recommended DNsimple.com and I’ve previously found their service to be excellent.

    https://dnsimple.com/

    50 cents per domain per month 10 cents per million queries

    That’s prob cheap enough to support lots of little hobby sites and bigger traffic sites likely have some budget.

    • I used them in the past (many years ago) and was very surprised when my DNS was affected by a cloudflare outage. Turns out (back then) they relied on the cf network for DoS protection against their resolvers[1]. I was surprised to learn that and honestly thought that if I already take a dependency on cloudflare I might as well have them host my zones directly for free.

      [1] Not completely sure but I think this was the incident https://blog.dnsimple.com/2020/07/incident-dns-resolution/

      1 reply →

    • Thanks for recommending us, I (and the rest of the team) appreciate it.

    • Second DNSimple. Cheap to start and lots of nice features/support if you grow e.g. terraform provider, an acme.sh plugin, Okta support etc.

  • I make a point of using a dedicated service provider for each distinct service. YMMV but I'm happy with DNSMadeEasy (DNS), IWantMyName (registrar) and Fastmail (email).

  • Try desec.io, I use them and am very happy. Free DNSSEC, which some other DNS hosters want to charge you for (IONOS, looking at you).

Have been with them for quite some time, have some Hugo websites with them, do DNS through them, get their minimum $1 invoice each month. Love them.

I use bunny as an image serving and video streaming across multiple projects and it is excellent, never had an issue with it.

They recently upgraded the player for streaming media, we use in one instance for tutorial videos, that apparently adds some missing accessibility features. All we needed to do was adjust the embed URL structure we were using and all set.

I would probably switch off Cloudflare if I didn't also make use of their Cloudflare Tunnels service for sharing some stuff in a way that doesn't require me to punch a hole in my home network. I realize Pangolin and such also exist, but it's nice to get it for free

I tried to move my sites to Bunny Edge Scripting and found the experience mostly poor, unfortunately. A lot of failures without error logs, and purging the pull zone cache only seemed to work sometimes. A shame because I like their offering otherwise.

I reported this to HN a month ago:

https://social.mikutter.hachune.net/@mok/116208294430782702

BunnyCDN intentionally mis-writes any Mastodon request signing, as to make it incompatible with Mastodon.

And, they confirmed it's intentional.

  • Why is it intentional?

    • That was what the link indicated.

      The user sent in a help ticket, and Bunny confirmed this response rewrite was intentional and would not fix it.

      I wanted to get this out, not to conjecture as to why.

your enthusiasm for the service might be justified but having every mention of its name be a hyperlink with referral code feels offputting like i'm about to enter a multi-level marketing scheme

Well it seems like whatever's on that page is blocked by the corporate proxy malware scanner I'm currently behind.

IMHO main benefit of bunny.net is that as an Slovenian company they adhere to the GDPR, no GAG orders, and offer an Data Processing Agreement (DPA) when Personally Identifiable Information (PII) is involved.

See https://bunny.net/gdpr/. Also noticed this:

While uncommon, bunny.net also provides a way to block users from the EU from accessing your content altogether by using our traffic manager tools if you do not wish to serve users from the European Union. Which I assume can be reversed, only serving to users from the EU.

I do not understand what it is about Cloudflare. Especially for a blog post - won't pretty much anything do?

The only thing stopping everyone is the convenience. Someone already does this? Cool, here’s my credit card. For the Non-US folks, you’re just as capable. Good to see a company like Bunny realize it. It’s just a bunch of computers and some networking, what could go wrong? /s (but seriously, you can do this…)

R2 is pretty darn hard to beat. No egress, and only like $.57 per million read operations. If you're running a video streaming use case (and not using terabytes and caching or abusing your bandwidth) I found no one else compares.

Does anyone have thoughts or disagree on this in terms of pricing and cost effectiveness?

  • When you serve video from R2, you do it directly from R2 to client, not with an additional Cloudflare CDN in front, and that works fine? I have been trying to understand video and R2.

make Europe great again, and no, this is so different from any other nationalist moves :)

  • Surely by definition, being pro-EU is automatically anti-nationalism (at least for everyone inside the EU)?

    • The extremists want you to believe that, but the EU is an economic alliance, not a federal republic. Being pro-EU is usually anti-isolationist, but it isn't always anti-nationalist.

      2 replies →

  • I am pro-EU and anti-nationalist. This works because the EU is a collection of states.

    • I'm pro-EU and my country is no longer in the EU (annoyingly).

      It's not perfect but it's better than the alternatives and we really need a power bloc (even if currently only economic) that isn't the US and China.

      Alternatives to US big tech are always welcome.

Nice ad.

>One of my biggest concerns though is around how easily I could become heavily dependent on this one single company that then can decide to cut me off [...]

How does switching to Bunny make a difference?

It would be super nice to have a setup that uses multiple CDNs w/ automatic failover.

  • It would be super nice to have a setup that uses multiple CDNs w/ automatic failover.

    Doable, but that removes all the free tiers of all the CDN's. AFAIK they all require an enterprise account to keep using ones own DNS and their own GSLB DNS failover. There are probably a few exceptions and one could maybe make something of that but I don't know which ones are the exceptions.

Am I the only one who thinks their reason for why theyre leaving Cloudflare didn't sound particularly sound... This blog post reads like something a Bunny.net employee would write

We had severe issues with Bunny and recently migrated off it.

Some of our users were unable to reach our CDN altogether. They couldn't load any assets at all. Bunny's customer service was far too slow to respond and mostly gave unhelpful answers. They couldn't even identify the issue.

In less than 45 minutes, I moved our CDN entirely from Bunny to Cloudflare Workers. Now our CDN just actually works, I don't have to debug our CDN for the Bunny customer service team.

Also, this is obviously a marketing post.

  • Also had a severe issue with Bunny, serving videos. They had a cache poisoning issue where they served a few frames from pornographic videos right in the middle of our educational videos. They did not have the multi-tenancy thing fully figured out, and it became a nightmare scenario. After that, we moved to a provider that explicitly did not allow porn.

considering the bunny.net site crashes, and fails to load with timeouts, good luck with that. Unfortunately having a monopoly in a CDN is kind of a benefit.