[Tutorial] Setting up a Homelab
[Tutorial] Setting up a Homelab
In the modern world of cloud computing and a handful of big tech companies dominating the internet, there are several reasons you might consider turning to Homelabbing and self-hosting. I won't try to convince you here that this is the right move for you, but I will briefly outline some common reasons. The first and most obvious is privacy. Self-hosting means that your data can live on your personal server inside your house, not on Google or Amazon's servers. Another reason is providing yourself a safe environment to test configurations, learn new technologies, and make mistakes. Self-hosting free and open source software can also be a cost saving measure. Whatever your interest in setting up a Homelab/home server is, here are a few steps to get you started.
Hardware
First thing's first: you need some kind of computer to act as the home server. Most likely, you have some old but still functional laptops lying around the house, which can be a good place to start without spending any money. If you want something with more power, there are tons of used desktops and mini-PCs available on Ebay for relatively low cost that function well. I started with an old laptop to get the hang of things before purchasing a used Lenovo Thinkcentre.
Whatever device you end up using, be sure it has ethernet access. If your device doesn't have an ethernet port, you can buy USB-to-Ethernet adapters very cheaply. Consider where your router/modem are in your home. The easiest thing is to plant your home server right by your router, but you can always run a wire into another room if necessary.
Finally, you will need a USB drive to install a new operating system onto your device. Just about any drive will do, but the process will delete everything on the USB drive, so be aware.
One caveat is that if you are using a desktop, you will need a keyboard and monitor just for setup.
Operating System
My operating system of choice is Proxmox. It is a hypervisor, which basically means that it's an operating system that allows you to create virtual machines on it. If you've used anything like VirtualBox before, this is quite similar. Proxmox is free and open source, and generally not too tough to get set up and use. Navigate to the downloads page and download the latest ISO installer. You will also need Rufus to create a bootable USB drive.
Once you have the ISO and Rufus downloaded, install and run Rufus with your USB drive plugged in. Run Rufus and follow the prompts to create your bootable USB.
You could always use a different operating system of your choice if you don't want to use virtual machines. Most likely, you'd opt for Linux of some variety (Debian, Ubuntu, Fedora, Arch). The process is the same. Download the ISO installer and create a bootable USB.
To actually install your new operating system on your device turn off the device, insert the bootable USB, then turn on the device and look for a message indicating the designated key to enter the BIOS/UEFI menu. This is often F2 or F12, but manufacturers differ in which key is designated. Some Windows machines also require manually selecting "Advanced Startup" from the Settings menu.
Once booted into the BIOS/UEFI menu, you should see your drive with the Proxmox ISO installer on it. Select that and proceed through the installation process. Once that is finished, it will display the IP address that you can access the webui console at. Sign in with the username "root" and the password of your choice.
Your First Virtual Machine
Once you access the web interface, you should see your Datacenter on the lefthand side with your now one node underneath (probably named "pve"). Expand "pve" and click the "local (pve)" storage. If you don't see something like "local (pve)", you may have to create a storage volume by navigating back to Datacenter, then Storage, then Add. Select "LVM" and be sure to include "Disk Image" as part of the content. For more detail on storage with Proxmox, check their wiki.
Once you've navigated to your storage volume, navigate to "ISO Images" on the lefthand side. You can either upload from your device or download from a URL. I used Debian Linux as an operating system for most of my Virtual Machines, but you can use what you like. With an image uploaded, select "Create VM" at the top right of the screen. This wizard is mostly self explanatory, and the defaults work for most options. I do select "Qemu Agent" under "System," but you can decide for yourself. Decide what storage you want to use (and how much), the CPU sockets and cores, and RAM. Once you create the VM, it will appear under "pve" on the lefthand navigation menu.
Select your new VM, then click "Start," then "Console." This will bring up the command line interface of your new VM where you can install that operating system. Choose whether or not you want a Desktop Environment installed and make sure to enable SSH. Once the OS is installed and your VM is up and running, you should be able to access it from your main computer by typing ssh [your username]@[ip address of the VM] and entering your password.
Services
Docker is an excellent choice for deploying services on your virtual machines. It is a containerizing solution, which basically creates an isolated environment for these services to run. At this point, it feels a bit like a computer inside a computer inside a computer, but it works surprisingly well. To install, simply follow the instructions provided by Docker.
There are so many incredible free and open source services that are very simple to deploy using Docker. I won't go into too much detail on how to use Docker, but you can either create containers with a Docker run command, or by creating a docker-compose.yml file that declares what resources you want to make. Awesome-Docker-Compose is a great resource with lots of docker-compose.yml files that you can use to host a wide variety of things.
A couple of my favorite services running on my home server are code-server (VSCode in the browser), Immich (photo and video storage), and Portainer (container management). I also host this website on my home server using Nginx Proxy Manager and Cloudflare for DNS.
Wrapup
There are tons of resources out on the internet about setting up a home server, but hopefully this was a helpful overview of one easy, cost-effective way of doing so. I do want to highlight Matt Hoff on YouTube, who has a very helpful tutorial on setting up a Linux server in particular. He also walks you through setting up a few specific services and doing some basic ssh hardening.
Published on: July 18, 2025
Last updated: July 18, 2025
Back to Blog