Profile Image

Joshua Saunders

Logic Luminary, Data Druid, Cloud Navigator

My Home Lab Setup – Episode 2: The Software, Part 1

(Contains affiliate links.)

Hello friends. After getting all the hardware sorted, installing the RAM upgrade, the two new 8TB hard drives, the new 2TB NVMe drive, I was ready to start installing software. I started with the OrangePi Zero 3. I went to the OrangePi website and downloaded the Debian image. I burned that to an 64GB SD card I had using Balena Etcher. I also ordered a case for the Pi from Geekworm. After booting up the OrangePi to the new Debian image, I installed and configured Pi-hole. If you want to know more about that, I plan on writing another post about it.

Now onto the Elitedesk. I decided to start by installing ProxMox VE. Because I’ll be running this home server headless, I wanted something that I would be able to manage that way. ProxMox is basically a bare-metal hypervisor like VMware ESXi, but with a built-in web-based management interface and backup features. No need for a separate appliance like vCenter to manage. Which makes it far better than ESXi in my book. Now, don’t get me wrong, there are plenty of applications for VMware ESXi where ProxMox wouldn’t work, VDI for example, vSAN clustering, etc. But for a home server, ProxMox is definitely the better choice.

During installation, I had to reset the BIOS back to defaults and then make sure virtualization options was enabled. After that, ProxMox installed without a hitch. Once it was installed, I went ahead and connected it directly to my router via ethernet and then logged into the web-based console. I then went to the Update section and added the “non-enterprise” update repository and disabled the ones for enterprise, since I’m not paying for an enterprise license, at least for now.

I created a ZFS storage pool in a mirror configuration, using the two 8 TB hard drives I installed, and made it available as usable storage in ProxMox. ProxMox allows you to create both virtual machines and LXC containers. So to start, I created a Debian LXC container with minimal resources (1 CPU, 512 MB RAM, 4 GB storage) and installed Pi-hole, for DNS redundancy. So now I have Pi-hole running on the OrangePi and in this LXC container, and my router uses both when handing out DNS servers via DHCP. I also installed Unbound on each to avoid having to use an upstream DNS service.

Once those were setup, I went ahead and spun up an Ubuntu server VM as well, which is also super easy in ProxMox. To add an OS ISO to its repository, you just copy and paste the download URL, and it downloads it directly into ProxMox.

On the Ubuntu server, I installed Docker, which, if you don’t already know, is an application that allows for the simple management and super-fast installation of containerized applications. I also attached 4TB of extra storage to the VM from the 8TB ZFS pool I created previously. This will be used for my media storage for Jellyfin. I created a folder called “data” on the root directory of the Ubuntu server and mounted the 4TB to it. Then it was just a matter of using Docker Compose to spin up all the necessary applications: Jellyfin, Jellyseerr, Radarr, Sonarr, Lidarr, Readarr, Prowlarr, and Transmission. I’ve included links on each, if you’re wondering what each one does.

I also installed a docker application called Portainer, which has a web-based management interface for Docker, allowing me to manage and monitor my docker apps even easier. And I installed another app called Cockpit, which provides a web-based management GUI for the Ubuntu server itself, which allows me to see things like CPU/RAM usage, as well as available storage.

That’s pretty much it for now. I’ll provide updates as I add to it and tweak it.