Unraid Server Setup

file storage and much more...

Posted on January 30, 2021

Having run a basic media server on an old Ubuntu box for a few years now, I found some time over the holidays to move into a more spacious system running Unraid.

Building upon a solid Linux core, Unraid is a network-attached storage (NAS) product that excels at serving media, particularly handy for home users. It allows growth by adding mismatched hard-drives over time. Docker containers offer all the required media services.

Hardware

As this storage device is not a gaming PC, you’re better to run Unraid on many CPU cores with lots of drives, neither of which need to be blazing fast. In my case, I had a spare tower with dual CPUs (12 cores with 24 threads). CPU

To allow for many Docker containers and a few VMs, its got 48 GB of ECC RAM:

RAM

I added a UPS to deal with brown-outs and black-outs, monitored by Unraid:

UPS

It also has an old Quadro GPU, but that’s another story.

Array Setup

Unraid itself runs in RAM, booting off a USB thumb-drive. After updating the BIOS settings to ignore disks in the boot order, I was able to access the Unraid GUI via web browser. With a 30 day trial, I started to test with a new 8 TB shucked drive for parity, a single 2 TB hard disk, and a small 240 GB SSD for cache.

As testing progressed, I continued to add hard-drives, pre-clearing them first, then rolling them into the array:

Array

As shown above, I’m now up to 27 TB in the array, with data redundancy provided by the 8 TB parity disk. The oldest drive is a WD Green 1 TB from 2008!

Cache Setup

While Unraid excels at growing a heterogenous storage array over time, these mismatched disks will not handle writes as fast as a homogenous array of fast ZFS disks on FreeNAS for example. To make up for this, Unraid uses a cache pool of SSD drives. I started with a single Kingston SSD, but added a 2nd to make a redundant pair.

Cache

File Shares

As a storage array, Unraid comes with a few file shares already setup:

  • appdata: resides solely on the Cache and is used by Docker containers for databases etc.
  • domains: also on the fast Cache, holds the disks of virtual machines
  • isos: good spot for holding ISO images
  • system: used by Unraid itself, though most of Unraid runs in RAM for speed.

Shares

I added a couple more:

  • data: My general storage share, which is set to write to Cache for speed, but Mover pushes changes to the full sized array overnight. Available via both SMB and NFS to my network.
  • backups: Used to hold Urbackup data, writes slowly to the array as needed. Not shared via SMB/NFS to prevent ransomware from encrypting my backups.

Docker Containers

Unraid makes it really easy to run and update all sorts of Docker containers. For basic media server, I’m following this guide:

Containers

Swag provides reverse-proxy and Organizr tabs it all together. I’ve also added Urbackup to backup computers on my network, and AMP to run Minecraft servers.

Conclusions

Overall, I’m really impressed with Unraid. It’s been on my list to try for years, but I kept putting it off. We’ll see how it holds up in the coming months and years, but for the price, it seems to offer a lot of value. It’s done an excellent job of taking over as my media server. I hope to explore additional projects my adding more containers and VMs in the future.

More in this series…