Homelabbing

Getting Started with Homelabbing: You Don’t Need a Server Rack

Why Homelab?

There are many reasons why you would want to get started with “homelabbing.” Maybe you want to set up an environment where you want to experiment and learn more about technology and software. Maybe you don’t want to rely on cloud or paid/subscription services and would instead like to host your own software. Or maybe you’re worried about privacy and want to get away from sharing/hosting your data with “Big Tech”. Whatever your reason, homelabbing can be a fun and rewarding hobby. But, where do you start? Is it expensive? What are the minimum pieces of equipment needed to run a homelab?

Start With the Hardware You Have

Running your own lab can be as involved or as simple as you’d like. You can get started with an old laptop you have lying around or a small Raspberry Pi. I started my homelab with an old desktop that I built back in 2006, and it’s still running a few services in my lab today. My second machine was another desktop that I built in 2009, before I repurposed it back to my development workstation. Now, I run an older enterprise-grade server, a Dell PowerEdge R730, as my main machine and two old desktops, one as a dedicated host for some of my crucial servers for redundancy and one as a NAS (Network Attached Storage) where I store backups. Your hardware depends on what services you want to run / what your needs are. Remember that you don’t need to spend a ton of money to get started, and your lab can grow over time as your skills and needs change.

After determining what you want to start hosting, you can decide what hardware you need. If you don’t have any old machines, you can check different online marketplaces, such as Facebook Marketplace, eBay, or even Reddit (there’s an entire subreddit for Homelab sales). Mini PCs are a good option to get started with if you don’t already have something because they are relatively inexpensive, usually have decent enough specs, and generally aren’t power hungry (this is something that many people who are getting started with homelabbing don’t take into account – the cost of power to run these machines).

Choosing an Operating System

Once you have your hardware, your next choice is what operating system (OS) to run. I always like to start fresh, so if you are repurposing an old machine, I would re-install the existing operating system back to factory settings or a “vanilla” / base install. It could be Windows or Linux, either way it should be a new, clean install. Choosing Windows vs. Linux depends on what you want to run and how comfortable you are learning server administration. For most homelab services, Linux is the more common choice, largely because it is free, lightweight, well documented, and widely supported by self-hosted software projects. With getting into homelabbing, your expectation should be that you will need to learn new skills, and the command line is certainly one of those skills. Many FOSS (free, open source software) applications use terminal-based commands or configurations, so by learning these skills, it opens up possibilities for you to try many different applications. The other benefit is that Linux systems are free, such as Debian and Ubuntu, both of which are very well supported and very popular “distros”.

Why Proxmox Is Popular

One very popular OS for homelabbing is Proxmox. Proxmox is an open source hypervisor operating system, which allows you to run multiple virtual machines (VMs) on the same physical hardware. This makes it very easy to experiment with different OSes, as well as have different VMs to run different services, should you need services to be segregated. Proxmox also allows you to run LXCs, or Linux Containers, as well. I won’t go into too much detail on Proxmox here, but it is a very powerful and scalable platform to build as the base of your lab. If you choose Proxmox, it becomes the base OS on the physical machine. From there, you create VMs or LXCs, and each VM gets its own guest operating system. For this, I’d recommend either Ubuntu or Debian as they are both free and very widely used.

Containers: The Fastest Way to Start Hosting

Once you have your bare metal OS installed and your VM running, you are almost ready to begin tinkering. The easiest/fastest way to start experimenting is by running different services in containers. Container runtimes, such as Docker or Podman, allow you to use the same base operating system to run multiple different applications in an isolated environment. Now, you may ask “Why would I use containers instead of multiple virtual machines?” The reason is because of the administrative overhead of creating and maintaining a VM. Each VM runs a full guest operating system, including its own kernel, virtual disk, network configuration, user accounts, updates, and resource allocation. By running containers on a single VM, the base kernel is the same, and containers can run on top of that base kernel, utilizing system resources (CPU, RAM, network, hard disk, etc.) as needed. It allows multiple services to run somewhat independently in their own “environments”, which prevents issues related to shared dependencies, such as different versions of Python or Java. I recommend using Docker as it is very widely supported and has a large support community.

Final Thoughts

With Docker running, you’re ready to begin creating containers and hosting services. A quick search will return examples of different container-ready applications, many of which are hosted on Docker Hub. For example, if you wanted to run a whole network ad-blocker, you can run PiHole. Want more privacy with a recursive DNS server – Unbound. Looking for a powerful home automation suite? Home Assistant is worth looking at. Google Photo replacement? Check out Immich. Need a media server for streaming? Take a look at Jellyfin or Plex.

I will go into more detail on how to do all of this, along with examples of what I run in my homelab in a future post. For now, I wanted to give an overview of what’s needed to get started. As you can see, you don’t need to invest a lot of money into getting started. All you need is some time, interest, and a willingness to experiment, get out of your comfort zone and learn.