From BIOS Bricks to Blog Comments: A Homelab Troubleshooting Marathon

Given that I can seemingly never just leave well enough alone, I recently decided to pick up a used 8-core/16-thread Intel Core i9-9900K CPU off eBay to “upgrade” my NAS (which was running a humble 6-core i5-9500T). The idea was simple: 16 threads would let me dedicate 8 to Unraid and 8 to a Windows VM, finally making Parsec game streaming on my MacBook Air viable.

Rather than diving right in and swapping CPUs, I asked my trusty friend ChatGPT if there was anything I should do first. The advice? Update the BIOS. “It’s a simple task,” it said. Spoiler: it was not simple.

The flash itself went smoothly, but after reboot—nothing. No splash screen, no error messages, just a blank display. Cue panic. I spent hours troubleshooting: trying to connect to the BMC/IPMI, guessing at the right IP, even making new USB drives in case I could reset the BIOS. Supermicro support confirmed the reset procedure, but nothing worked.

I went to bed Thursday night convinced I’d bricked the board. Friday after work I decided to poke at it again. Still nothing. The NAS was hooked up to my monitor via DVI, and because there was no signal, the monitor kept switching inputs to my Dell server on VGA. Annoyed, I plugged the VGA cable into the NAS just to stop the switching—and the Supermicro splash screen appeared instantly. Turns out the BIOS update had reset the primary video output back to VGA. All that stress… for nothing.

Relieved, I moved on to the CPU swap. Easy enough, right? Wrong again. The machine threw cryptic memory errors with the i9. I tried every trick—BIOS tweaks, booting with a single DIMM, testing each stick. Each module worked fine individually, but the B2 slot refused to cooperate with the i9 (though it had been fine with the i5). While swapping CPUs back and forth, I noticed some slightly bent pins in the socket. Maybe they’d always been that way, maybe I bent them during all this fiddling. A trip to Hobby Lobby for a magnifier and tweezers let me nudge them back into place, but the i9 still wouldn’t POST.

Eventually, I conceded the CPU was likely bad. The eBay seller refunded me and told me to keep it. So now I have a possibly-defective i9 sitting in a drawer, and my NAS is happily back on the i5. For my light Windows gaming use case, I decided to grab a cheap mini-PC from Amazon that runs Windows 11 Pro. It was barely more expensive than the used i9, and it Just Works™.

With hardware experiments on pause, I turned to software. Next on the list was Pterodactyl, the popular game server panel. I used Proxmox helper scripts to deploy Debian LXCs, then fought through Traefik + Cloudflare reverse proxy configs and SMTP integration (for invites and password resets). With ChatGPT’s help, I got it all running. The panel looks great, spinning up Minecraft servers is painless, and I even dropped in a 70-mod pack world for my nephew. Performance is surprisingly playable after allocating more CPU/RAM.

At that point, I should have taken a break. But since I’m a glutton for punishment, I decided to tackle something else that had been bugging me: the comment system on my blog. I’d been running Remark42, but wasn’t thrilled with it. Commento++ looked appealing—minimalist, lightweight, privacy-friendly. How hard could it be? (Famous last words.)

What I thought would be a quick swap turned into another multi-hour adventure. Here’s the highlight reel:

  • Traefik & DNS → Verified that my Cloudflare DNS was correct, that Traefik was routing traffic to the right backend, and that Let’s Encrypt was happy with the challenge.
  • Container startup failures → Commento++ wasn’t listening on port 18080 because the Postgres connection string in my config was truncated (?sslmode instead of ?sslmode=disable).
  • Password encoding → My Postgres password had a special character (^), which broke the URI. The fix was to URL-encode it.
  • /admin vs /login confusion → I initially thought the admin panel was broken—it’s actually just /login. The first user you create there becomes the owner.
  • SMTP pain with Zoho Mail → By far the longest rabbit hole.
    • Needed a Zoho App Password (normal account passwords don’t work with SMTP + 2FA).
    • Commento++ struggled with STARTTLS on 587 and timed out on 465.
    • The fix was adding a lightweight SMTP relay (crazymax/msmtpd) that handles TLS/auth to Zoho while Commento++ speaks plain SMTP internally.
  • Relay quirks → The relay defaults to listening on port 2500, not 25. Once I pointed Commento++ to msmtp:2500, everything clicked.
  • Verification → Confirmed the relay port was open with nc, checked environment variables with docker inspect, and finally saw success messages in the logs when sending a password reset.

After all that, the new comment system is live! 🎉

If you’ve made it this far, I’d love for you to try leaving a comment. I was under the impression anonymous comments were allowed, but testing shows it currently requires registration. (Sigh—another project for another day.) The styling also defaults to bright white, which clashes with my dark theme, but ChatGPT swears that’s just a CSS override away. We’ll see.

For now, I’m calling this weekend project a success. Between the almost-dead motherboard, the bad CPU, the Pterodactyl setup, and now Commento++, it’s been a ride. Homelab tinkering might be chaotic, but it’s also endlessly rewarding. And hey, now I have a good story—and a drawer full of spare parts—to show for it.

💬 Join the Discussion