Ok so it's been ten days since the big AWS us-east-1 mess on October 20th, the one where a DNS resolution problem in DynamoDB took down something like half the internet for a few hours. Snapchat, Fortnite, Alexa, Ring, Coinbase, Venmo, Duolingo, Canva, even parts of Amazon's own retail site. My wife's alarm clock is an Echo Dot and it just sat there blinking at her that morning like it had never heard of time before. Genuinely funny in hindsight, less funny at 6:40am.
I'm not going to do the whole "here's what happened and why" post because every tech outlet on earth already did that one, some of them three separate times with three separate headlines. What I want to write about instead is the dumb little thing that actually annoyed me personally: my own uptime monitor went down too.
I run a handful of side projects off a $6/month VPS, nothing fancy, and I'd been using a hosted status-page service (free tier, the kind that pings your endpoints every five minutes) to email me if anything died. Turns out that service was, you guessed it, sitting on us-east-1. So for about four hours on the 20th I had zero idea whether my stuff was up or down, because the thing telling me was itself down. That's such a specific flavor of stupid that I couldn't just let it go.
So here's what I actually did, in case anyone else wants the same fix. This isn't some elaborate multi-region architecture thing, I'm not trying to build Netflix's resilience engineering team in my spare bedroom. I just wanted a monitor that doesn't live in the same building as the things it watches, metaphorically speaking.
Step one: I pulled an old Raspberry Pi 4 out of a drawer (I think I bought it in 2021 for some home automation project I never finished, classic) and put Raspberry Pi OS Lite on it, no desktop environment, just the basics.
Step two: Installed Uptime Kuma via Docker. If you haven't used it, it's a self-hosted, open source status page and monitor tool, and the setup is honestly about as close to copy-paste as sysadmin work gets:
docker run -d --restart=always -p 3001:3001 \
-v uptime-kuma:/app/data \
--name uptime-kuma \
louislam/uptime-kuma:1
That's it. Point a browser at the Pi's local IP on port 3001, set an admin password, and you're in.
Step three, the part that actually matters: I added monitors for my sites, but I also set up a Telegram bot for notifications instead of email, because if my home internet or power goes out the Pi obviously can't send anything either way, but at least Telegram doesn't depend on any single cloud region the way some email relays do. Not a perfect solution. Nothing here is a perfect solution. If my house loses power the whole thing is useless, and I know that. But it's no longer coupled to the exact same failure domain as the outage that started this whole exercise, and that was the actual goal.
I also went back and looked at which of my own domains route through Route 53 versus other DNS providers, and moved the two that matter most (the ones that actually make me a little bit of ad money) over to a different registrar's DNS. Ten minutes of work, mostly waiting on propagation.
None of this is groundbreaking. I know plenty of people reading this already run their own Uptime Kuma instance and are wondering what took me so long. Fair. I'd been meaning to do it for over a year and just never had a reason that felt urgent enough. Turns out the reason was "get personally annoyed at 6am because Alexa won't turn on the coffee maker."
The bigger AWS story is really about how much of the internet quietly depends on one region of one company, and that's worth thinking about if you run anything people actually rely on. But for a hobbyist with a couple of side projects and a Raspberry Pi collecting dust, the lesson was smaller and pettier than that. Just don't let your smoke detector be plugged into the same outlet as the fire.