This past week, I have been trying to set up a home server. This whole thing started when I had been talking with my boss about the server he has in his home (Synology DS920+ specifically) and all of the cool things he does with it (PLEX, serving web content, etc). Right now, I do everything on my desktop, which includes gaming, of course, but also development with web and databases. Thanks to Docker, I’ve been able to compartmentalize a lot of the building blocks of various tasks, but having everything running here, taking up resources and space, seemed like the loser’s way after discussing having a dedicated machine in the home that could be doing this for me.
I asked around and a few friends had spare equipment sitting around, so I ended up with an elderly four-bay HP Proliant Microserver as well as four 1TB drives (actually, I had several drives lying around already, including a fifth 1TB, a 500GB, and a 250GB among other, smaller drives). My goal was to set up a Linux server and provide access to my desktop in order to store files which are currently on a removable drive Velcro’d to my desktop PC case, and to run various Docker containers for services like SQL Server and Homebridge.
This did not go as well as planned, and although in the end I got it working, if I had to start from scratch again tomorrow, I could not replicate what I did.
First, I had to get the hardware together. Originally, I had the Proliant server with only a 320GB HDD and none other, so I thought I might just see about getting that running and then adding more storage later. Then I acquired an old rack-mount Dell Poweredge server that my wife’s company used to use. That provided me with the four 1TB drives. Since I had nowhere to put a 1u rack-mounted server, I stole the drives and use the smaller Proliant machine (which had also gotten a RAM upgrade to 8GB).
There was much shuffling after this. Two of the four 1TB drives were on their way out, so I pulled a 1TB from my wife’s old Alienware slimline PC and set up a 250GB OS drive and three 1TB storage drives. I miscalculated, though, because one of the 1TB drives with bad sectors got into the mix, but at this point I’m too tired to fuck with that aspect right now. Thankfully, the HDDs are removable with a press of a button, so someday I’ll get around to figuring out which one is causing the issue.
My second mistake was to look towards Linux. I have dabbled with the open-source OS several times in the past, but even with a graphical UI slapped on top of it, the product cannot let go of how proud it is to rely on esoteric command line operations. This time, like all times in the past, was spent searching by vague understanding on how to perform specific tasks that weren’t super-obvious.
Analysis-paralysis set in. My first inclination was to just set up a standard Linux OS like Debian or Ubuntu, and then just…share drives to the network. Then I got wind of dedicated flavors that turned the PC into an official network storage device (NAS). I fully expected the latter option to make sharing drives much easier, but I wasn’t entirely sure if I could then use the PC to do other things (like all of my Docker installs), so I stuck with the simple desktop version.
At this point I experienced a series of comical tragedies. I discovered the bad-sector drives. I had to sit at the server to work with it because I couldn’t get VNC to work. When I did, I couldn’t get the drives to show up. After figuring out how to mount the drives, I lost VNC access and the drives on reboot until I messed around with the users and the advanced mounting options. Then I had to install Samba to get the drives to show on the network, and I was only able to see the shares once from my desktop PC, and then never again. I did manage to get ssh working with little issue, installed Docker, and set up a few containers. I tried NextCloud, a “host your own Dropbox” like service in a Docker container, but that didn’t work as advertised. I was also feeling confident about everything else, though, so I set up an image called Traefik which would allow me to access resources on the remote machine via domain values and not by IP and port. When I couldn’t get that to work, I was reaching the end of my sanity. I just wanted things to behave.
On Saturday night, after having re-imaged the system twice, once with OpenMediaVault (wasn’t what I wanted) and then with FreeNAS (it worked, but didn’t allow for Docker use), I decided to just go back to a desktop flavor and fight through the steps to get basic functionality working. I reinstalled Ubuntu, mounted the drives, set up Samba, and managed to get things working. Problem is, it’s hazy; I can’t remember anything I’ve done since this morning to get any of this to work. My final battle was, stupidly once again, with Traefik, the reverse-proxy that would allow me to tap Docker contents without befuddling URLs. While I ultimately got it to work, the chain of events leading to that pyrrhic victory meant that the whole situation will only work for my desktop, lest I spend time propping up any other system in my house that I want to participate in this circus. I haven’t even considered looking at what’s involved in getting access to all of this from outside the house.
The easy thing, I think, would of course be to buy a preconfigured server like the Synology DS920+ so I would just have to plug it in and click some buttons. Does that make me stupid? Absolutely not. The march of progress exists specifically so our future selves and generations to come don’t have to slog through the same dumb bullshit that our ancestors did out of necessity. We can travel further and faster than our grandparents did, and in greater luxury, yet no one insists that traveling by horse drawn carriage is the “superior way to travel” (except the Amish, but I bet they aren’t as married to the idea as we might think).
I like learning new things, but I don’t like learning when I feel I have to fight for every inch of progress every second of the day. This whole ordeal has been tiring, and I fear that it’s not over. I’m sure there’ll be a case in the near future where I want to do something with this server and begin to approach it with a certain measure of logic informed by my over 40 years of working with technology, only to find that I didn’t upper-case a fucking command line value in a 120-character string I spent 20 minutes typing out according to a 15-year-old Google search result.