On this page
When I decided to build a proper homelab, the calculus was simple: enough compute for a real Proxmox cluster, several AI inference containers, and an electricity bill I could ignore. The answer was HP EliteDesk 705 G4 mini PCs — four of them, acquired refurbished for around $120 each.
This is the guide I wish existed when I started.
Cluster Architecture
Hardware: why EliteDesk G4
The HP EliteDesk 705 G4 packs an AMD Ryzen 5 Pro 2400G (4c/8t, 65W TDP) in a 1-litre form factor. At idle: 12–18W per node. Four nodes at full bore: ~200W — one 20A circuit, one modest UPS.
| Spec | Value | Notes |
|---|---|---|
| CPU | Ryzen 5 Pro 2400G | 4c/8t, Vega 11 iGPU (CPU inference only) |
| RAM | 2× SO-DIMM DDR4 | Expandable to 32 GB |
| Storage | M.2 2280 NVMe | 256 GB fitted; SATA bay optional |
| Networking | 1× Gigabit Intel i219-V | Wired only — WiFi ignored |
| Price | ~$120 refurbished | HP Certified Refurbished on Amazon |
The Vega 11 iGPU has BIOS-locked 512 MB shared VRAM — too small for any practical model. These nodes are CPU inference only. ROCm installation was attempted and failed on Ubuntu 24.04 (package unavailable, installer 404). Real GPU upgrade would require a discrete AMD card in a PCIe riser setup — beyond scope here.
Task 1: Prepare your hardware
Search eBay, Amazon Warehouse, or HP’s Certified Refurbished store for HP EliteDesk 705 G4 mini. Target the G4 revision (Ryzen 2400G). Avoid G3 (older A-series APU) and G5 (higher cost, similar performance for this workload).
Check each listing for:
- RAM installed (8 or 16 GB)
- NVMe included or add-on needed
- AC adapter included (65W barrel jack)
Nodes 1 and 4 serve as your primary management hosts and should have 16 GB for headroom. The G4 takes two DDR4-2400 SO-DIMMs. Remove the bottom panel (two screws), slide out the existing DIMM(s), install 2×8 GB.
Nodes 2 and 3 at 8 GB is workable for now — sufficient for Ollama 7B models and monitoring containers.
Each node needs an M.2 2280 NVMe SSD. 256 GB is adequate for the Proxmox OS plus local container storage. 512 GB gives comfortable room for more containers or snapshot storage.
Brands that consistently work in this form factor: Samsung 970 Evo, WD Blue SN570, Kingston NV2.
Task 2: Install Proxmox VE on each node
Download from proxmox.com/downloads. Write to USB with:
dd bs=1M conv=fdatasync if=proxmox-ve_9.2-1.iso of=/dev/sdX status=progress
Replace /dev/sdX with your USB device (confirm with lsblk first).
Boot from USB. The installer prompts for:
- Country/keyboard/timezone — set once
- Disk — select your NVMe; defaults are fine
- Network — this is critical: set the static IP here matching your plan
Changing a node’s management IP after cluster formation requires editing Corosync config. It’s painful. Assign your final IPs during installation — do not use DHCP.
Use an IP plan like this one (the 10.0.0.x addresses and pvelab hostnames are examples — pick four consecutive free addresses on your LAN subnet and any naming scheme you’ll remember, then use your values consistently everywhere this guide shows these):
| Node | Hostname | IP |
|---|---|---|
| Node 1 | pvelab01 | 10.0.0.70 |
| Node 2 | pvelab02 | 10.0.0.71 |
| Node 3 | pvelab03 | 10.0.0.72 |
| Node 4 | pvelab04 | 10.0.0.73 |
Proxmox ships configured for the enterprise repository, which requires a paid subscription. Switch to the free no-subscription repo before running updates:
# Proxmox VE 9 (deb822 format)
sed -i 's/^Types:/Enabled: false\nTypes:/' /etc/apt/sources.list.d/pve-enterprise.sources
cat > /etc/apt/sources.list.d/proxmox.sources <<'EOF'
Types: deb
URIs: http://download.proxmox.com/debian/pve
Suites: trixie
Components: pve-no-subscription
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
EOF
apt update && apt dist-upgrade -y
Full detail — including the PVE 8 legacy variant — is in the install guide’s post-install section.
Repeat on all four nodes before proceeding.
Task 3: Form the cluster
SSH to pvelab01 and run:
pvecm create myofficelab
pvecm status
You should see Quorum information with Nodes: 1.
On each remaining node, run the join command pointing at node 1’s IP:
pvecm add 10.0.0.70
You’ll be prompted for root@pvelab01’s password. After joining, verify on any node:
pvecm status
pvecm nodes
All four nodes should show online and quorum votes should total 4.
Open https://10.0.0.73:8006 in your browser (bypass the self-signed cert warning). Log in as root. The left sidebar should show all four nodes under your cluster name.
Task 4: Configure the firewall
In the Proxmox web UI: Datacenter → Firewall → Options → Firewall: Yes. Set input policy to DROP.
Then add rules via Datacenter → Firewall → Add:
| Direction | Action | Source | Proto | Ports | Purpose |
|---|---|---|---|---|---|
| in | ACCEPT | 10.0.0.0/24 | any | any | Full LAN access |
| in | ACCEPT | 192.168.1.0/24 | tcp | 8006,22 | Home network: web UI + SSH |
Enable the firewall after adding your allow rules, or you’ll lock yourself out. The UI applies rules immediately on save.
Understanding quorum in a 4-node cluster
Corosync requires a majority of nodes to agree before the cluster operates. In a 4-node cluster, quorum is 3.
If you need to take two nodes offline simultaneously (hardware maintenance), set expected votes first:
pvecm expected 2
# do your maintenance
pvecm expected 4 # restore after nodes rejoin
Setting expected votes to 1 disables split-brain protection entirely. Use expected 2 for 4-node maintenance, never 1.
What’s next
With the cluster running, the next step is deploying LXC containers. The first workload: a 3-node Ollama CPU inference cluster with Open WebUI load balancing across all three nodes.
Related posts:
- Homelab Hardware Guide: Choosing Your First Server — hardware selection if you’re still deciding
- Installing Proxmox VE: Step-by-Step from USB to First Login — the install walkthrough before clustering
- Proxmox Security Hardening: SSH Keys, Firewall, and More — harden the cluster before adding workloads
- Proxmox Firewall Guide: Rules, Zones, and Container Isolation — detailed firewall configuration
- Proxmox Monitoring with Prometheus and Grafana — visibility into your new cluster
- Creating Your First Proxmox VM — deploy a full VM on your new cluster
- Homelab Capacity Planning: What If a Node Dies Tonight? — simulating a failure on this exact hardware, and why local disks change the recovery story
This post contains Amazon affiliate links (tag: buildahomelab-20). I earn a small commission on qualifying purchases at no extra cost to you.
Comments
Comments are powered by GitHub Discussions — sign in with a GitHub account to join the conversation.