The Mini-Rack Saga - Part 1: The Hardware

How it began Link to heading

My love for homelabs started with two Raspberry Pis on a tiny desk in my college dorm. I was drawn to how much these small boards could do; they felt like true “mini-servers.” At first, one ran a lightweight media stack while the other helped me learn Linux commands. Today those original boards have been upgraded to Raspberry Pi 5s, and both now run Docker containers.

From there I fell into a YouTube rabbit hole of mini-rack tours and builds. Seeing how other people packed serious capability into small footprints gave me a mental blueprint: tidy cabling, smart power, and a rack that felt intentional instead of improvised.

Kubernetes videos shifted my mindset from “one box, many apps” to “a small cluster that can grow.” Hearing people explain nodes, scheduling, and failure domains made me want hardware that could scale beyond a single device.

JetKVM videos sealed the deal on remote manageability. Reliable, out-of-band access in a compact setup made the mini-rack feel more like a real lab than a hobby corner.

At that point, I wanted a mini-rack that felt both compact and capable. But before any software or automation, I needed to make the right hardware choices. In Part 1, I’ll walk through the gear I picked and why each piece earned its spot in the rack.

The Mini-Rack Link to heading

Requirements Link to heading

This mini-rack houses:

  • A Kubernetes cluster (3 Mac Minis)
  • An HDMI switch
  • JetKVM (1 per Kubernetes node)
  • A PDU
  • Raspberry Pi monitor
  • GeekPi Network Patch Panel
  • Brush Panel

Why these choices: I wanted PoE to cut down on power bricks, JetKVMs for true headless access, and a patch panel + brush panel to keep cabling tidy as the cluster grows.

Links are at the bottom of the page.

Mac Mini Link to heading

For the Kubernetes cluster, I went with three Intel Mac Minis, each with a Core i7 and 10GbE networking. One is configured with 32 GB of RAM and 1 TB of SSD storage, while the other two have 64 GB of RAM and 2 TB each.

All three run RKE2 in a three-master configuration, meaning every node participates in the etcd quorum and can act as control plane. This gives the cluster real fault tolerance — lose one node and the cluster keeps running without any manual intervention. The asymmetric specs work well here too; the two 64 GB nodes carry the heavier workloads while the 32 GB node pulls its weight in the quorum without needing to match them spec-for-spec.

The 10GbE ports keep inter-node traffic fast, which matters when etcd is replicating state across all three masters. The Mac Mini also helps keep the build clean — it has no external power brick, just a single power cable, which means one less thing to route and hide per node.

Raspberry Pi Link to heading

Both Raspberry Pis are the 16 GB variant of the Pi 5. Each is paired with the Hacker Gadget PoE+NVMe HAT, which handles both power and NVMe storage over a single ethernet cable — no extra power bricks needed.

The Pi 5’s bootloader supports booting directly from NVMe, and the OS was written to the NVMe drive using the Pi’s built-in netboot utility. Booting from NVMe rather than a microSD card makes a noticeable difference in performance, especially for the Postgres node.

Both Pis run Docker, but with different focuses: one handles general homelab containers — monitoring, dashboards, and other self-hosted services — while the other is dedicated to running a PostgreSQL container. Keeping the database on its own board isolates it from noisier workloads and makes resource management and backups simpler.

Building the Mini-Rack Link to heading

For this build, I bought the GeekPi 8U Server Cabinet, 10 inch Server Rack from Amazon. I chose it mainly for size and portability without thinking ahead about layout. In hindsight, I should have gone for their 12 inch version to give myself more breathing room. Still, the 10-inch rack got the job done, and assembly was straightforward with the provided instructions.

Mini-rack

Shelves Link to heading

Once the mini-rack was built, I needed to add the shelves. For the two Raspberry Pis, I bought a shelf from Amazon that can hold both boards. It came with an adapter board that connects to the Pi’s USB-C and Micro-HDMI ports, exposing full-size USB-C and HDMI — a nice cable management win.

For the Mac mini, I had to buy some 3D-printed shelves from Etsy. I bought three of them and they fit well into the rack. The only issue is the screws included with the GeekPi rack are too small for these shelves. I would recommend buying these screws.

I also bought the mounting plate for the JetKVM from Etsy. For this build, I went with three JetKVMs. Each JetKVM gets its own HDMI and USB connection to a Mac mini so I can get full video and keyboard/mouse control per machine. For network connectivity, I went with the GeekPi 12-port patch panel and the brush panel for cable management.

Wiring and Assembly Link to heading

With all the hardware in hand, here’s the order I followed for assembly and wiring.

  1. Top to bottom: PDU, network patch panel, JetKVM plate, then the Mac mini mounts.
  2. Each JetKVM runs an HDMI cable to its Mac mini and draws power from the Mac mini via USB-C.
  3. Each JetKVM’s ethernet runs straight into the patch panel.
  4. The Mac minis are powered via the PDU, and their ethernet cables also land on the patch panel.
  5. On the back of the rack, I added the Raspberry Pi shelf and the brush panel.
  6. The Raspberry Pis connect to the HDMI switch (mounted on top), and the Raspberry Pi monitor gets video from the switch and power from one of the Mac minis.

Next Steps Link to heading

In the next series of articles, we’ll dive deep into the software running on these devices. We’ll start with the Raspberry Pis and finish with the Mac Minis. Stay tuned!

Hardware Links Link to heading