Homelab: Learning the hard way
Spending the weekend with family, I took the chance to check whether I could still access my various sites and services from outside. Feeling pretty good after that success, I thought—why not set up rtorrent through ProtonVPN on the server?
The Beginning of the Screw-ups
Naturally, it wasn’t going to be straightforward. Natively, it’s already messy, but with NixOS? Utter chaos. So I turned to an AI, hoping for some explanations, and started blindly pasting random commands it spit out whenever an error showed up. Of course, nothing ever worked, and even worse, I had no clue what I was actually doing. In situations like that, you can smell disaster coming a mile away.
And sure enough—that’s exactly what happened! Boom, the whole network broke. No more outside access, sites and services down, just the big blank page of doom.
No problem, I thought—let’s just ssh in and fix the mess… except, nope, I had closed my session, and ssh was now dead too. And that was it. Game over for the weekend, I’d have to wait until I got back home.
NixOS to the Rescue
End of the weekend, I get back home, plug a screen into the server, and hook up a USB keyboard. And here’s where NixOS really shows its magic.
- I reboot into an earlier generation with no issues.
- I remove rtorrent.nix and another imported file.
- I rebuild and reboot.
- Once it comes back up, services are running again. All that’s left is a bit of cleanup in the Git repo.
Lessons Learned
This whole thing could be a chapter of “self-hosting the hard way.” You always learn best the hard way, don’t you? So, to sum up:
- Don’t mess with configs on weekends—and absolutely not the networking part.
- Keep Git up to date so you can roll back easily; it makes git reset a lot simpler.
- NixOS is insanely useful when it comes to fixing your screw-ups in no time flat.
Resolutions
Beyond the obvious—stop making critical changes when I don’t have physical access to the machine—I think I’ll set up a method to build NixOS VMs directly from my flake directories, just to test out some configurations. At the very least, I’ll create separate branches for experiments, so I can always rebuild from master if needed. Way simpler in the long run.
In short, NixOS gives you huge flexibility. Might as well take full advantage of it, right?