Every year around this time I do the same boring ritual: I go through every server, every domain, every dusty cron job I forgot I set up, and I make sure none of it is quietly rotting. I used to do this in late December, right before the holidays, but I got burned once too many times finding out a cert expired on December 27th while I was at my parents' house with a laptop that hadn't been charged in three days. So now I start the first week of December instead, usually a Saturday morning with coffee, and I just work down a list.
This year's list took about two and a half hours, which is actually down from four last year, mostly because I finally stopped self-hosting my own mail server. That thing was a part-time job. I ran Postfix and Dovecot on a little VPS for close to six years because I was stubborn about it, and I will admit the day I switched to a proper transactional email API for the blog's contact form and notification emails, my stress level dropped noticeably. I ended up using Tricknowtech for that piece since I was already parking a couple of domains there anyway, and honestly not having to think about SPF and DKIM records at 11pm on a Tuesday is worth whatever small amount I'm paying.
Anyway, here's roughly what the December pass looks like if you want to steal it.
Domains first. I keep a spreadsheet (yes, an actual spreadsheet, not a fancy tool) with every domain I own, its expiry date, and which registrar it's on. I've let two domains lapse by accident over the years. One was a joke project from 2016 that got squatted within a week of expiring, which still annoys me more than it should given I hadn't touched the site in five years. Now I just check: is auto-renew on, is the card on file current, does the expiry give me at least 60 days of runway. Takes ten minutes if nothing's wrong.
Backups second, and actually test them. This is the step everyone skips and it's the one that matters most. I don't just check that a backup job ran, I actually download the latest database dump and restore it into a throwaway container on my laptop. Last year I discovered a backup that had been silently writing zero-byte files for four months because a disk filled up on the VPS and nobody, including me, noticed. Four months. If I'd needed it during that window I would've had nothing. That single discovery is basically why this whole ritual exists now.
Then the small VPS instances nobody remembers exist. I run a couple of tiny side projects on cheap droplets, and every year I find at least one that's still running, still costing me $6 a month, doing absolutely nothing useful. This year it was a Mastodon relay bot I set up in early 2023 and forgot about entirely. Killed it. Saved myself $72 a year for something that had zero active users.
SSL and DNS. Most things auto-renew through Let's Encrypt now, thank god, but I still spot-check a few older configs that predate me switching everything to Caddy, because Caddy just handles certs and I stopped thinking about them, which is exactly the kind of "stopped thinking about it" that bites you eventually.
One thing I'd add if you're doing this for the first time: write down what you did and when. I keep a plain text file, dated, one line per fix — "Dec 6 2025: killed unused mastodon relay, rotated the API key on the weather widget, confirmed backup restore works." Nothing fancy. But six years of these files means when something breaks I can grep back and often find I've hit the exact same issue before and already know the fix.
None of this is exciting work. It's not the kind of thing that makes for a fun changelog entry. But the whole reason this blog has kept running since November 2011 without some catastrophic data loss post is almost entirely because of afternoons like this one, not because I write particularly resilient code. Software rots quietly. The fix is just showing up once a year and looking at it directly, even when you'd rather be doing literally anything else on a Saturday morning.
If you've got a similar list you run through, I'd be curious what's on it — I'm always finding new categories of thing I forgot I was responsible for.