I’ve been running a home server in some form or another since I was about 14, initially just to teach myself about system administration but more recently for more utilitarian reasons. At this point a majority of my home network and all my devices are dependent on services I run myself, and I’ve had essentially zero downtime in the past 2 years. Despite what you might think, though, I’m not using any expensive hardware. I’m mostly working with an older system that’s been put together piecemeal, including parts scavenged from my old desktop, a few low-end enterprise drives, and a case from a disused Dell prebuilt. This was done, at least at the time, purely to save money- if I had unlimited income I’d obviously have bought nicer components. I’m glad I didn’t though, because working with slightly subpar hardware has taught me to be far more resourceful and crafty with how I run my systems, and overall it’s gotten me a lot more enjoyment out of my projects.
You learn the most on projects with tight constraints. I talked about this a few weeks ago with my blog on embedded systems, but it holds equally true for networking and servers. Being forced into a tighter box encourages you to learn more about the inner workings of your system to get more performance out of it. In my current setup, I’m running a Plex server with hardware transcoding, a DNS firewall client, a Home Assistant server, and a NAS, all on an FX 8350 and 32GB of DDR3 (yes, 3) that was originally bought over 12 years ago. In the past I’ve run entire stacks on just a Raspberry Pi 4, or a VM on my main desktop when the current server was still in that role. Getting all of that to run on what is, frankly, kind of a shitbox forced me to scrape away at every bit of inefficiency in my setup, and it’s made me a much better sysadmin.
Beyond the skills you gain, though, the more obvious benefit is cost savings. Sure, you could go out and spend thousands of dollars on Ubiquiti networking hardware and buy a 4U compute & storage solution with the latest processors and EMMC memory and all the other fancy features you’d want. Problem is, it’ll take you much much longer to save up for it and actually get up and running (unless you’re just indpendently wealthy), and once you’ve bought all of that you’ll likely have no budget left to do any other cool projects that integrate with it. A home assistant server is no good without smarthome devices to control, an ollama stack is pointless unless you have a project that uses it, etc. Saving money on what is, in the end, just support infrastructure for your main projects will let you spend the majority of your time and resources on something that utilizes that amazing network you just built.
Generally speaking, I think you should save as much as possible on your home networking and server setup. More specifically though, any extra expenditure you’re making on the system should have a specific reason behind it. Some projects actually need a higher-end system to work, but you should always have a need that’s filled by the spend. If you’re training ML models, yeah you should probably buy that 4090, provided you have the budget. Your NAS probably doesn’t need that though.
A big part of this ideology is upgradeability, too. You should design your system so that as much as possible, it can be repurposed, rebuilt, and upgraded to fill any purpose you find for it. Prebuilt boxes are typically really bad at this, so I stay away from them as much as possible. You’re not a company, you don’t have the same resources or needs as an enterprise deployment might. You don’t need a floor-to-ceiling rack filled with purpose-built boxes for each little task, that’s what we invented virtualization for in the first place. To that end, make your server versatile and modifiable, so you can build an affordable base and upgrade it (again, only as needed!) as you go along.
By combining these two tenets- save where you can, and leave room to modify- you’ll wind up with a system that absolutely rips in the applications you need it for, but doesn’t cost you very much at all. You’ll have all the performance you need for the projects you have, with none of the cost of a top spec system you might buy if you were trying to “futureproof.” This leaves more room for you to spend big on your other projects, and also to upgrade the network stack as needed to support them.
Rather than spending $4000 on a prefab rackmount unit, spend $500 and carve up some old systems for parts. Turn the shitbox into a Ferrari and save your budget to buy gas and new tires. Personally, I spent about $200 all-in on converting my old desktop into a total workhorse, and with the money I’ve saved I was able to smart-ify my lighting, build macropads for my computer to make CAD faster, convert my old Prusa to run Klipper and control it remotely with Tailscale, and too much else to list. I’ve gotten much more enjoyment and learning out of being scrappy with my project budget, and I think you will too.