This post was supposed to be published in December 2023, but due to technical dificulties I didn’t do it at the time. It’s remained an important part of my server writeup, even though some of it is no longer representative of my setup.

This is part one of my server writeup. I’ll go through the hardware choices I made so far and the operating system and core software components. I’ll also briefly mention how I started out as well as what upgrades I’m planning to make. I didn’t want to buy something new because of budget concerns, so my choice was dictated by what I already had.

The RockPro64

As the main platform running my home server, I choose the RockPro64, with 4GB of onboard memory. In part zero I already spoke about the hardware I’m replacing, this single-board computer should be more powerful than both combined. I also experimented with a Chinese motherboard and an Intel i7-2670QM (a 2nd gen mobile i7) but I didn’t find the extra performance to be useful (benchmark), and the power draw was too much for my taste. While my old setup used 20-21W combined, the x86 setup drew 35-36W on average while the RockPro64 drew 17-18W on average; all of them with two HDDs. If I ever feel like running out of CPU performance I can still try overclocking the RK3399, I haven’t experimented with this yet, but I hope the stock 1.42 GHz was a conservative choice.

I bought this SBC in 2021 to experiment on (in some sense this computer taught me to use Linux), and sat abandoned since the end of the 2nd COVID wave in a cardboard box. I ran it first in this cardboard box with two HDDs, but that couldn’t be the permanent solution, so I adapted it to some ITX mounting holes (with a piece of FR4) and placed it inside the biggest case I could find at home. This time I also included a bigger PCIe SATA card based on the ASM1166 and added two extra hard drives in RAID-6 (I’ll talk about this decision in the next chapter). Currently, the disks are 2x2TB and 2x1TB of spinning rust (for a total of 2TB pooled), but once the migration is complete it’ll have 4x 3TB for 6TB usable storage.

These parts are all spares I had lying around, they have bad sectors and they have strange read/write errors at the filesystem level that I attribute to them overloading the power supply. This is a salvaged unit I pulled from a set-top box (same as this one I used in another project) and it can officially provide 1A@12V. It was good enough when I started, but it seems I hit its limit. I already ordered a USB-C PD charger with a trigger board that should give me 3x as much power and not be a shock- and fire hazard.

The biggest limit of this setup is memory. 4GB is just not enough to run Linux, docker containers and spin up at least one virtual machine. To make it just a little less critical (avoid the OOM killer) I added a 16GB microSD card as a swap partition - I have no idea how long it’ll hold but it’s cheap to replace.

OpenMediaVault

On my x86 server, I used TrueNAS Scale, and while I was satisfied with ZFS and how it handled SMB shares, the way it complained as soon as I tried to touch the CLI was off-putting and I couldn’t get used to its docker UI at all. Additionally, it’s not available on ARM as far as I know, so I couldn’t use it even if I wanted to.

So I installed Debian Bullseye and OpenMediaVault 6 on top (just like when I first bought the system). Many in the self-hosting community find OMV a lesser, unprofessional experience (as opposed to TrueNAS or UnRaid) but I really like the balance it strikes between ease of use and how similar it feels to the CLI tools I’m used to. With all of its plugins it offers a complete experience, and what’s missing can be added from docker. I currently have the plugins for system backups, borg backup, tgt (iSCSI target), wireguard, docker-compose, cputemp (installed by default), flashmemory (folder2ram, installed by default because I boot from eMMC) and kvm (although I no longer have a use for it).

All in all it’s a solid experience, OMV only adds to stock Debian and takes none of it away. I think this pattern is not appreciated enough.

Summary

I run a RockPro64 SBC with 4GB RAM, supported by some swap. The performance is just enough for my use case, but it leaves not much space for future expansion, I have it pretty much maxed with the software I’ll write about in the next parts. Storage still needs to be upgraded (I still have to purchase the drives) and the PSU is at its limit, but a new one is on its way.

I installed OpenMediaVault and I love how it only adds to Linux and takes nothing away. It’s a solid foundation for my storage and other services and I find it more convenient than TrueNAS Scale.

In the next part, I’ll write about the storage setup, from hard disks to folders.