AI Portfolio Lab Tools Games Blog Feedback
All Posts

My Self-Hosted Stack Had No Ops Team. So I Wrote One.

For months my N8N was running three releases behind and I had no idea. Self-hosting means the update alerts go to nobody unless you build them yourself.

2 min read
self-hostedinfrastructureN8NEC2automation

For months I ran N8N three minor releases behind the current version. Not because updating was hard. Because I forgot there was anything to update.

That’s the failure mode self-hosting evangelists skip over. You set up the service, it works, you move on. A few weeks later it’s quietly drifting while you’re building something else. With managed software, updates are invisible. Notion ships a feature on a Tuesday and you just have it. When you run your own N8N instance on EC2, the notification goes to nobody. There’s no ops team. There’s just you, and whether you remembered to check.

I found this out when an N8N workflow started behaving oddly on something I hadn’t touched in weeks. Checked the version. Three releases behind, with two bug fixes directly relevant to what I was seeing. The problem wasn’t in my logic. The fix had already shipped. I just hadn’t installed it.

So I wrote a script.

178 lines, cron at 8:05 AM Pacific every day. It checks the installed versions of three services I run on my EC2 instance: Monica (the self-hosted CRM I use to track relationships), N8N, and Ollama. Hits the GitHub releases API for each one, compares the installed version against the latest release tag, and posts to Discord if anything’s behind.

The notification looks like this:

⚠️ Update available: n8n
  Current: 1.28.0 → Latest: 1.31.2

Nothing fancy. It doesn’t auto-update, and I don’t want it to. Auto-updates on a system I depend on daily is how you get a surprise schema change at 9 AM. The alert is for me. The decision stays with me.

Ran the first live test this week. All three services came back clean. Which felt good until I realized: before the script, I had no way to know. Clean could have been three releases behind and I’d have thought exactly the same thing.


The pitch for self-hosting is always the same: control, privacy, cost savings, no vendor lock-in. All of that is real. But it leaves out the operational overhead you’re signing up for. Managed services charge you partly because someone built a monitoring stack to keep that software current. When you opt out of managed, you take on that work. Nobody files the ticket to check N8N’s version. The alert for “Ollama is four releases behind” doesn’t fire. You want those systems, you build them.

This is true for everything I run: Monica, Ollama, Home Assistant, OpenClaw. Every service has a changelog I’m not reading, bug fixes I’m not getting, security patches sitting on a releases page somewhere.

Write the update checker before you’ve been running the service for six months. Not after you’ve spent three hours debugging a workflow and found out the fix shipped in January.