Skip to content

News / Maker Project

FRANKENPI LIVES!

A detailed build log of FrankenPi, a Raspberry Pi 4 cluster running NAS, UniFi Network management, Pihole DNS server, and Docker Swarm for learning cluster computing.

Raspberry PiClusterBy Vilros

Overview

Written by Arnoldob

I was using a couple of Raspberry Pi4 4GBs and one Pi3+ single board computers for various tasks within our home network:

  • A NAS running SMB, NFS with Apple Time Machine and Bittorrent support
  • Ubiquiti UniFi Network management
  • Pihole DNS server
  • Foldforcovid instance

It occurred to me that I wasn't fully utilizing the hardware. So I've decided to build a Pi4 cluster. I wanted learn more about docker and cluster computing.

Hardware

FrankenPI Parts List with my price at purchase:

  • 3 Raspberry Pi4 4GB boards $55 × 3 = $165
  • Raspberry Pi4/Pi3 Cluster Case $12.99
  • Photive 60W 6 Port USB Charging Station $19.95
  • D-Link 5 Port Gigabit Ethernet Switch GO-SW-5G $18.40
  • 3 USB-A to USB-C charging cable 0.8 ft $8.99 × 3 = $26.97
  • 3 Cat 6 Ethernet Patch Cables 1 ft $3.92 × 3 = $11.76
  • Cat 6 Ethernet patch Cable 2 Ft $4.12
  • USB A to Barrel Cable 5.5mm/2.1mm Angled 5V DC Power Cable $7.00
  • 3 32GB MicroSDHC UHS-I Card $9.99 × 3 = $29.97

Total = $296.16 + tax

Why Pi4?

The Pi4 4GB has a later generation, faster 64 bit, 4 core CPU, and 4 times the memory of the Pi3b+ that's currently running my Pihole DNS. It also moved Ethernet off of the USB bus removing a major network performance bottleneck compared to the Pi3b+. These improvements make the Pi4B a much better fit for this use case. Plus, I had two on hand already. Frugality is always a plus.

I haven't decided if I want to make use of the Pi3b+ in this project because of its performance constraints. I will eventually add it to the case and use it to run foldforcovid.io, but probably will not add it to the docker swarm. That's a great project if you have a spare computer and want to use it to help find a cure for COVID-19.

Case selection

The cluster case was inexpensive when compared to more advanced cases like the Cloudlet case which sells for $69. You do need to disassemble the case to add/remove boards with the cheaper case, but I didn't foresee a need to do that very often. The GeeekPi case did come with a full complement of Pi3 and Pi4 heatsinks for 4 boards.

Networking

The D-Link Switch was supports gigabit and uses a 5V DC power supply. It can also run off the USB charging station with a bit of creative cable modification. Most USB cables use red for +5V. Check the power adapter specs to verify the where the +5V is. Mine had a stripe on the +5V wire from the AC adapter to make it simple.

Edit: I decided to go with the $7 USB A to barrel connector cable after the switch lost power a couple of times. I didn't have the right size butt connectors to join the power supply wires to the much smaller USB wire, they kept slipping out. The pre-made cable makes it look better as well.

Another valid choice would be using a PoE switch instead. That would require obtaining 3 PoE hats, as well as a compatible PoE Ethernet switch. The PoE switches sell for $50 – $60 on Amazon. The Pi PoE hats are ~$20 each. That would eliminate the USB cables and the charging station and leave just the ethernet cables.

Cost comparison

As a point of comparison, the Picocluster 3H with three Pi4s and 3 × 32gb SD cards is $444 if you want to assemble it yourself. It's $499 if you want it already assembled. Add $20 for US shipping.

Storage

The storage for my FrankenPi is a Mediasonic ProBox HF2-SU3S2 4 Bay 3.5" SATA HDD USB 3.0 Enclosure with a pair of 2TB drives, plus a 3TB drive. The pair of 2TB drives are setup has a RAID-1 array and the 3TB is used as an Apple formatted Time Machine backup. This is used to host video files, photos, backup and, a Bittorrent service using Transmission. It takes advantage of the Pi4 USB 3.0. It also supports connection via external SATA. I may pull the old 2TB drives and replace them with 4TB Seagate Ironwolf HDDs. I did pull the existing drives out of an old NAS and an old Western Digital external HDD I had. Frugality is my friend.

Software

There are dozens of tutorials on how to do this. I rather like the approach taken by HackViking using Docker Swarm and Swarmpit. I'm going to start there. That will be my first pass learning experience. I may decide redo the whole thing with k3s lightweight Kubernetes instead. My goal is to learn about cluster computing. There will be no mistakes. Because every mistake is a learning experience.

This is what it looks like after the build: FrankenPi

By Lauren Eddy

Technical sources

Based on the FrankenPi build log from Vilros Blog. Detailed maker project documenting a home Raspberry Pi cluster build.