NK4 Build Log - Migrating from a Pi Cluster to a bona fide NAS

2. My existing setup (and general architecture):

Enjoy my lovely drawing skills. Here’s my home office setup. The blocks on the left are this IKEA shelf if you need an idea of scale.

Currently, my NK4 (finally built so it makes the drawing :slight_smile:) is the black PC on the bottom.

Working backwards from the network, here’s what we’re working with and how it’s set up:

  • My TP-Link Archer C7 v5 router is not pictured, but on the other side of the apartment in the living room. It’s an AC1750 router, so we get pretty solid speeds, but we’re limited by our 330M down/30M up internet. It’s cheap, but we’re bottlenecked on the upload side
  • Working back from the network we have a TP-Link Range Extender underneath my desk, which provides an AC1750 Wi-Fi uplink to the cluster on nonsense on the left. The extender has a single 1GbE port
  • That 1GbE port is connected to a set of 2 TP-Link TL-SG105 5-Port GbE Switches and 1 TP-Link TL-SG1005P 5-Port PoE GBe Switch. The switches are patched together with small runs of Ethernet cable, and I have 4 PoE + 6 regular GbE ports

So that’s the network. Now for the cluster. This project originally started as just a BeagleBone Black, but grew to eventually be a small SBC cluster. Here’s what we got:

That’s a long list. This project was capable of hosting all of those docker services above + a pair of PiHoles and Wireguard. I mainly had issues with storage which is what this project needs to solve. Finally a bona fide NAS will actually allow Plex and Nextcloud to run continuously.

The way these boxes ran before was as follows:

  • The ODROID-N2 was my “master” node and ran ZFS with a separate set of USB 3.0 disk enclosures - it ran my MariaDB instance + Plex and anything that couldn’t run over NFS exports
  • The BeagleBone and Pi Zeros barely run anymore, but originally started it all. Now they would run mostly a Wordpress container at most + maybe a Tautulli container. Anything that is basically just a webserver runs fine on these little guys. One of the Pi Zeros has a temp sensor HAT that I use to gather ambient temp data around the cluster.
  • The Pi 3B+ and 4s combined to run most of the heavy stuff like Nextcloud, Home Assistant, Bitwarden, the R’s, etc. One Pi ran a Pi-Hole and the other Pi 4 ran a WireGuard VPN

The cluster’s focus was high availability of these services, so I used glusterfs + NFS shares to spread out data so if a node failed the services would degrade but at least keep running. This worked in a fashion, but the central location of the MariaDB instance + the file storage killed most services if the ODROID went down or the USB acted up (which happened frequently)