↓Skip to main content

Homelab Part 1 - HCI

·4 mins
Proxmox HCI Homelab Proxmox Linux Hypervisor Virtualization Containers
Chrisando Wagner
Author
Chrisando Wagner
25+ years across the full estate — Microsoft/VMware, OpenStack/Red Hat, cloud-native Kubernetes. These days that’s reference architectures, FinOps governance, and regulatory guardrails other teams build against. When I’m not debating gateway API controllers, I’m automating something in my homelab.
72 - This article is part of a series.

Introduction
#

Welcome to the first part of my homelab series! In this part, we will explore the architecture of my homelab infrastructure and introduce the tools we will be using.

Homelab Architecture
#

In this part we will get our hands dirty and get our host operating system ready for deployment.

Homelab:

homelab architecture

We will make use of Hyperconverged Infrastructure (HCI) to achieve a seamless and efficient deployment of our homelab infrastructure. HCI combines compute, storage, and networking resources into a single system, allowing for simplified management and optimized resource utilisation.

There are a few opensource solutions that help to ease the setup procedure.

There is Harvester an opensource HCI solution build on kubernetes, which provides a simple and efficient way to deploy and manage homelab infrastructure.

harvester arc

Harvester is a great project however it is still in its early stages and lacks some features that are available in other HCI solutions. It is also not as feature-rich as other HCI solutions such as XCP-ng (open-source ESXi-like), oVirt (KVM-based), and Proxmox (KVM-based).

proxmox logo

What is Proxmox
#

Proxmox Virtual Environment is a complete, open-source server management platform for enterprise virtualization. It tightly integrates the KVM hypervisor and Linux Containers (LXC), software-defined storage and networking functionality, on a single platform. With the integrated web-based user interface you can manage VMs and containers, high availability for clusters, or the integrated disaster recovery tools with ease.

Architecture

proxmox architecture

To be honest there is no reason except for simplicity in installation and a common debian base as all our OS images will be debian based

Download Proxmox ISO
#

wget https://enterprise.proxmox.com/iso/proxmox-ve_9.1-1.iso

Create USB image from iso

sudo dd if=./proxmox-ve_9.1-1.iso of=/dev/sdX bs=4M status=progress oflag=sync

Installation
#

Boot from ISO/USB

Select Terminal UI
Accept License
Select Install Disk
-> Advance Options
	 File system -> I use ZFS or BTRFS both RAID 1
-> continue until password prompt
	 Enter your details
-> Setup your hostname and network config
-> Install and reboot

After Reboot login to webui https://serverIP:8006 Login and select node on left then >_ Shell Enter the following commands in the web shell and not using ssh

# Configure update repo, remove subscription nag

bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/pve/post-pve-install.sh)""

Output

 / __ \ |  / / ____/  / __ \____  _____/ /_   /  _/___  _____/ /_____ _/ / /
  / /_/ / | / / __/    / /_/ / __ \/ ___/ __/   / // __ \/ ___/ __/ __ `/ / /
 / ____/| |/ / /___   / ____/ /_/ (__  ) /_   _/ // / / (__  ) /_/ /_/ / / /
/_/     |___/_____/  /_/    \____/____/\__/  /___/_/ /_/____/\__/\__,_/_/_/


This script will Perform Post Install Routines.

Start the Proxmox VE Post Install Script (y/n)? y

Select Yes to correct update sources

Screenshot From 2025-03-19 10-08-59.png
Select Yes to disable subscription repo unless you have a valid subscription

Screenshot From 2025-03-19 10-09-29.png
Add testing repo to get PVE updates

The script will run and apply the changes, reboot to complete the configuration.

Scripts thanks to the Community .

Proxmox Configurations
#

SSH Keys
#

Some other configuration I do.

# Add SSH keys
scp -r ./ssh/* root@pve:~/.ssh/

User Configurations
#

Configure user sync if required.

Storage
#

Configure your storage For Full H/A I recommend setting up ceph

Homelab Configuration Summary:
#

Server NameHostnameIP AddressStorage Network
pve1pve1.wagner.org.za192.168.100.1/16172.16.0.1/24
pve2pve2.wagner.org.za192.168.100.2/16172.16.0.2/24
pve3pve3.wagner.org.za192.168.100.3/16172.16.0.3/24

Software-Defined Network (SDN)
#

The Software-Defined Network (SDN) feature in Proxmox VE enables the creation of virtual zones and networks (VNets). This functionality simplifies advanced networking configurations and multitenancy setup. Proxmox

We will make use of SDN to issolate our clusters.

Installation
#

Lets check to make sure SDN Configuration is present.

Check for source /etc/network/interfaces.d/* in /etc/network/interfaces

for f in pve1.wagner.org.za pve2.wagner.org.za pve3.wagner.org.za; do ssh root@$f "cat /etc/network/interfaces" | if grep "source /etc/network/interfaces.d/*" | if [ $? -eq 0 ]; then echo "$f has SDN configuration"; fi; done

DHCP IPAM
#

The DHCP integration into the built-in PVE IP Address Management stack currently uses dnsmasq for giving out DHCP leases.

Install on each node.

apt update
apt install dnsmasq
# disable default instance
systemctl disable --now dnsmasq

FRRouting
#

Install on each node.

apt update
apt install frr-pythontools
systemctl enable frr.service

Now lets update our hosts files so we can seperatate our storage/sync network.

nano /etc/hosts
# Corosync network hosts
172.16.0.1 pve1-corosync.wagner.org.za pve1-corosync
172.16.0.2 pve2-corosync.wagner.org.za pve2-corosync
172.16.0.3 pve3-corosync.wagner.org.za pve3-corosync

Lets create our Zones and VNets Datacenter -> SDN -> Zones Add - > simple

zones

Now lets create our VNets Datacenter -> SDN -> VNets VNets -> Create

vnet

Subnets -> Create

subnet

Check out Part 2 Cloud Images

72 - This article is part of a series.