I Have Too Many Servers and Zero Regrets: A Tour of My Homelab

Posted at 11:47pm on a Wednesday. There is bourbon involved.


Look, I didn’t plan for it to get this out of hand. I just wanted to self-host a few things. Run my own cloud. Maybe a VPN. Normal stuff. Reasonable stuff.

I now own two Dell R730s.

Let that sink in.


The Compute Situation (It’s Fine)

So the main Proxmox cluster is a Dell R730 — which, if you’re not familiar, is a 2U rack server that sounds like a 747 preparing for takeoff and draws enough power to heat a small apartment. I have this in my house. My home. I put a GPU in it (an NVIDIA RTX A2000, very professional, very “I have made good life choices”) and then discovered that the R730’s fan controller sees any third-party PCIe card as a personal threat and responds by spinning every fan up to approximately the speed of sound.

The fix? I wrote a systemd service to yell at the fans via ipmitool every time the server boots. It works. The service runs. The fans calm down. This is normal homelab stuff and I will not be taking questions.

Two HP Minis round out the Proxmox cluster as nodes two and three. They are small. They are quiet. They are doing their best and I respect them for it.


Yes I Have a Second R730, Shut Up

The other R730 — look, they were a good deal okay — runs TrueNAS Scale. Dedicated storage box. RAIDZ2. Pool named “satchpool” because I was feeling creative that day and apparently “pool1” wasn’t going to cut it.

It currently has two IP addresses because I’m in the middle of a NIC upgrade. I’m bonding an Intel i226 with the onboard NIC in active-backup failover because I’ve decided that my NAS, specifically, should survive a network interface dying. Will I ever need this? Probably not. Did I spend an entire evening planning it? Absolutely. That’s the homelab way.


The Backup Server Is Fine (Don’t Look At The SSD)

Proxmox Backup Server lives on a Supermicro tower. It backs everything up. It is doing a great job.

The SSD it boots from is an 80GB Intel unit that came out of… somewhere. It’s old. The fragmentation was bad for a while — like, embarrassingly bad — but I cleaned it up and got it down to 34% which honestly felt like a victory. SMART says it’s healthy. I choose to believe SMART. We don’t talk about long-term replacement plans. Not tonight.


The LXC Zoo: A Brief Tour

I run a lot of containers. A lot of containers. Each one has a job. Some of them have very specific, very unhinged jobs.

The AI box has an RTX A2000 passed through via PCIe and runs Ollama. Its primary purpose — and I want to be clear that I set this up deliberately and on purpose — is to rewrite my homelab notifications in a sarcastic voice before sending them to my phone. Cold start takes up to seven minutes. Every scheduled workflow that touches it opens with a 600-second timeout and a vibe check. The model I landed on is qwen3.5 because it has better personality than the alternatives, which is a sentence I typed without irony.

The TeslaMate box tracks my Tesla, which I have named the Millennium Falcon. It has a PostgreSQL database. That database lives in an anonymous Docker volume. The notes I keep on my own infrastructure contain the phrase “NEVER run docker-compose down” in all caps with no further elaboration because none is needed. I learned this lesson the hard way in March. I recovered from backup. PBS came through. We do not speak of the before times.

The notifications box runs an SMTP relay, ntfy, and Apprise. It exists to tell me when things are broken. The irony that it could itself be a thing that breaks is not lost on me. I’ve made peace with it.

Authentik is my SSO and honestly? She’s doing the lord’s work. Proxmox VE — sorted. Proxmox Backup Server — sorted. Portainer, Paperless-ngx, Tandoor Recipes — all sorted. One login. Beautiful. I even hand-rolled a custom scope mapping to make sure usernames come through correctly everywhere, which took way longer than it should have and felt incredible when it worked.

The holdouts, though:

  • n8n wants an enterprise license for SSO. n8n can want whatever it likes.
  • Uptime Kuma’s SSO workaround disables its own auth. I looked at that and said “I would rather die.”
  • Home Assistant OIDC failed on username matching and I abandoned it like a Roomba that drove itself under the couch. It’s still under there. I’m not getting it.
  • Immich uses Google OAuth and honestly that’s fine. Some hills are not worth dying on. Immich is not that hill.

The Automation Empire, or: I Have Nine n8n Workflows and a Problem

At some point I installed n8n and things escalated.

I now have nine active workflows doing things that a normal person would either not do at all, or do with a phone alarm. But I am not a normal person, I am a homelab person, and there is a difference.

Every morning at 6:30am I get a Morning Brief — weather from Open-Meteo, events from five different Google Calendars, all of it fed through Ollama for a sarcastic rewrite, delivered as a push notification. My AI assistant hates me and I’ve trained it to express that clearly.

Every evening at 5pm, without fail, regardless of weather or circumstance or the general state of the universe, I get a Bourbon O’Clock notification that matches current conditions to a bourbon recommendation. This workflow will outlive me. I intend to put it in my will.

There’s a Tesla charge reminder that checks whether the Millennium Falcon is below 30% battery, not plugged in, and not currently being driven — and if all three are true, sends me an AI-generated roast. My car, specifically, has an AI that judges it on my behalf. This is the future.

There’s a garbage day reminder that calculates a two-week collection cycle and cross-references my work calendar to see if I’m traveling. I want you to sit with that for a second. I wrote modular arithmetic and a calendar API integration. To remember. To take out. The garbage.

And tying it all together is the Universal Sass Gateway — a single webhook endpoint that every notification in the homelab routes through. Proxmox alerts? Through the gateway. NWS weather alerts for my county, checked every fifteen minutes like a man who has opinions about barometric pressure? Through the gateway. And then there’s Home Assistant, wired up to a Tempest weather station on the property — and when that thing detects freezing temps, a heat wave, heavy rain, or high winds, it doesn’t just quietly log it like a normal sensor. It fires a notification through the Sass Gateway so Ollama can editorialize about it first. Even Home Assistant’s own update notifications get rerouted through the gateway, because apparently my smart home isn’t allowed to tell me it needs a software update without Ollama first rewriting it in the voice of someone who is extremely done with my shit.

Every single alert emerges from that gateway dripping with sarcasm and lands on my phone via ntfy with the energy of a personal assistant who is deeply tired of my infrastructure decisions.

The infrastructure required to deliver a snarky push notification about freezing rain is, by any objective measure, more sophisticated than what most small businesses run. I regret nothing.


In Closing

Is this too much? Probably. Did I have fun building it? Absolutely. Does it work? Mostly. Is the PBS root drive fine? It’s fine. Everything is fine.

If you want to follow along while I break things, fix them, and occasionally yell about PostgreSQL anonymous volumes on a Wednesday night with a glass of something from Kentucky, you’re in the right place.

Now if you’ll excuse me, Bourbon O’Clock fired twenty minutes ago and I’ve been ignoring it while I wrote this.

— Dave

P.S. — I have two R730s. The fans are fine. I said what I said.

Add a Comment

Your email address will not be published. Required fields are marked *