Building an Unraid System

Image from https://unraid.net/

Nowadays, a lot of our own data is stored in the cloud, which is just another way of saying someone else's computer. I personally never really liked this, since accessing files in the cloud usually takes longer with slow internet speeds, and also because of the privacy implications. I'd rather have my files and photos on my own computers, rather than Google's.

I was always interested in setting up a home server, but I never got around to it because of the cost. But once my sibling mentioned that their free Google Photos account was getting full and I learned of the abhorrent subscription cost, I jumped into the deep end. In typical hobbyist fashion, I spent multiple years' (and perhaps more than a decade's) worth of Google One subscriptions on some new toys to tinker with.

Hardware

I reused what computer parts I had to save on cost, but also to help reduce e-waste. The main parts of this server may be over 10 years old, but that doesn't mean that they aren't useful and sufficient, especially since they are still in working condition.

This is the full parts list:

  • CPU: Intel Core i5-3570K (4c/4t)
  • CPU Cooler: Noctua NH-D9L
  • Motherboard: Asus P8Z77V-Pro
  • RAM: 16 GB (4x4GB) G.Skill Ripjaws 1600 MHz
  • SSD: WD Blue 500 GB (SATA)
  • HDD: Seagate Exos X16 14TB and Seagate IronWolf 8TB
  • PSU: Fractal Design Ion+ 560P (560 Watt, Platinum)
  • Case: SilverStone GD09B

The CPU, motherboard, RAM, and SSD were parts I had kept from older PCs.

Setting Up Unraid

Before I build everything into the computer case, I like to make an open setup just to make sure all the parts work before committing to screwing things down. My (kinda haphazard) testing setup can be seen below.

The operating system is called Unraid, and is based on Linux. It is extremely lightweight, and will run on even the oldest systems. The software does have a cost ($59 USD for the Basic license), but I think it is worth the cost. Unraid is extremely flexible and has a very dedicated community, with an extensive appstore which makes setting up my own services super simple.

The entire operating system is stored on a bootable flash drive, which I created using my other PC, and when the server is started, the system is stored entirely in the computer's RAM. After using my router to assign a static IP address for the Unraid server, I could access the web interface from my PC and set up my storage drives.

The dashboard page of the Unraid web interface.

Unraid can utilize storage devices of different sizes and combine them into an array, with the largest drive being a dedicated parity drive. This parity drive can't be used as storage, but rather it contains the information needed to rebuild the data on other drives, in case of failure or data loss. Part of the reason I wanted to build a server was to ensure that my family's photos and videos were preserved in case they lost their phones or a single drive failed.

Pool devices usually consist of faster solid state drives. In my case, I have a 500 GB drive, which is used to store my application data and to act as a cache. Data that I store on this server will first be written to the cache, so the hard drives don't need to be spinning up and down too frequently throughout the day (lowering noise and power usage!). The mover program will automatically transfer the files from the cache to the array at a time that I can schedule. This entire experience is seamless and runs in the background, and the end user would see no difference in usage.

Screenshot of the web interface showing all storage devices connected.

Apps

As mentioned earlier, Unraid has an extensive community apps collection, where users have created Docker templates for various programs and services. Docker containers are extremely useful for running multiple apps on the same server, and is already integrated into Unraid. The community apps page is as easy to use as Apple's Appstore or Google Play Store.

Screenshot of the community apps page.

Unraid makes it easy to manage the various apps and services I run on the server, and Docker keeps everything nice and organized.

Screenshot of the Docker containers page in Unraid.

Nextcloud

Nextcloud is like a personally hosted Google Drive and Dropbox. It allows me to create users, allow them to store and send files, and the mobile app can automatically backup files to the server. This is great for ensuring that photos my family takes on their phones aren't lost if something was to happen to the physical device. While Google Photos does the same thing, Nextcloud stores everything to my own computers and I have significantly more storage.

Photoview, a self-hosted photo gallery software, also pairs nicely with Nextcloud. It allows multiple users to view and share their photos in a more streamlined user interface.

Ghost

Ghost is an open source web platform that allows users to host and create their own website, with great support for blogs, newsletters, and more. In fact, this website is made with Ghost!

Other Apps

Apps like Nginx Proxy Manager, MariaDB, and Cloudflare-DDNS, help run things in the background. Nginx proxy manager allows me to have all my URL's point to different apps and services on my server, so I can access them from anywhere in the world (that has internet service). MariaDB is a database that is needed for many of the apps. Lastly, Cloudflare-DDNS automatically updates my external IP address with Cloudflare, so that my domain, colintran.net, points to my home network and server.

Closing Remarks

Going into this project, I expected a lot more frustrating moments and banging my head against a problem. However, Unraid was so simple to setup and use that I didn't have to do any of that. The software itself is simple to learn, yet is extremely flexible and powerful. The active and comprehensive community forums taught me everything I needed to know and were extremely useful in getting all the third-party apps up and running. Overall, a great experience, and I highly recommend this to anyone who likes to tinker with computers.

Fully assembled and tucked away in a TV console.
Colin Tran

Colin Tran

GIS Student, Civil Engineering Graduate, Canadian Army Reservist. I like to make maps, tinker with computers and servers, coffee, and expensive headphones and speakers.
Vancouver