Happy HomeLab/HomeProd Guide

This is a combination of several Reddit posts that I think are helpful enough to keep, but which I wanted to delete anyway. Rather than repeat myself often, I’ll just keep them summarized here and link to it.

So You’ve Decided You Want a Home Server

So you’ve seen photos of folks with a rack in their home office and decided “that’s what I want”. Good for you! But slow down there, there’s some things we should talk about first. No seriously, don’t place that order for the $100 PowerEdge on eBay, we can probably save you from making a very expensive mistake.

Decide Goals

The first step is to decide what you actually want out of it. If you just want to spend a shitload of money on a pretty rack, that costs an arm and a leg to run, heats up whatever room it’s in even in the dead of winter, and makes normal folks go “… why?” then you can stop reading here… go nuts, have fun.

What are you actually trying to do? Familiarize yourself with enterprise hardware for a job in a datacenter? Run a home cluster of some sort for devops purposes? Are you trying to learn networking with actual switches/routers? A farm of vulnerable machines you can shoot packets at for infosec practice? Or are you just wanting to self-host a bunch of useful services to avoid relying on companies?

Decide what you want to do, and use that to inform the decision of what you need. Even down to things like ECC RAM, IDRAC, and other enterprise gear… absent a specific reason to need it, decide if it’s worth the premium (if the premium is negative, have at it).

Consider Virtualization

If you’re not looking to get aquainted with enterprise hardware (ie for my job, everything I do is in the cloud, I don’t really need familiarity with rackmount gear at all, so it’s purely academic for me), consider virtual machines instead. You can do a lot, without breaking production, using the virtual networking of VirtualBox or Hyper-V, and if you want to learn networking it’s pretty difficult to make the case for actual routers and switches instead of something like Packet Tracer.

Here’s something that might surprise you - at the time of writing (2023) I have two racks, and all of my homelab is virtualized. I have spare hardware that I could spin up, but it’s much too expensive to leave running, so virtualizing it is far more convenient.

Should you Enterprise?

Rack-mount machines are cool. But they’re not particularly “cool” in the thermal sense. So generally speaking, they’re louder, hotter, and less kind to the folks around them than an equally specced machine in a desktop case. I absolutely loathe the cringe term “wife-approval factor”, but there is something to be said for caring for the welfare of people around you, including yourself.

I’m lucky enough to have a home office (due to work-from-home for some years now), and I found a PowerEdge R510 for cheap, and it holds 14 disks, so I bought it. I knew something was up when it blew the box it came in off the table upon first power up, but I figured I could live with this. I spent a while trying to tame it, but eventually I realized when I turned it off that the relief I felt was huge. So when we bought a house with an attached garage, the server rack was going the fuck away from me.

If you do not have somewhere away from animals with ears to put it, think twice about it. They’re cheap for a reason, and in some cases they’re not cheap enough.

Delineate Production

It’s important, vitally important, that you configure your homelab (a playground, essentially) so that it is minimally intrusive into the production home network. If it’s not, you don’t have a homelab… it really is that simple. A lot of folks new to “homelab” seem to think that strapping a $300 rackmount router into a 24U rack with a handful of servers, throwing up PiHole on there, that means they’ve got a lab right? Wrong. You have a shiny home network, but there’s no lab in that description.

My recommendation is that the lab should have at the very least a different subnet, and require minimal changes to the production router to get established. But again, this goes back to the goals you have in mind - if you aren’t trying to do something with the potential to impact your homeprod, who cares?

If you can’t break it for the weekend without someone getting upset, you do not have a homelab, it’s homeprod. You should not experiment in prod.

Set and Keep Expectations

This leads nicely into the next discussion: set expectations, and work to keep them. Our router is very fancy, we don’t use the consumer crap the ISP would send out if I left them. But that router is also part of the production home network, so I do not experiment on it outside of agreed-upon circumstances so I don’t interrupt the things other people in my house might want to do that depend upon it.

Likewise, we run services at home like Plex, Home Assistant, etc. These are all production services, because if you want people to use them that’s basically how it’s gotta be… you can convince people that these are not production, and that’s fine… but if you get people to cancel Netflix and just watch your ripped DVDs on Plex, they’re perfectly reasonable to be upset if it’s Friday night and they can’t watch something because you’re busy dicking around doing a distupgrade or something.

That’s not to say that I am advocating staying up until 3am to do maintenance on your home network - fuck that. I normally do any breaking maintenance on Sunday morning, because my wife normally goes out for a run and my kid usually sleeps in, and this gives me plenty of time if something goes pear-shaped. You can probably work out something that minimally inconveniences everyone.

Something that’s overlooked often in home networking discussions is the issue of consent. I’ve been guilty of this in the past for sure, I’ve just gone ahead and “fixed” issues without talking it over with folks in my household. Like putting Netflix behind a Squid proxy to smooth out the bursts on our pitiful ADSL back in the early 2010s. Sure, it’s good for everyone, but you should at least ask if they have an opinion before you do anything.

A really good example of this is something like ad blocking on your entire network with pihole. Is everyone on the same page with that? If someone tries to access something and they’re suddenly met with a “turn off your ad block” and they didn’t know they had an ad block and have no idea how to resolve it, that’s not very nice is it? And don’t even get me started on using spyware to keep track of your kids.

Consent is important. You might be in charge of your home network, but the Bastard Operator from Hell is not an aspirational story.

It’s okay to Do It Wrong. Good, even.

Now that you have hopefully done the above and got an actual lab set up, where you can play with things to your heart’s content without upsetting everyone, there will be no shortage of folks telling you the right way to do something.

Feel free to ignore that, if you think you know better. What do those nerds know?

Why? Because it’s a lab, you can try shit, break shit, and fuck shit up, and none of it matters. Absolute worst-case scenario is you end up with first-hand knowledge of why the conventional wisdom says to do something a particular way after wasting a few hours.

Best case, you can, if you’re lucky like me, end up with weirdo edge-case knowledge that no sensible engineer is privy to, and when a discussion comes up where it’s relevant, oh boy do you look like an absolute savant.

So do it wrong, it’ll be okay!