profile photoBrandon's Portfolio
profile photoBrandon's Portfolio
Brandon Pyle

Budget Mini-ITX Home Server for Under $800

Brandon Pyle

Posted by Brandon Pyle on December 17, 2023

Categories:

Docker

Jellyfin

Hardware

Home Server

Homelab

Linux

Over winter break, I decided to build my own home server from scratch. While this would prove a more lengthy process than I realized at the time, I learned a lot throughout the process and got out of it a working home server that I will use for years to come. Here is a quick overview of the parts I used to build my server and how I set up the software side of things.

Hardware

I had a very tight budget for this build, so I did my best to choose the cheapest hardware that would provide the best performance for running a large number of Docker containers. I heavily debated purchasing server grade components, but the only options within my price range were very out-dated, so I decided to go with modern consumer-grade parts instead. Additionally, I wanted this server to be low profile. This is a home server, so no server rack stuff. Because of this, I decided to go with Mini ITX as my form factor. Here is the full parts list:

Software

Operating System

After building the server, I spent the next few weeks testing different operating systems in order to find the best one for me. The main requirements I had were as follows:

  1. There must be a large community willing to help when things go wrong
  2. Must be easy to learn how to use and configure
  3. Must support Docker and RAID in order to provide redundancy for my storage drives in case any of them die

The operating systems I tested include Ubuntu Server, Rocky Linux, Proxmox, Casa OS, and TrueNAS Scale.

TrueNAS Scale was the first OS I tested, and I hoped it would be the last. This Operating system has a great community of people willing to help, a user-friendly operating system that was fairly easy to use, and it supported docker and RAID. Unfortunately, however, I ran into some issues. I struggled mightily getting SMB (or any file sharing service) working properly, which I needed in order to remotely move files from my PC to the server. I addition, The library of Docker containers was fairly small, even with 3rd party libraries like TrueCharts. Because of this, I decided to move on from it.

Next up came CasaOS. This is basically just a wrapper on top of Ubuntu that makes your server home page look nice. Honestly, I really liked Casa OS. It was simple and had all the benefits of using Ubuntu, which I am very familiar with. Similar to TrueNAS, however, it was difficult trying to add custom docker containers using their UI. Because of this, I decided against CasaOS.

Proxmox is another great OS, but it was a little too much for me. There is a great community around this OS, but it is built for more large-scale use cases. It was pretty daunting trying to get it set up, and I ran into issued getting RAID and docker working properly. In the end, I just wasn't very familiar with the operating system, and decided to move on from it.

Next up is Rocky Linux. Rocky Linux is a great server OS if you are used to RHEL-based Linux, and I most definitely am not. There's a great community around this OS and it was easy enough to set up and configure, but in the end it just didn't have any benefits over Ubuntu Server in my opinion.

Last on the list is Ubuntu Server. After testing out all these other operating systems, I was left wanting something raw and simple. No shiny UI over top of an existing system such as docker, just plain old Linux. I am very familiar with Ubuntu, which made it an easy choice. Additionally, Ubuntu easily has the largest community around it ready to help if anything goes wrong. It also supports RAID and Docker, which is a must for my use case.

RAID

Because I am starting with only 2 hard drives, I decided to set up RAID 1 in order to provide some security if a drive dies. The process of setting up raid was very easy because there is a walk through during the OS install process, but there are also plenty of tutorials out there if you are setting up raid after you have already installed the OS as well.

Docker

Docker setup on Ubuntu is very easy. The have a simple guide on their website with a few commands that will get you up and running in no time. Because this is a small home server, I decided to use Docker to run all my applications rather than split it between VMs, local, and Docker. This makes it simple to get each application running with a docker-compose yaml file. Here is a list of all the docker applications I am currently running:

Domain Connection

In order to access all of these applications using my domain, I am using Cloudflare Tunnels. There are a number of tutorials on this on YouTube, but if you'd like to see a more in-depth look at how I set mine up, let me know by leaving a comment below. I am a big fan of Cloudflare Tunnels because they don't require me to port forward, which adds a layer of security to my home network. I do, however, have to port forward for my Minecraft server, but Cloudflare does have a service you can pay for that will allow you to basically set up tunneling as a replacement for port forwarding, which I would definitely recommend to anyone looking into a serious public Minecraft server.

Conclusion

Building this server was a great way for me to become more familiar with the Ubuntu OS, building PCs, Docker, and Networking as a whole. If you are looking for a good project that combines Computer Science, IT, and Hardware, I would highly recommend building your own server. If you would like a more in depth look at how I did things such as Docker configs, Tunneling setup, etc., please let me know.


Comments

Name:

Comment: