Project Overview

This project highlights the design and implementation details of constructing a home server to meet the growing computation and storage needs of my family. The server will serve as a centralized hub for most, if not all, cloud computing needs. Furthermore, this project aims to provide a scalable, secure, and accessible solution with little to no physical maintenance.

Background Information

Prior to this, we used a Synology S220+ with two 6GB HDDs in RAID 1. However, there were growing pains with the following:

  • File operations were extremely slow
  • Photo gallery navigation extremely slow
  • Insufficient expansion potential while maintaining durability
  • Not powerful enough for other applications and use cases

Design Specifications

Storage Expansion

The solution should allow for storage expansion at the lowest cost possible, while maintaining fault tolerance and data protection to mitigate unexpected mechanical failures. This introduces the need for parity, which adds redundant information to data to provide fault tolerance and data protection. However, unlike traditional RAID setups such as RAID 5, parity data is distributed across all drives in the array, requiring significant overhead to retain redundancy.

An alternative approach is to utilize Unraid. This server operating system places all the parity data on a dedicated parity drive.

This introduces several limitations:

  • Parity drive must be equal to or larger than the largest disk in the array
  • Parity is reduced to a single point-of-failure
    • We can solve this by introducing a second parity drive to provide redundancy for the primary parity drive.

Security

A home server has two general use cases:

  • Internally (while connected via LAN)
  • Externally (both network and geographically)

Exposing the server to the internet introduces its own security risks. Since the users of the server is limited to known individuals, we will provide remote access using Tailscale which provides SSO-authenticated access.

Redundancy

3-2-1 backup is a well-known data protection and recovery methodology allowing for comprehensive recovery of data. Abiding by these rules, this server will have the following storage mechanisms:

  • Local copy (primary devices e.g. laptop, desktop)
  • NAS copy (Unraid server)
  • External drive

Todo

In the future, there may be value in creating another NAS instance offsite, or backing up data into a cloud provider. However for the time being, this solution is sufficient.

Hardward Specifications

Current Specifications

  • RX 1600X
  • 16GB DDR4 RAM
  • RX 580
  • 2x 14TB HDD
  • 2x 6TB HDD
  • 1x 1TB NVME SSD
  • 1000W PSU

Guides

Many different softwares and Docker containers were used to meet the various needs of this server. The following guides outline the steps taken to implement this functionality: