A mixture of curiosity and frustration – the negligent stepmother of invention. For whatever masochistic reason, I like playing with new software and setting it up is a great way to understand more about systems I would otherwise not be exposed to. Apart from curiosity, I also find the alternatives quite frustrating. Most replacement services (google drive, Dropbox, etc) are engineered to turn non-paying customers into paying customers. They’re a business, I get it! However, with a little bit of money upfront, you can forever ignore that tiny bit of friction inherent in free services and make life better.
I also really dislike the rent-seeking behavior that seems to be the predominate business model today and refuse to support companies that employ it.
A Gen 10 HP Enterprise Microserver. It’s a wonderful little device – small, quiet and 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. There’s no iLo, and it’s generally inferior to the Gen 10 Plus, but I got it for dirt cheap! Perhaps a bit limiting is the lack of RAM (8GB stock) but this is easily extensible.
I’m using 4 HGST HUA723030ALA640 3TB I bought used for $30 a piece. They arrived with about 46k hours each. As of early 2021, they are at about 53k hours (
sudo smartctl --all /dev/sdx) As enterprise drives, they’re expected to run 24/7, and their MTBF spec is nearly 2M hours. Considering my usage is far less intesive than a datacenter, I expect to replace the drives for capacitiy reasons long before they fail.
I’m running Ubuntu 20.02 LTS. I also considered Debian, but Ubuntu was the first Linux distro I ever used and I think their documentation and support base is excellent. Plus, Ubuntu Server is basically Debian with all the packages I was going to install anyways.
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, the data is lost.
I’m using DuckDNS to link my dynamic home IP to my site. DuckDNS runs a DNS server, I get a DuckDNS subdomain that I can point at my site and simply have a cron job that checks and updates my IPv4 and IPv6 addresses.
Access requires a few ports to be forwarded – in my case, a custom port for SSH, plus 80 and 443 for Nextcloud.
I chose to install Nextcloud with Snap, Cannocial’s containerized package managment tool. It was pretty seamless, and I enjoy not having to juggle compabtible webserver/database/nextcloud packages.