Raspberry Pi Server Rack
Over the years I've built up quite a collection of Raspberry Pi's. I was in need of a tidy, compact and easy-to-manage solution to mount and run the servers. After failing to find such a solution in any products, I decided to make my own!
Saturday 15th February 2020
Since i bought my first Raspberry Pi, aged 12, I've been finding more and more uses for the handy little devices. As such, I've built up quite a collection over the years, and until now I've neglected to find a permanent mounting solution.
Whilst the Pi's are fairly robust, they're not unbreakable, as I recently found out the hard way. As some of the Pi's are running critical services, such as my VPN and NAS, having them fail wasn't going to be an option going forward.
Having recently run Ethernet cables around my house, I have been planning to migrate all networking equipment to my room as this is where all of the servers live. This was enough of an excuse to justify a 9U server rack which would form the basis of the project.
Here you can see how I used to mount my Pi's. It was fairy functional and easy to manage, however lacked expandability and and you can see, I had already begun to run out of ports across my 4 Ethernet switches. Another major issue was the lost space in my wardrobe, where the system is mounted. I was hesitant to put anything in front of the wall for the fear that the Pi's could be damaged. There is also a lack of strain relief on the cables and everything it's not super-tidy either: A key goal for the new solution.
Staring with a standard 19" 9U server cabinet, I set out on my research to see if there was a commercially available product for what I was trying to achieve, after all, it would likely be quicker and easier that way - Or so I though!
It turns out there are very, very, few products out there that would do what I need. That is, I need something to mount at least 7 Raspberry Pi Model 2, 3 & 4 B's in a 19" server rack. Whilst solutions such at this and this look alright, they are expensive, with the former only holding 3 Pi's per shelf at best.
Enter the Prusa i3 Mk3s 3D Printer. I purchased this last summer with a view to making slightly more professional looking products, instead of just stuffing everything in a standard project box. Whilst pricey, I can genuinely say this is the best 3D printer I've ever owned. I opted for the Kit form, (Saving around 3-week in lead time and £200 in assembly costs), and building it up was actually quite fun. Because I built the printer from individual parts, I'm also confident in knowing what to do if a particular part were to become faulty. Fun Fact: I've got OctoPi running on one of the Pi's such that I can control the printer when I'm away from home. Please note, I've not setup port-forwarding for this Pi, instead it is accessed through a VPN. See this article for more info as to why having your 3D printer open to the world through an open port isn't a great idea!
With the plan to 3D print my way to success now in my mind, I started looking around to see if the 3D printing community had any tips. At the time of writing, Thingiverse, a popular site for sharing 3D CAD models, is still having performance issues making it almost unusable. The guys there are working on the issues but it meant finding a foundation for the project was slightly more difficult.
Once again, to my surprise, there were very few options out there. I did manage to find one system that I liked however, and it served as the foundation on which I would build going forward.
The model used a 2U audio rack faceplate to attach the Pi's onto. This had 10 vertical mounting points on which the 3D printed mounts would hold the Pi's to the shelf. I got this rack from here (£18 inc shipping). Sadly the quality of the rack wasn't great, with the "3.5mm" holes being a tad under that, meaning the included screws wouldn't fit. Not to worry though, that problem gets solved later on! It also took quite some time for the piece to be dispatched, despite paying for next-day delivery.
3D Printed Mounts
With the mount upon which the Pi's would sit now sourced, it was time to get onto making the holders for the Pi's. As mentioned, I'm not claiming complete ownership of the design, as it was based off this, however I have substantially added to and modified it for my needs. This is a custom solution after all!
Files: You can find the CAD files on my GitHub
Every Pi will have it's own mount. Thee mounts are designed such that the USB and Ethernet ports will sit flush with the front, and you can see the slightly raised section for the extra height of the USB ports here. As a side note, the ports on the Pi 2/3 and Pi 4 are switched around, hence the mount for the Pi 2/3 won't work with the Pi4.
At the top we have a couple of holes for ventilation and style, along with slightly cut-out corners to make installation a little bit easier. The holes on the front are slightly recessed to allow the screws to sit flush against the mount when installed in the rack. There are also 3 x 3mm holes on the front for LED's, my plan is to use these as a status indication for the Pi. Green could mean Powered, Yellow means warning while Red means that the Pi has encountered a fatal issue. I've not quite set this up yet, but it'll be easy to implement later.
As a change from the original design, the Pi's now sit on slightly raised feet, this is to avoid the PCB from being bent and possibly snapping if screwed in too tight. On the underside, the 2.5mm Hex nuts are recessed inside the legs for extra grip.
The Pi is attached to the mount through 2 x 2.5mm machine screws, with 2 x 2.5mm recessed nuts below. I actually found that the nuts on the underside are not required if you printer has a high enough accuracy for printing circles.
The mount is attached to the server rack with 2 x 3mm machine screws, again with 2 x 3mm nuts on the backside. I feel the use of silver machine screws actually looks nicer than the poorly-fitting black screws that came with the rack anyway.
Finally, I also included a number "4" or "2/3" on the back of the model such that it was easy to identify what Pi they were for. Printing took around 90 minutes per mount and I don't have any complaints, they look great!
I also wanted to use a 20x4 LCD display as a status indicator for the system. I created a model for this and printed it as well. Note that the blue part in this model is what the LCD would look like, and is not actually printed.
After a couple of test prints, I got the parameters perfect for the mounts, so I set the printer off to make me 6 x Pi 2/3 mounts, 1 x Pi 4 mount and 1 x LCD holder. It was at this point I realised I was going to need to get another rack for the rest of my Pi's, as they're not all going to fit! Luckily I only have 7 Pi's in use at the moment, so it's not a major concern. My server cabinet has 3U of space left, so if I were to get another shelf to mount the Pi's onto this would simply be a case of screwing it in.
Printing took a few days as I was in no rush and wanted to make sure they all came out perfectly. I printed them in light blue ABS on the aforementioned Prusa i3 Mk3s, however having used PLA for the test prints I can confirm that this would be strong enough for most uses.
Once printed, I installed each Pi into the shelf, along with the LCD at one end. Getting the nuts into the back of the shelf is a bit fiddly but with some patience you should be alright
The LCD is connected to the Pi 4 on the left hand side though its GPIO pins (Not shown in this image).
Final touches included the installation of a 24 port Ethernet switch, 24 port patch panel, 5 socket PDU with surge protection and a 10-port USB hub capable of delivering enough current to each Pi. Like I mentioned earlier, one of the Pi's is the print server for my 3D printer, so there is a USB cable running to the cabinet and into the Pi through a brush face-plate.
Currently the LCD is displaying the status of all servers that I am running, both locally and remotely. If a server fails I will be alerted on the display, along with a time the host was last seen alive. If possible, I will also be alerted via email, however if there is no network then obviously the email won't send!
This was a fun project, and has transformed by wardrobe into something much more professional looking and manageable. It also opens up possibilities going forward.
I've still got a few things to finish off, such as installing the status LEDs for each Pi. I also want to add a button or switch and LED to the LCD panel such that I can interact with hosts from the cabinet itself, such as shutting down or restarting servers. The LED would be used to show if there are any servers with issues. This shouldn't be too difficult to implement and hopefully just require a bit of a tweak in the 3D model followed by a reprint.
If you enjoyed this or have any questions, please sent me a message through my contact form! I'll upload the models shortly.