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:

  1. 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.
  2. 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?
  3. 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

#BunnyCDN #CDN #Cloudflare #micro #myAdventuresInSelfHosting #mySoCalledSudoLife

https://elenarossini.com/2025/07/testing/

Please don’t mind me, I’m just testing if I broke the ActivityPub federation of this site (or not). If you’re reading this and didn’t get my previous post from today, it’s here:

My adventures in self-hosting: day 210 (viva FOSS!)

cheers!

#ActivityPub #micro #testing

https://elenarossini.com/2025/07/my-adventures-in-self-hosting-day-203/

Hello Fedi friends!

I’m currently experimenting with the POSSE method of publishing (“Publish [on your] Own Site, Syndicate Elsewhere”) on my federated WordPress site (this one) so that I can more easily organize posts and retrieve them in the future. This is the first of such posts.

I have created a “micro” post category and edited the functions.php file of my WordPress blog to exclude such posts from the main blog.

Here is the code I’m using:

function exclude_category( $query ) {
if ( $query->is_home() && $query->is_main_query() ) {
$query->set( ‘cat’, ‘-2132’ );
}
}
add_action( ‘pre_get_posts’, ‘exclude_category’ );

Where -2132 is the number assigned to the category “micro”.

You can find the category number by hovering over it in the Categories menu.

I also plan to tweak my site’s navigation menu to make “micro” appear under the blog category.

At some point in the future that will replace the “blog”… otherwise it’s too confusing to follow how many blogs I actually have.

I am also debating whether to migrate my GoToSocial account to WordPress using the MOVE function. What’s holding me back for now? I will need to be able to implement Serdy’s blocklists here before I do that. I experienced some terrible trolling and abusive messages when I didn’t have blocklists in place on my GoToSocial account last month, so I learned my lesson.

And I’d like to see how “social” the Friends for WordPress plugin by Alex Kirk is, before I consolidate my two accounts.

Anyway, this is all really exciting, made possible by the magic of #ActivityPub and the ActivityPub for WordPress plugin by @pfefferle. Thank you Matthias!

Onwards and upwards!

#MySoCalledSudoLife

#ActivityPub #micro #MySoCalledSudoLife #selfhosting