Building a home lab storage server

Over the past few years, my home lab has grown, shrunk, grown, gone to the cloud, and come back to our apartment… it’s been all over the place. One of the main things we use our home lab setup for is Plex – we love watching hard to find shows, some have come on DVD/Blu-Ray, others have been found on the internet. We’ve built a collection that suits us and fulfills our entertainment needs. This has quickly grown and become a few TB of data. This for sure needs to stay on prem for various reasons, so I decided to build a home storage server.

Today I wanted to run through my process for thinking about how I built out my storage server.

I had a few requirements:

  • The case must be able to handle 6 x 3.5″ drives
  • It has to be 10gb capable, this means I need a PCI slot or have built in 10gb on the motherboard.
  • It has to run Debian, this is my preferred OS. I didn’t really want to run Truenas as this will just be serving up files via NFS to other linux based devices, I found a great solution…
  • I want this to be simple to manage and super stable.
  • It must use ZFS

Here’s what I came up with:

This is a Fractal Node 804, it has space for 8 x 3.5″ disks and a couple of SSDs as well.

For storage, I started with 6 x 4tb WD Red Plus in RAIDZ2 and a 512gb NVME drive for Cache. I also added 32gb ram to make sure we had plenty of space for ZFS l2cache.

Here’s how I did it:

After building out the machine, I set up ZFS using the ZFS GUI that 45Drives built for their appliances. https://www.45drives.com/solutions/houston/

45Drives made this open and available to anyone that wants to use it, I think it works really well and has been the core of many of my homelab projects lately.

To get started do the following:

Install Debian 11, I used the netinstall option and installed it with only open-ssh and server management tools.

Add Contrib to sources

nano /etc/apt/sources.list
deb http://deb.debian.org/debian/ bullseye main contrib
deb-src http://deb.debian.org/debian/ bullseye main contrib

Add Backports

nano /etc/apt/sources.list.d/backports.list
deb http://deb.debian.org/debian bullseye-backports main non-free

Add 45Drives Repos

apt install -y sudo curl gpg
curl -sSL https://repo.45drives.com/setup | sudo bash
apt update

Install Cockpit, ZFS, and ZFS Manager plugin

apt install -y cockpit cockpit-zfs-manager cockpit-benchmark cockpit-navigator cockpit-file-sharing cockpit-identities cockpit-machines realmd tuned udisks2-lvm2 zfs-dkms samba winbind nfs-kernel-server nfs-client 45drives-tools

Install Firewalld, Disable UFW

apt install firewalld
ufw disable
firewall-cmd --add-service=cockpit
firewall-cmd --add-service=cockpit --permanent
firewall-cmd --add-service=ssh
firewall-cmd --add-service=ssh --permanent

Reboot

reboot

Cockpit is now available at https://your-server-ipadress:9090/

To spin up a ZFS pool you simply go to Create Storage Pool under the ZFS Tab:

Next up, create a file system

After you’re done with that, open up the file system you just created and look for the Mountpoint

This will show you where to navigate to when storing and accessing files on the new ZFS pool you set up.

That’s all for today, hope this is helpful and gives you ideas for building out your home lab storage server.