This is the development diary for Greenhouse, my attempt to build a
DIY compute farm in a box. In other words, a multi-machine chassis.
2018-11-01 — Introduction and Plan
The core idea is to assemble individual compute nodes on trays, in
the most compact way feasible, and then to stack nodes atop each
other in an enclosure.
The components of each node will be:
- A tray made from some thin, rigid, wood-based board.
- Nylon washers/spacers and steel bolts, for standoffs and attachment
of mobo to tray
- A Mini-ITX motherboard with wifi and an M.2 slot
- A CPU
- 2x4G RAM
- An M.2 SSD (cheap now, and eliminates 2 cables)
- An SFX PSU
- 2x 120mm fans in a →[fan→mobo→fan]→
This will be prototyped out using cardboard in place of a hard tray,
to determine optimal placement and connection of components. Already
established is that:
- The mobo and PSU should be oriented toward a “side” of the case for
external connections, since the entirety of the “front” and “back”
will be intake/exhaust.
- The PSU will be anchored to the tray with velcro
- The fans will be anchored to the tray with zipties
After placement is worked out, a verfication test model will be
built from hard board.
If that works, construction of the chassis will begin. It will be
constructed of pre-drilled L channel. Once there is a chassis,
conversion of existing compute nodes to tray builds will begin.
The biggest unknown right now is how to construct the chassis
enclosure. But that can be solved along the way.
Don’t worry if this doesn’t all make sense. There will be copious
photos once work gets underway.
2018-11-11 — Prototype Layout Mk I (Design)
Won’t be fully testing this out tonight because I got #8 screws
instead of #6, which are ever so slightly too big for the holes in the
motherboard. This is the first layout I’m going to try though. Also I
forgot to pick up an M.2 screw (2mmx3mm). I should probably switch to
metric screw sizes all around.
The base dimensions are 44x23cm. That’s 1.012L for every cm of
height. I’m using 120mm fans, so the absolute minimum height of one
rack unit will be 13cm (so: 13.156L per U). There’s no way I can pack
them in that tight in the real world, however. I’ll need 2-3cm for
under-tray cable management, and probably another cm of height for the
Actually, I take that back. After a few minutes of thought and
research, I might be able to use a tray board which is 3mm thick. Or
if that’s too flexible, there is also a 4mm option.
As for cable management, up to this point I had been imagining some
sort of mesh strech netting. I now believe that’s dramatically
over-doing it, and the correct answer is to simply cut some slots on
either side of the tray and put loops of velcro through them, to cinch
down the small number of cables that need to run under each tray.
2018-11-25 — Prototype Layout Mk I (Test)
After 2 weeks of failing to acquire an M.2 screw, I found some
today. Then I (spoiler: attempted to) hook everything up and
immediately discovered that the Mk I layout is a failure.
I initially guestimated cable lengths by running over the
mobo, and in this configuration everything reached with plenty of
length to spare.
But when I ran cables under the cardboard tray, the CPU power
cable was just barely too short, and the ATX power cable was
drastically short. I forgot to account for the length used in bends
and the length used up by the spacers under the mobo.
Tomorrow I’ll revise the layout and try again.
The good news is that #6 screws and #6x3/4 spacers work great. I’m
sticking with SAE screw sizes because the selection of small-diameter
metric screws available to me is very limited – and nylon spacers
2018-12-31 — Layout Mk II Thoughts
I haven’t done much work on this, but I’ve been doing a lot of
thinking on it. Here’s how things are looking right now.
The trays for the Mk II design will be much smaller. This is because
the PSU is going to be slung under the tray, and beacuse the
120mm fans won’t be on the tray at all.
The big problem with the Mk I layout was that the PSU cables used up a
lot of run-length dropping down under the tray, then coming back up to
meet the PSU. I’m using SFX PSUs, which are tiny and high quality, but
come with shorter cables. It took a long time to come to the
realization that the PSU could be velcro’d under the tray just as well
as it could be velcro’d to the top. This actually makes several things
- It solves the cabling problem
- It takes care of an alignment issue, where the PSU’s rear needs to
be flush with some edge of the chassis, for cabling and venting
- It solves the problem of the PSU’s positioning possibly creating
large amounts of empty space on the trays, because now the PSU will
be slung under the mobo.
The fans are being moved from the trays to the sides of the
chassis. They might be aligned with the middle of each tray, to
provide over/under airflow, but they might be aligned with the trays,
so that the pieces of L channel holding the trays don’t block airflow.
This should get tested in the next 2 weeks.
2019-01-20 — Layout Mk II
Today I bit the bullet and put my abominable carpentry skills to the
Here you can see the Mk I prototype tray next to the Mk II template
Close-up of the template tray. Did I mention that I live in a 1BR
apartment, and have no woodworking skills or tools? Or a workshop?
Anyway, the single outer holes are the mount points for the
motherboard. The drilled-out slots are where the suspension system for
the PSU attaches.
This tray trades area for height. It’s 9"x7".
The PSU suspension is very high-tech, being made of two kinds of
Velcro. Super heavy-duty adhesive strips go on the PSU itself.
The PSU will then be strapped to the tray by two long strips of
double-sided velcro. You can see the alignment in this fitting shot.
And here’s everything anchored in place.
Now the tray gets flipped, and the mobo goes on top. It’s mounted the
same way as in the Mk I tray, with the same hardware. The spacers
don’t need to be 3/4" though — 1/2" will be fine, and will be
used once I move to the next phase.
Top view of it all put together. There will be some tweaks to the tray
for cable management, but that’s a minor thing to work out now.
The stack happens to stand 7" tall. That works out to 6.8L per unit
(almost exactly half of the Mk I design). I don’t know what the
spacing will need to be yet, but I’m hoping to come in under 30L for a
2019-02-13 — Chassis construction
With the tray design worked out, the past three weeks have been
devoted to working on the chassis. I have learned a lot. I have
learned exactly how bad I am at metalworking. I have learned that I
could build another one of these in 1/10th the time (or less). But
mostly I have learned that I do not want to do this again, at least
not for a good long while.
Things started very simply. This is the very first cut and fit
test. It’s one of the bottom crossbars which act as feet and hold the
sets of uprights apart. Attached to it are two of the four vertical
uprights of L-channel.
After that I cut the other end pieces, and a set of eight smaller
crossbars for holding the trays. That was all pretty
straightforward. Then the trouble began: I needed to cut out notches
so that the trays could slide in and out of the chassis. Below is the
first attempt. With the simple hand tools I had available, this
approach wasn’t working very well at all. This incomplete cut is
around 20 minutes of work.
This was so frustrating that I left it alone for some days until I
came up with a solution: a sequence of simple cuts, and use of pliers
to flex the pieces loose at the L-bend (yay metal fatigue?)
This worked well. It was more cuts, but each was small, and
perpendicular to the piece, so the work went much more quickly. Before
long, I was ready to test the trays for fit.
Everything was great, except that the tray didn’t fit. The tray itself
was slightly too wide, and there wasn’t enough clearance in the
notches for the motherboard to clear. In my mind the mobo was set in
from the edge of the tray far enough that clearance with the L-channel
wouldn’t be a problem. This was almost the case, but not quite.
This was also very frustrating, and, combined with the upcoming
arrival of a visitor, I ended up setting things aside for another
week. Afterward, I made another round of cuts to produce large, clear,
rectangular cutouts for the trays.
But before this, I had disassembled the other three compute nodes,
thinking that I would be slotting them into the chassis in a few
hours. That didn’t work out, so the top of my dresser looked like this
for a week:
2019-02-17 — Assembly
Finally got back to it today. Cut the remaining 3 trays (adjusting the
width down slightly), and put everything together. It all went
Here’s the stack. It’s a meter high, the side you’re looking at is
about 22.5cm, and the shorter side is about 18cm. The whole thing is
Three-quarter view. The trays with light-up HSFs are Ryzen 7
2700s. The other two are R5 1600s. Other than that the machines are
A look at a tray, with the over/under mobo and PSU arrangement and
push-pull 120mm fans. Temps are stable, swinging a few degrees in the
58C to 60C range, while the CPUs have been at 100% utilization for
You can see that I could easily have shortened the inter-tray spacing
by one step, and everything would have still had clearance and
airflow. It’s suboptimal, but I’ll take it.
And that’s it, until this summer when the Ryzen 3000s come out!
Bill of Materials
- Mobo: Asrock B450 mITX
- CPU: Ryzen 2700/1600
- PSU: Corsair 450W SFX
- RAM: 16Gx2 DDR4 2666
- SSD: M.2 128G
- Fans: 2 X Arctic F12 120mm
- Tray dimensions: 8 1/2x7"
- Tray material: 1/4" plywood
- Mobo attachment (per tray):
- 4 X #6x1 1/4" screws
- 4 X #6 nuts
- 4 X #6x1/2" nylon spacers
- 8 X #6 nylon washers
- PSU attachment: doublesided velcro tape; adhesive velcro tabs
- Chassis material:
- 4 X 1.25" slotted steel angle, 3' (uprights)
- Addl. 1.25" slotted steel angle (crossbars: sufficient for 3
X 9", 8 X 7")
- Chassis fasteners:
- 22 X 1/4x1/2" hex bolts
- 22 X 1/4" nuts
- 44 X 1/4" washers