The next step on the journey of building a home lab server is to consider hardware and storage needs. This article cannot possibly provide any one individual or family or organization with the necessary knowledge to make an optimal decision about computing hardware. Therefore, consider this article the exploration of one man’s decision-making process with project goals and limited funds in mind.
The hardware “stack”
There are simply too many options and configurations to provide a full written guide in any one place that can stand the test of time. Therefore, this article will be a straightforward listing of the hardware I am working with in this project. It is not intended to be a guide for what you *should* purchase or use in your own design.
Hardware on the Network
- Ubiquiti Dream Machine Special Edition. Runs a variety of Ubiquiti switches and access points from this single machine which can be connected to two separate WANs at once. (We will have fiber to the home soon, but I work remotely and the kids are homeschooled so having both a cable and fiber connection to provide redundanct connectivity is becoming critical to daily life.) Having Ubiquiti networking gear simplified my ability to manage multiple VLANs, mesh networking, and connectivity to IoT devices around the home. Expect to pay as much for this type of gear as for any one MacBook Pro 15″ or a high-end gaming desktop, but it is awfully nice to not have to troubleshoot WiFi problems every other month.
- HP G600 with 1.2GB of disk space. This machine is for core services primarily, such as running an LXC with PiHole as my DNS filtering mechanism. (Helps cut down on the cybersecurity attack surface of my family’s devices, and allows some amount of control over general Internet browsing by completely dropping DNS queries for domains we know we wouldn’t want our kids exposed to on the Internet.)
- Numerous laptops, gaming platforms, smartphones, and tablets connect to the primary WiFi network, with other IoT devices connecting to a separate VLAN I setup which can talk to the Internet but cannot access any of my general purpose computing machines on the main WiFi network. Again, this design limits our exposure to cybersecurity threats via poorly designed or maintained IoT devices by manufacturers of devices which primarily serve different purposes but have some sort of digital controls connecting to the Internet. For instance, my new furnace and A/C system is designed for Internet connectivity as an IoT device – you know, for saving the planet with eco-friendly stuff and such.
Hardware Design of the New Server
First, a quick way to display everything on my system directly from the command line:
[nix-shell:~]$ hwinfo --short
cpu:
AMD Ryzen 5 3600 6-Core Processor, 2200 MHz
AMD Ryzen 5 3600 6-Core Processor, 2800 MHz
AMD Ryzen 5 3600 6-Core Processor, 2800 MHz
AMD Ryzen 5 3600 6-Core Processor, 3410 MHz
AMD Ryzen 5 3600 6-Core Processor, 4203 MHz
AMD Ryzen 5 3600 6-Core Processor, 2200 MHz
AMD Ryzen 5 3600 6-Core Processor, 2200 MHz
AMD Ryzen 5 3600 6-Core Processor, 2200 MHz
AMD Ryzen 5 3600 6-Core Processor, 2200 MHz
AMD Ryzen 5 3600 6-Core Processor, 3715 MHz
AMD Ryzen 5 3600 6-Core Processor, 4200 MHz
AMD Ryzen 5 3600 6-Core Processor, 2800 MHz
keyboard:
/dev/input/event1 Logitech USB Keyboard
mouse:
/dev/input/mice Logitech USB Optical Mouse
monitor:
GTW KX2153
graphics card:
nVidia VGA compatible controller
sound:
nVidia Multimedia controller
AMD Multimedia controller
storage:
Silicon Motion Mass storage controller
AMD Mass storage controller
network:
enp34s0 Ethernet controller
network interface:
tailscale0 Network Interface
enp34s0 Ethernet network interface
lo Loopback network interface
disk:
/dev/nvme0n1 Silicon Motion Inland TN320 NVMe SSD
/dev/sdd WDC WD10EZEX-60W
/dev/sdb ST8000DM004-2U91
/dev/sdc ST8000DM004-2U91
/dev/sda WDC WD10EZEX-60W
partition:
/dev/nvme0n1p1 Partition
/dev/nvme0n1p2 Partition
/dev/sdd1 Partition
/dev/sdb1 Partition
/dev/sdc1 Partition
/dev/sda1 Partition
usb controller:
AMD USB Controller
nVidia USB Controller
AMD USB Controller
bios:
BIOS
bridge:
AMD PCI bridge
AMD Host bridge
AMD Host bridge
AMD PCI bridge
AMD PCI bridge
AMD Host bridge
AMD Host bridge
AMD Host bridge
AMD ISA bridge
AMD Host bridge
AMD Host bridge
AMD Host bridge
AMD PCI bridge
AMD Host bridge
AMD Host bridge
AMD Host bridge
AMD PCI bridge
AMD PCI bridge
AMD Host bridge
AMD PCI bridge
AMD Host bridge
AMD Host bridge
AMD Host bridge
AMD Host bridge
hub:
Linux 6.6.90 xhci-hcd xHCI Host Controller
Linux 6.6.90 xhci-hcd xHCI Host Controller
Linux 6.6.90 xhci-hcd xHCI Host Controller
Linux 6.6.90 xhci-hcd xHCI Host Controller
Linux 6.6.90 xhci-hcd xHCI Host Controller
Linux 6.6.90 xhci-hcd xHCI Host Controller
memory:
Main Memory
unknown:
FPU
DMA controller
PIC
Keyboard controller
unknown unknown
AMD Generic system peripheral
unknown unknown
AMD Encryption controller
nVidia Serial bus controller
AMD SMBus
Serial controller
/dev/input/event2 Logitech USB Keyboard
However, this doesn’t tell you much about how to look up specific information for the model of motherboard, CPU, drives, etc. You might also have some questions about the reporting of the CPU, because it says it is an “AMD Ryzen 5 3600 6-Core Processor” and yet 12 cores with their current processor speed are displayed. My particular CPU does have just 6 CPU dies on the chip, but each die is a dual-core processor, hence the 12 cores shown.
Next, you might notice that I have 5 separate disks, one NVME drive on which I have already installed NixOS, and four additional drives. To simplify things, I have listed more detailed information of my hardware.
Motherboard: MSI A520M-A PRO with dual channel DDR4 RAM slots, AMD AM4 CPU slot, 1x PCIE 4 (for GPU), 1x PCIE 3, single NVME m.4 slot, and 4 SATA drive connectors, and up to 1Gb Ethernet.
Memory: 32GB at 3600MHz
CPU: AMD Ryzen 5 3600 6-core, dual CPU (12 logical CPUs total)
GPU: ASUS Nvidia 1650 Super
NVME Drive: Kingston 256GB m.4
HDDs: 2x Western Digital 1TB, 2x Seagate IronWolf 8TB
Remember, these components are half extra leftover parts from prior machines, and some new parts meant to provide more storage and capabilities for my server. Making a decision about the hardware to use may often be based on total cost and total availability of parts; in my case, availability of parts trumped cost because I wanted to spend as little as possible in order to run a server.
I began by installing NixOS (Gnome desktop version) directly to my NVME drive. Prior experience has taught me that (1) I often make mistakes not being a full-time sysadmin, and (2) sometimes the easiest way to correct mistakes is to search the internet and apply solutions from forums and help files online. It’s a big pain to drag around a laptop to lookup information online to solve problems, so I wanted an attached display and windowed desktop environment on my server when troubleshooting needed to progress to on-server work. (rather than SSH’ing into the server from an external laptop or desktop)
In the next article I will detail how I built out the storage of my new server after installing NixOS, along with explanations behind each of my decisions.
Leave a Reply
You must be logged in to post a comment.