Animals Notes on anime, games & creatures

The arvo my rabbit nearly crashed my blog

For the better part of two years, I've been running a personal blog out of a home office in Brisbane that doubles as a very unofficial rabbit sanctuary. Between drafting posts about anime dogs chasing foxes and wrestling with database errors at 2am, my life generally has enough chaos to keep me entertained. Then I adopted Mochi, a dwarf lop with a soft round face and a powerful curiosity about computer keyboards.

The blog itself runs on a fairly modest setup, the kind of thing a typical Aussie hobbyist developer would assemble over a long weekend fuelled by too many flat whites from the local cafe. There's a quiet little server humming away in a hallway cupboard, a backup drive synced to a cloud account registered through Aussie Broadband, and a CMS that talks to MySQL the way most CMSes do — badly, sometimes, when the conditions aren't quite right.

I didn't really imagine a rabbit would end up being the thing stress-testing that little stack of mine. I was very, very wrong about that.

A bunny with energy to spare

Mochi arrived at our place during a wet Queensland summer, the kind where the air feels like a warm towel you can't quite peel off. He came from a foster organisation down in Logan, and within about an hour of getting home he'd staked his claim on the spare bedroom. There were chew marks on the door frame by morning, which I reckon is his way of saying fair suck of the sauce bottle, this is mine now.

He's the sort of rabbit who watches you type. He sits beside the monitor, nose twitching, staring at the cursor as it drifts across a draft. I liked to imagine he was quietly critiquing my prose. The reality, as I would find out a few weeks later, was considerably more troubling than that.

The afternoon the site started wobbling

The first sign anything was off came on a Tuesday arvo. I was midway through editing a post about whether a fox could really carry a shonen protagonist arc when the blog started throwing 503 errors. Not just a handful — basically every page, all at once. I refreshed a few times, swapped browsers, did the usual muttering at the screen that any Australian developer would.

Eventually I poked the database directly. The connection pool was exhausted, threads stacking up the back end. Something had been hammering the server in bursts in a way that no ordinary reader could possibly account for.

Why I nearly blamed my hosting

Before I started digging into logs, I assumed it was the usual suspects: my hosting provider, an SSL cert that had quietly expired, or maybe a dodgy plugin update. I logged a ticket with my provider, and within about ten minutes an actual human responded from the other end. That is, frankly, reason enough to stay with a Straya-based host when you can.

Their first suggestion was to check the database directly, which I'd already been doing in my pyjamas. Their second suggestion was the same as mine: rule out bot traffic first. So I closed the laptop, made a coffee, and went in for a proper look.

What the server logs showed

Digging into the access logs felt a lot like doing quiet forensics on a Sunday morning. The request pattern was strange. Dozens of POST hits against the admin endpoint, all from my own home IP address, spaced out at irregular intervals across the whole afternoon.

There was no bot signature and no exotic user agent string. The header said something close to Mozilla/5.0 (compatible; HouseRabbit/1.0), which I am absolutely certain is not a real browser anywhere on earth. That is the user agent string a rabbit would invent if a rabbit had feelings about web crawling.

Mochi, the unwilling admin

In hindsight, it was blindingly obvious. Mochi has a habit of trotting across the desk while I'm out, stepping on whatever happens to be open, then wandering off in search of brekkie pellets. Usually that just produces a long string of gibberish characters wherever the cursor was sitting.

On that particular afternoon, though, the tab that was active when I left the room was the admin login page. Mochi had apparently, slowly and patiently over a couple of hours, been stepping on keys while wandering across the board. The repeated keystrokes fired off failed-login attempts, which set off rate-limiting alerts, which kicked the database into a tailspin. The little server just kept waking up and going back to sleep.

He had, in a sense, been editing the blog for an afternoon without producing a single published post.

The cleanup

Once I shifted Mochi off his keyboard throne and put him back in his enclosure with a generous handful of parsley, the technical fix was fairly ordinary. I restarted the database service, cleared the stuck connections, moved the admin URL away from the default path, and set up a proper rate limit on the login endpoint.

The longer fix was environmental. I moved the mechanical keyboard off the desk and into a drawer when I'm not using it. I scored a small numpad that lives in a cupboard by the door. I trained Mochi, through bribery with dried banana chips, to stay off the bench when I step out. It mostly works, except for about 10pm when he gets cheeky and wants one more round.

Living with an honorary IT consultant

Mochi is fine, in case anyone is wondering. He remains the unofficial mascot of the blog, a personal site about animals, anime, games, and the occasional small furry disaster. He sat beside the monitor while I wrote this very post, with the smug little energy of a bunny who knows exactly what he did.

If you're running a self-hosted blog anywhere in Straya and you've got a pet that shares your workspace, take it from someone who learned the hard way: turn on two-factor auth, hide your admin URL, and keep a recent backup of everything just in case. The local Bunnings has cheap cameras if you want to see what's happening at the desk while you're at the servo filling the ute. And if you've ever wondered how to save animals and turn them into anime boys, the answer is yes — but only after you've made sure none of your creatures can reach the keyboard.