https://elenarossini.com/2025/07/my-adventures-in-self-hosting-day-211-cdn-edition/
My dear federated WordPress blog,
Sorry for all the tests I put you through in the last 48 hours.
First, I changed your Webfinger setup, which broke federation. Then I reverted back those changes… I posted a test message that immediately federated (yay) but when I replied to it from my Mastodon account, I set off the infamous Mastodon stampede: 5000+ requests in the span of seconds, which took you offline (ouch). I had to delete my reply on Mastodon, flush your cache, and you were back online (yay).
Ever since, I have been on a mission to safeguard you against the Mastodon Hug of Death – a very familiar phenomenon that I experienced with my self-hosted Ghost blog.
The solution I found for it (on Ghost) was installing Varnish Cache. And my oh my has it been effective! A real champion, even at times when my blog posts trended all day on Mastodon (like the one announcing the release of my Fediverse promo video).
But I’m digressing.
My dear WordPress blog, you need protection against sudden surges of traffic brought on by the Fediverse.
This morning, I tried it all:
- My plan A was setting up Cloudflare for you. I am SO GLAD that didn’t work out, though, because in the past year I have developed a real distaste for all things Big Tech and I couldn’t really reconcile using Cloudflare as your Content Delivery Network. Why this didn’t work out? It’s a very convoluted explanation… it had to do with DNS records and the way it’s set up. Basically if I manually connected Cloudflare to some DNS records for elenarossini.com, this association would take over ALL DNS records from the POV of my hosting provider, including subdomains… even if I didn’t add them. And I have LOTS of subdomains linked to self-hosted instances for Fediverse software and did not want to do that. I’m probably explaining things badly, but suffice it to say, it wasn’t ideal to tinker with DNS for a variety of reasons. Moving on.
- My plan B was exploring how to set up Varnish cache for this website by using shell access. That, unfortunately, is impossible: Varnish needs Nginx or Apache and on a shared hosting plan you simply cannot tinker with that stuff. What to do?
- My plan C was setting up BunnyCDN for this site. I first heard about it via the superb website European Alternatives (basically, a database of alternatives to Big Tech platforms and services from the US). Bunny is based in Slovenia and I heard praises of it. Now, I had tried to use it for Ghost earlier this spring, but never managed to complete its setup, and opted for Varnish instead. I decided to give it another go. Guess what? Bunny didn’t ask me for DNS records – its setup was easy and instantaneous, with its native WordPress plugin. I connected it to my Bunny account and was good to go – no tinkering with DNS.
I have double-checked in Developer mode that this site’s images are already going through Bunny. All good!
Disclaimer: unlike Cloudflare, Bunny doesn’t offer a free plan, so I will need to monitor costs. But I’m curious to see how it will do and how much it will cost on a monthly basis. Of course, I will report back about this (at the moment I have $50 in free credits).
Now the real test will be hitting “publish” on this blog post… and replying to the federated post with my Mastodon account. This simple action took my site offline yesterday.
If the site doesn’t go offline, I would up the ante and actually share the link to this blog post from my Mastodon account (to an audience of 8000+ people on hundreds of different servers).
Wish me luck!!!
Elena
Update: how did the test go? Well, the post federated and appeared immediately on my Mastodon feed. I replied to it and within seconds the site went offline, showing an “error establishing a database connection.” I refreshed the page and saw the homepage – fully functional, but extremely slow. If I tried to click on any items in the navigation menu, nothing happened. I deleted the Mastodon reply, flushed the cache… and the site remained largely unresponsive. Needless to say, I need to conduct more tests with Bunny. I am not giving up quite yet…