Earlier this year, I realized I had a good opportunity to build a fairly powerful home server for a very reasonable price due to parts I had on hand and favorable market conditions for PC hardware. Having a capable homelab machine was something I had been thinking about for a while because I had seen various services and software for self-hosting them that I was interested in trying out. I might even build a service of my own that would be expensive if I were to host it in the cloud.
This would not be my first dedicated Linux box, but it would certainly be the most powerful. Right now, I have a little Raspberry Pi 3B that I use to run Homebridge, and my first home server was the PC that I got when I was in middle school. It was an eMachines Windows 7 PC with a single-core CPU. After using it as my main PC for a few years, I installed Ubuntu Server on it when I got a new PC to replace it. I forwarded ports 22, 80, and 443 on my family's router to it, used Google Domains (rest in peace) Dynamic DNS to give it a domain name that would work even if our public IP changed, and used that box to host a few simple websites that I had made early on.
The Old Parts
I've built a few PCs for myself and family members over the past few years, and it has left me with some spare parts that I could use for this home server. The first few parts are from the first PC I built myself in college: the MSI B350 Tomahawk motherboard, a 750 watt EVGA power supply, and a large Phanteks Eclipse case. These are parts that I did not carry forward when I upgraded my PC because when I did that, I also greatly downsized to a small form factor PC. These parts all worked perfectly fine, but they are very large, and I was really interested in making something powerful yet compact for my new PC.
I also had an NVMe SSD from my college laptop. I sold that laptop the week I moved out of my college apartment to a buyer who was not interested in the drive, so we agreed on a discount. I had been using the SSD in an external enclosure as a sort of big thumb drive. It will make a great boot drive for my new server.
Next, there's the Nvidia GTX 960 graphics card, the first discreet GPU I bought. It was an upgrade to my second PC, an HP prebuilt that replaced the eMachines box. I still had it around because it was not worth selling, and I actually might need it if my current PC's BIOS ever gets reset. That PC's motherboard and graphics card both support PCIe 4.0, but the riser cable connecting them only supports 3.0, and I found out when I built the PC that I cannot get to the BIOS to set the link to use PCIe 3.0 unless I connected a GPU that did not support 4.0.
Finally, I had some spare 120mm case fans. Two of them came with a 240mm AIO liquid cooler that I have in my current PC. I had to replace them with slim 15mm thick Noctua fans to make the radiator fit in my small case.
The New Parts
With all that, the only parts I still needed were a processor and some RAM. This is where the favorable market conditions come into play. That B350 motherboard I'm using supports up to AMD's Zen 2 processors. That series of processors was excellent for its time, and they are now sold second hand for good prices. So in March, I bought a Ryzen 9 3900X, which is the second highest core-count CPU in the Zen 2 line-up with 12 cores, for $190.
The other favorable market condition concerns the memory. DDR4 RAM, the type my motherboard supports, is now last-generation since the latest CPU platforms now use DDR5, but DDR4 is still being made, which puts it in a sweet spot of high supply but dropping demand. I decided to buy 32 gigabytes of 3600MT/s RAM. This is the only part I bought new, and the kit of 2 16GB sticks cost me $68.
The Repair and Assembly
When the memory arrived, I was ready to assemble the PC. I did not anticipate any problems. As far as I knew, all the parts were in good working order. However, when I attempted to install the processor in its socket, it would not drop all the way in. When I examined it closely, I found that a few of the pins near one corner of the processor's underside were just slightly bent, which was apparently just enough to keep the processor from seating properly. I decided to try bending them back.
Repairing CPU pins is a very delicate operation. The pins are tiny, fragile, and liable to just break off, which would probably render the CPU useless. But, these pins were barely bent and just needed a slight nudge in the right direction. I got out a box cutter, lined up the razor blade with the straight pins, and carefully wiggled the bent pins in the right direction. It took a couple of attempts, but eventually, I got them straight enough that the processor dropped all the way into the socket and seated properly. With that, I finished assembling the PC without further incident, tested it out, and everything worked just fine. A successful repair.
Ready for Software
With the server built, it was ready for an OS install. I'll make follow-up posts about that and the other software I'm installing on this server.
I'm glad I built this. I now have a very capable machine that I can use to experiment more with virtualization, self-hosting, and other homelab projects, while those new parts only cost me about $258. On DigitalOcean, renting a general-purpose server with 8 CPU cores, 32GB of RAM, and a 100GB SSD costs $252 per month, meaning I was able to build something with 4 more cores than that, way more storage, and probably faster CPU cores for about the cost of just a single month of cloud costs. I think that's pretty cool.