Matt Ruby, 04/26/21 21:02:00

a very small computer tower on a wooden surface next to a TV remote for size comparison

A number of years ago, I built a computer to use for various household needs: file storage, media server, web server, etc. I had taken the computer I had been using as a "family computer" up until that point, added a few hard drives I had available, and installed Ubuntu Linux on it. It had an older, low-power processor with an enormous fanless heatsink on it and a case that was designed to be especially quiet, and it served its purpose of an always-on, general purpose server well for a good amount of time.

I didn't need a new server, but I'd had an interest in small, single board computers (SBCs) since the original Raspberry Pi came out and I discovered that a company called Radxa had released their ROCK Pi 4 SBC with the same form factor as the Raspberry Pi boards I had bought in the past, but with a faster processor, support for eMMC storage, and an on-board M.2 NVME slot. They also had recently started selling a complete kit perfect for building a small form factor Network Attached Storage (NAS) device, including an add-on board with four internal SATA connectors (and one external), a case with a large heatsink for the CPU, and a "top hat" board with a temperature-controlled fan and a small status display. It had been a while since I had a server project to work on, so I bought the whole package.

I bought the kit, a ROCK Pi 4A (no WiFi and one HDMI, since I would be running it wired and with no display), and 32GB of eMMC. For the disks that I would use for data storage, I opted for four 1TB Samsung EVO 860 SSD drives. Those were by far the most expensive part of the build, even despite getting a bit of a price break because the EVO 860 drives were being phased out by the newer EVO 870 drives. I ordered the drives directly from Samsung, so they arrived fairly quickly, but I ordered the rest of the items from ALLNET China, so they predictably took a couple months to arrive.

Once I had everything in hand, it took me a while to assemble it all. Partially this was because of its size — the whole thing assembled is less than seven inches tall — but also I discovered that the supplied heat sink wasn't actually coming into contact with the CPU and I wasn't about to rely on thermal paste to make up for the difference. What I did was order some copper shims of varying thicknesses and some sandpaper of varying fine grits from Amazon, and then when those arrived, I sanded down the powder coating on the heatsink until I could fit a shim between it and the CPU. Once the shim fit comfortably, I applied thermal paste to either side of the shim, and screwed the heatsink to the board. This seems to have worked quite well, since even running under intense load (and causing the fan to run), I haven't ever been able to get the CPU temperature to exceed 40°C. Given that the CPU is rated to handle temperatures up to 80°C, this is well within specifications.

The Rockchip 3399 on the ROCK Pi 4 is no speed demon, but compared to the Athlon 4850e on my old home server, it actually compares quite well. I installed the ROCK Pi 4 version of Armbian since that was the only OS available for it that would allow me to run openmediavault for the NAS functionality. The documentation for OMV is quite good, so setting it up went quite smoothly. I set up the four drives in a RAID 5 configuration, which I think some people might argue was silly with modern SSD drives, but I was looking for only a modicum of redundancy and wasn't too concerned about speed. I may have been able to implement a ZFS RAID-Z configuration (there's a plugin available for it in OMV), but I was concerned about the load that ZFS might put on that puny ARM processor. In the end, I have about 2.75 TB of usable RAID storage, which is considerably more in quantity (and infinitely more redundant) than what I had with my previous home server.

OMV uses NGINX for its web server instead of the much more ubiquitous Apache. I am reasonably familiar with Apache and have almost no experience with NGINX, so moving the small sites I use at home (including the one I use to stage this one) presented another learning opportunity. NGINX seems to prefer multiple web sites to be somewhat more partitioned from each other than Apache, so that was one thing in particular that took some adjustment. I also now had OMV running as the default site, so I had to move the original default to another TCP port.

One thing that was nice about moving from one server to another was that I'm able to start from square one again with regards to installed packages. So far, the only things I've installed have been OMV and anything required to support it or my existing websites, plus what I needed to use this server as a VPN endpoint when I'm traveling (giving me both access to my home network and a secure connection when connected to insecure WiFi). Other good things that moving to an SBC-based server have brought are longer runtime off my UPS when the power goes out and silent (since the fan rarely runs) instead of just quiet operation. This new, tiny server is more than adequate for the tasks I've given it, so I'm quite happy with the outcome of this project.