Home Server

Last Updated: 12-27-2020

Why?

A mixture of curiosity, annoyance, and frustration – the negligent stepmother of invention. I have a large media collection of music, books, photos, etc. I usually want to be able to share this with my family and friends, but every vendor seems to want to make this as aggravating as possible. What’s more, it’s immensely irritating having a file on my PC but not my phone, and vice versa. Running my own server provides a lesson in Linux administration, as well as removes a large pain point in my life. I hope it also provides some valuable insurance in the form of a backup for pictures and other media.

Hardware

A Gen 10 HP Enterprise Microserver. It’s a wonderful little device – small, quiet, energy efficient. It has space for 4 3.5” SATA drives, and if you hijack the disc reader SATA port, space for a 5th slim SSD.

Drives

I’m using 4 HGST HUA723030ALA640 3TB I bought used for $30 a piece at 46k hours. They’re now at 51k hours according to the smart data. As enterprise drives, they’re expected to run 247, and their MTBF spec is nearly 2M hours. Even at 0.1 of the spec, my usage of the drives is far from intensive. In practice, I expect to replace these drives for capacity reasons long before they crash.

Power Usage

TBA

Software

While I’d love for this to be fancier than it is, I chose Ubuntu Server 20 LTS. It was easy to set up, based on Debian, and has been rock solid thus far.

ZFS

For storage, I’m using ZFS. This lets me run a pool with two mirrors, each with two drives in it. This provides some basic redundancy – if any one drive fails, the other mirror has a copy of the data and I can simply replace the failed disk with a new drive. However, if two drives fail in separate pools, I’m toast.

Remote Access

I’m using duckdns to link my dynamic home IP to my site. DuckDNS runs a DNS server, I get a duckdns subdomain and simply have a cron job that updates my ip periodically.

Access requires a few ports to be forwarded – in my case, a custom port for ssh, plus 80 and 443 for Nextcloud. (If your ISP is Comcast, buy your own modem!)

Nextcloud