KUB62 is a 10-inch wooden mini rack running a fully automated K3s cluster on Raspberry Pis - with a gesture-controlled touchscreen for local interaction. Maybe it’ll inspire someone the same way other mini rack projects inspired me.
TL;DR:
- 10-inch / ~6U wooden mini rack
- 4-node Raspberry Pi K3s cluster (NVMe/USB boot)
- Fully automated via
kub62-ansible (one-command setup)
- DIY gesture-controlled Touchscreen via
bodgestr



With all the great ideas in this community, I went down the usual rabbit holes: Rackmate, 3D printing, T-slot aluminium profiles...you name it.
Last year, I built an arcade machine for my kids, together with my Dad - and that was a rabbit hole, too. While building it, I wanted to recycle as much as I could. I used an old 19-inch screen from my parents' place, some old speakers from my brother's first car, and so on. Of course, I couldn't get everything second-hand, but for some of the more common parts I was quite successful. Still, it ended up being heavily over-engineered and not exactly budget-friendly.

I liked that spirit, so I wanted to push it further this time. I managed to get some used Pis, and when the RAM shortage finally hit the second-hand market, I found myself trying to get used NVMe drives - often for almost the same price I had paid for a new drive with twice the capacity and more modern specs just three months earlier.
For the rack itself, I wanted to use wood because I really like the material, despite its poor thermal properties. I also liked aluminium profiles a lot, so I tried to combine the two ideas. My Dad cut T-slots into the end grain of the boards, allowing hexagon cap screws to slide into whatever position I need, while acorn hexagon cap nuts pull everything tight. Moving the screws into place takes a little practice, but the nuts also make opening and closing the rack easy without needing a screwdriver or a ratchet tool.
Another reason to use wood was that, at the time - though I'm less sure about it now - I wanted to integrate the rack into some kind of coffee table for my home office. Something you could place next to a lounge chair. We'll see if that ever happens.
That is also where the name comes from. I'm a really big fan of everything that happened in and around Manchester's Factory Records for the past 25 years. If you're not familiar with it, enjoy great music and/or bizarre stories, it's well worth a look. Factory famously assigned catalogue numbers to almost everything they touched, and the Haçienda nightclub was FAC51. If I ever build that coffee table, it will probably end up being an awkward attempt at an homage to the visual language of Factory sleeves and parts of the Haçienda interior. Peter Saville designed most of Factory's record sleeves and artwork, and Ben Kelly designed the Haçienda - both absolutely worth checking out.
So, let's celebrate that and remix that a little bit: KUB62 = KUB(ernetes) + 62 (a reference to where I live).
Anyway - back to the rack.
I should have known better: I did not manage to source as much second-hand hardware as I had hoped. I broke the bank. Again. However, it has been a fun journey so far - time-consuming, sometimes a bit ridiculous, but very rewarding. And it's not over yet.
Aside from how it looks, I’m particularly proud of two things:
-
Like many home lab racks, it hosts a K3s cluster. KUB62 can be deployed onto freshly prepared Raspberry Pi nodes using my kub62-ansible project. You only need to power them on, connect them to the network, and provide your SSH key. From there, the entire cluster is bootstrapped automatically, including support for my (not yet public) FluxCD setup - or your own repo. The whole cluster can go from zero to fully operational in a matter of minutes on my setup, with nodes booting from NVMe or USB. Essentially, one single ansible-playbook command.
-
The rack also hosts a 2U Touchscreen. I learned the hard way: touch != gestures. Work also pushed me to be a bit more open to AI, so I teamed up with Copilot to build bodgestr, a gesture-recognition daemon that identifies touch gestures and turns them into commands. In KUB62, it is used to send CTRL+TAB / CTRL+SHIFT+TAB to cycle through headless Chromium tabs that each show different Grafana dashboards.
And of course, there are a few things I regret. I might have forgotten some, but these stand out:
-
The rack is about 5.85U high (I wanted it to be 5.5U, but with wood and Dads involved...). Despite the fact that I initially wanted only 4U, I really wished it was 6U now!
-
Since we cut the end grain and don't have those extra centimeters "behind the screws", I could not find a 10-inch power strip with a top- or bottom-facing cable that would fit there.
-
The timing for getting all the hardware couldn't have been any worse.
Bill of Materials
Even though many parts are second-hand, I won’t put prices here, because I REALLY don’t want to add them up. Honestly, I have no idea how much it was, and I'd really like to keep it that way. You can look them up yourself - but please don't tell me.
Rack
- 2x Robinia boards (>= 710x130x20 mm; cut in half and glued edge-to-edge to make 355x260x20 mm, routed feet for enhanced stability)
- 1x Plywood base (foundation for structural stability)
- 1x Wooden dowel (for structural stability and transport handling)
- 1x M6 T-slot cutter
- 24x M6 acorn hexagon cap nuts
- 24x M6x16 mm hexagon cap screws
- 24x M6x12 mm washers
- 2x Digitus 1U shelves
- 2x GeeekPi 0.5U brush cable managers
Computing
- 1x DeskPi 2U rack mount (comes with 4x PCIe NVMe boards)
- 2x Raspberry Pi 5 / 8 GB
- 1x Raspberry Pi 5 / 4 GB
- 1x Raspberry Pi 4 / 8 GB
Storage
- 1x 1 TB NVMe
- 2x 500 GB NVMe
- 1x 256 GB USB thumb drive
- NO SD cards
Networking / PoE
- 1x Ubiquiti Ultra Switch (with the 210 W AC adapter, it provides "slightly" overpowered 202 W PoE+, I was afraid the smaller 60 W version wouldn't be strong enough. However, with all devices on, the consumption is around 30-35 W right now)
- 3x GeeekPi P30 PoE+ HATs (comes with the official Pi 5 Active Cooler)
- 3x thin Cat6a network cables, 0.2 m
- 1x thin Cat6a network cable, 0.15 m (the Raspberry Pi 4's USB and RJ45 layout meant a shorter cable worked here)
- 1x Ubiquiti U7 Lite (powered via PoE)
I would like to point out here that the GeeekPi P30 PoE+ HATs end up being just slightly too tall when mounted in the DeskPi 2U rack mount. Therefore, I had to get some slightly lower parts:
- 3x 40-pin female stacking headers (just a few millimeters shorter than the ones that came with the PoE+ HATs)
- 1x set of M2.5 standoffs and spacers (again, a few millimeters shorter)
Touchscreen
- 1x DeskPi 7.84-inch Touchscreen (I bought the 1U version first, but it turned out to be far too small; powered via USB and sends touch input used for gesture control on the Raspberry Pi)
- 1x 4-port HDMI switch (comes with a remote control; connects all 4 Nodes)
- 1x thin HDMI-to-HDMI 2.0 cable (270° angled)
- 4x thin HDMI-to-Micro-HDMI 2.0 cables
Roadmap
- Replace the Raspberry Pi 4 / 8 GB with a Raspberry Pi 5 / 16 GB as a new (or additional) control-plane node
- Build a 2-node test environment, possibly mounted on the rear of the rack using a DeskPi 1U rack mount (comes with 2x PCIe NVMe boards)
- Continue improving
kub62-ansible
- Keep adding more workloads to gain a bit more digital sovereignty and have some useful tools at hand
- Release the FluxCD project
- Build that coffee table!
- If cooling becomes an issue, mount a DeskPi 2U Dual Cooling Fan Panel to the rear of the rack
KUB62 is a 10-inch wooden mini rack running a fully automated K3s cluster on Raspberry Pis - with a gesture-controlled touchscreen for local interaction. Maybe it’ll inspire someone the same way other mini rack projects inspired me.
TL;DR:
kub62-ansible(one-command setup)bodgestrWith all the great ideas in this community, I went down the usual rabbit holes: Rackmate, 3D printing, T-slot aluminium profiles...you name it.
Last year, I built an arcade machine for my kids, together with my Dad - and that was a rabbit hole, too. While building it, I wanted to recycle as much as I could. I used an old 19-inch screen from my parents' place, some old speakers from my brother's first car, and so on. Of course, I couldn't get everything second-hand, but for some of the more common parts I was quite successful. Still, it ended up being heavily over-engineered and not exactly budget-friendly.
I liked that spirit, so I wanted to push it further this time. I managed to get some used Pis, and when the RAM shortage finally hit the second-hand market, I found myself trying to get used NVMe drives - often for almost the same price I had paid for a new drive with twice the capacity and more modern specs just three months earlier.
For the rack itself, I wanted to use wood because I really like the material, despite its poor thermal properties. I also liked aluminium profiles a lot, so I tried to combine the two ideas. My Dad cut T-slots into the end grain of the boards, allowing hexagon cap screws to slide into whatever position I need, while acorn hexagon cap nuts pull everything tight. Moving the screws into place takes a little practice, but the nuts also make opening and closing the rack easy without needing a screwdriver or a ratchet tool.
Another reason to use wood was that, at the time - though I'm less sure about it now - I wanted to integrate the rack into some kind of coffee table for my home office. Something you could place next to a lounge chair. We'll see if that ever happens.
That is also where the name comes from. I'm a really big fan of everything that happened in and around Manchester's Factory Records for the past 25 years. If you're not familiar with it, enjoy great music and/or bizarre stories, it's well worth a look. Factory famously assigned catalogue numbers to almost everything they touched, and the Haçienda nightclub was FAC51. If I ever build that coffee table, it will probably end up being an awkward attempt at an homage to the visual language of Factory sleeves and parts of the Haçienda interior. Peter Saville designed most of Factory's record sleeves and artwork, and Ben Kelly designed the Haçienda - both absolutely worth checking out.
So, let's celebrate that and remix that a little bit: KUB62 = KUB(ernetes) + 62 (a reference to where I live).
Anyway - back to the rack.
I should have known better: I did not manage to source as much second-hand hardware as I had hoped. I broke the bank. Again. However, it has been a fun journey so far - time-consuming, sometimes a bit ridiculous, but very rewarding. And it's not over yet.
Aside from how it looks, I’m particularly proud of two things:
Like many home lab racks, it hosts a
K3scluster. KUB62 can be deployed onto freshly prepared Raspberry Pi nodes using mykub62-ansibleproject. You only need to power them on, connect them to the network, and provide your SSH key. From there, the entire cluster is bootstrapped automatically, including support for my (not yet public) FluxCD setup - or your own repo. The whole cluster can go from zero to fully operational in a matter of minutes on my setup, with nodes booting from NVMe or USB. Essentially, one singleansible-playbookcommand.The rack also hosts a 2U Touchscreen. I learned the hard way: touch != gestures. Work also pushed me to be a bit more open to AI, so I teamed up with Copilot to build
bodgestr, a gesture-recognition daemon that identifies touch gestures and turns them into commands. In KUB62, it is used to sendCTRL+TAB/CTRL+SHIFT+TABto cycle through headless Chromium tabs that each show different Grafana dashboards.And of course, there are a few things I regret. I might have forgotten some, but these stand out:
The rack is about 5.85U high (I wanted it to be 5.5U, but with wood and Dads involved...). Despite the fact that I initially wanted only 4U, I really wished it was 6U now!
Since we cut the end grain and don't have those extra centimeters "behind the screws", I could not find a 10-inch power strip with a top- or bottom-facing cable that would fit there.
The timing for getting all the hardware couldn't have been any worse.
Bill of Materials
Even though many parts are second-hand, I won’t put prices here, because I REALLY don’t want to add them up. Honestly, I have no idea how much it was, and I'd really like to keep it that way. You can look them up yourself - but please don't tell me.
Rack
Computing
Storage
Networking / PoE
I would like to point out here that the GeeekPi P30 PoE+ HATs end up being just slightly too tall when mounted in the DeskPi 2U rack mount. Therefore, I had to get some slightly lower parts:
Touchscreen
Roadmap
kub62-ansible