Gallery: building my own home server

Gallery: building my own home server
Photo by Harrison Broadbent / Unsplash

Let’s pretend I didn’t forget to write anything for the past two years, nor finish my article on shell setup, and let me show you my latest addition to my home IT collection instead.

I have published some articles about how this website, as well as my personal cloud file, media and mail servers, are run on a dedicated root server rented from Hetzner and managed entirely via Dokku, but if everything goes according to plan (as it always does, of course), all of that may change very soon as most (or all?) of my self-hosted services will migrate from Germany to my own home office. How?

Turing Pi 2 🥧

Nearly a year ago, I backed a Turing Pi 2 project on Kickstarter – the first time I ever bought anything from that site, as Kickstarter’s model of operation doesn’t really play well with my never-ending trust issues 🤭

Turing Pi is a Mini-ITX board capable of hosting up to four Raspberry Pi Compute Module 4 – Compute Module 4 is the same heart and brain beating in the regular Raspberry Pi 4 Model B, but missing all the I/O capabilities, instead expecting to be plugged into another board that would expose all the necessary inputs and outputs.

And expose it does! All CM4s running in Turing Pi get their power and network connections (of course), as well as nodes 1 & 2 gaining access to a Mini-PCIe slot, node 3 getting access to two SATA ports and finally node 4 getting access to USB ports. There are more connections and ports exposed but these are the primary ones that are interesting to me.

Building time 🛠️

Through various delays caused by components shortage and RTC battery issues, it took until last week to finally get my hands on the board, but I’m almost tempted to say that it was worth all the wait as the board is glorious (and so tiny and cute!), and building a home server has been so far a great joy.

So far, I’m only done with the hardware side of things, as coming up with an idea of how to actually safely migrate all of my services and have them run in Kubernetes will take some additional thinking that I don’t have the time for right now, but what I can show you are the obligatory photos from building the cluster up to this point. And hey, it’s already a working cluster, that allows me to experiment with new Kubernetes ideas every day!

Before we get to the pictures, here are all the parts I used. I originally planned on a much smaller set of components, but as the shipping date for Turing Pi kept moving, my brain couldn’t stop thinking about additional improvements and ways to spend more money, so here goes:

Photo time! 📷

All of this has to fit in? 😳 (That’s what she said 🤭)
Attaching heat sinks to Compute Modules.
I swear that the pink thermal pad in the top right of the bottom module was like 0.5×0.5cm in size. A serious test for my motor skills.
I present to you, a Raspberry Sandwich: heatsink from the top, carrier board from the bottom 🥪
Adapter boards go into the baseboard.
Another angle, with empty Mini-PCIe slots.
SATA adapters go into the Mini-PCIe slots, making it possible to plug HDDs via SATA to nodes 1 through 3.
The dreaded RTC battery is in.
And so is the PicoPSU. Time to do a first test boot!
… or not. I ordered an US power plug, not realizing that it will come in the three-prong variant. No way am I plugging this into the seriously-safe Japanese outlets.
… unless my collection of travel adapters comes to the rescue? 🤭 Just kidding, I didn’t have the 🏀🏀 to test this contraption. Too much was at stake at this point!
Instead, this thing was purchased the very next day. Honestly, I wanted a full cable replacement, but this is the second-best thing, and one that was in stock at ジョーシン.
First test boot, no fire! 🔥
How do you attach a PSU of non-standard dimensions? That’s right, with double-sided tape and cable ties.
First boot of all the CM4s! No OS is flashed on them just yet, but I already wanted to see some shiny lights ✨ Looks like there won’t be any need for Christmas tree this year 🎄
Front-panel I/O is now also plugged in, now the modules can be started with a push of the button. Well, a different button. An accessible button.
Fans and one HDD attached the intended way (with fan controller yet again taped on top of it, very smartly covering the HDD serial number, surely that will not bite me in the 🍑), two HDDs at the bottom attached using a HDD cage shamelessly stolen from my Corsair computer case.
… unfortunately, one of the drives turned out to be dead on arrival 😭 All attempts to diagnose and fix the issue on Windows confirmed the diagnosis. The patient didn’t survive the transport. 
A replacement drive was promptly ordered. All attempts to cable manage have successfully failed. Embrace the chaos, and learn to love the spaghetti 🍝
Time to close the side panel for the last (?) time. Everything seems to be finally working! Oh, how is the HDD bay attached to the case? Well, if there’s a problem that can’t be solved with zip ties and cable ties, I haven’t seen it yet. Bodge is the name of the game, and this is the Art of the Bodge.