Setting Up My First Homelab: The Journey Begins Link to heading

I’ve been wanting to set up a homelab for a while but never quite got around to it. Last year, I ordered a mini-PC intending to experiment before possibly expanding to a 2-4 node cluster. Those plans changed when it became my son’s first desktop computer. However, an opportunity finally presented itself when my wife needed a new computer for her research. After setting her up with a more powerful laptop, I reclaimed my old desktop - a surprisingly capable machine despite its being almost 10 years old. It sports 32GB of memory, a 500GB SSD, a 1TB HDD, GeForce GTX 1070, and an i7-6700K CPU. Proxmox seemed to be the go to solution for homelabs based on my research and recommendations from peers who also have homelabs.

Initial Setup: Proxmox Installation Link to heading

After some research, I decided to use Ventoy to install Proxmox. While there are reports of compatibility issues between certain Proxmox and Ventoy versions, I encountered no problems using Ventoy 1.1.0 and Proxmox 8.3.0. The installation process is well-documented elsewhere, so I’ll focus on my specific experience and challenges.

During installation, I selected the 1TB HDD as the target drive and configured a static IP address. After rebooting, I could access the WebUI at the specified IP on port 8006. One quirk worth mentioning: while the setup asks for both username and password, you actually need to log in as “root” in the WebUI - something not immediately obvious.

Storage Configuration Challenges Link to heading

Linux disk management has always been a pain point for me. Despite selecting a 1TB drive during installation, I initially only saw about 100GB of free space in Proxmox. This turned out to be just the OS partition where Proxmox stores images and backups. Getting the second drive properly configured required some additional steps.

First, I needed to prepare the SSD (/dev/sdb):

apt update
apt install parted
parted /dev/sdb mklabel gpt
parted /dev/sdb mkpart primary 0% 100%

Using the vgs command (which shows volume groups), I could see an existing Proxmox volume group called ‘pve’. When I checked its logical volumes with lvs pve, I discovered a logical volume named ‘data’ that only had 800GB allocated - not utilizing my full drive capacity. To incorporate the SSD, I used these commands:

pvcreate -ff /dev/sdb1 # create a physical volume
vgextend pve /dev/sdb1 # add the new physical volume to pve volume group
lvremove pve/data # delete logical volume data
lvcreate -l +100%FREE -T pve/data # recreate logical volume data

While I could have used lvextend instead of removing and recreating the volume, starting fresh made sense since it was empty.

Default Networking Link to heading

For now, I’m sticking with Proxmox’s default networking configuration which sets up a Linux bridge (vmbr0) connected to my physical network adapter. While there are more advanced networking options available - like VLANs or additional bridges - the defaults work well for getting started and I can always reconfigure later as my needs evolve.

Preparing for VMs Link to heading

With storage configured, I needed ISOs for creating VMs. While Proxmox’s WebUI offers ISO management through the local storage section, you can also download them directly via shell in the WebUI or SSH:

cd /var/lib/vz/template/iso
wget https://releases.ubuntu.com/oracular/ubuntu-24.10-live-server-amd64.iso

My next step is creating four VMs, each with 2 CPU cores and 8GB of memory, to build a Kubernetes cluster using k0s.