Proxmox VE is a Debian-based hypervisor that manages LXC containers and KVM virtual machines through a web UI and REST API. Installing it is straightforward, but there are a handful of decisions during setup — particularly around networking and disk layout — that affect everything that comes after. This guide walks through each step with context for why you’re making each choice.
This is part of the Building a Homelab series. If you haven’t chosen your hardware yet, start with the hardware guide.
Before you start
You’ll need:
- The machine(s) you’re installing Proxmox on, connected to your switch
- A USB drive (8 GB or larger) — its contents will be erased
- A monitor and keyboard for each machine (just for installation — SSH and the web UI take over after)
- Your planned static IP addresses for each node
- Your network’s gateway IP (usually your router’s IP, e.g.
192.168.1.1or10.0.0.1) - The subnet mask — almost certainly
255.255.255.0(/24)
Proxmox installation erases the target disk completely. Confirm you’re installing to the correct disk before proceeding. If the machine has any data you want to keep, back it up first.
Task 1: Download Proxmox VE and create a bootable USB
Go to proxmox.com/downloads and download the latest Proxmox VE ISO Installer. As of mid-2026, this is Proxmox VE 9.x. The file is ~1.2 GB.
Do not download the “Proxmox VE No-Subscription” or “Proxmox Backup Server” ISO — those are different products. You want Proxmox VE.
On Linux/macOS:
# Find your USB drive device name
lsblk # look for your USB drive — typically /dev/sdb or /dev/sdX
# Write the ISO (replace /dev/sdX and the filename)
dd bs=1M conv=fdatasync if=proxmox-ve_9.2-1.iso of=/dev/sdX status=progress
# Eject safely
sync
On Windows: Use Rufus (free, no install required). Select the ISO, select your USB drive, leave all settings at default, click Start.
On macOS (graphical): Use balenaEtcher. Drag the ISO, select the USB drive, click Flash.
Double-check the device name before running dd. Writing to the wrong device will silently overwrite your data. lsblk lists disks with their sizes — your USB drive should be obviously different from your main disk.
Task 2: Install Proxmox VE
Plug the USB drive into the machine and power it on. You need to boot from USB instead of the internal disk. Most machines use one of these:
- F12 — boot menu (HP EliteDesk, most HP machines)
- F10 — HP BIOS setup → Boot Order
- F2 or Del — BIOS/UEFI setup
- Escape — boot menu (some HP and Dell machines)
Press the key repeatedly as soon as you power on — there’s only about 1 second before the machine boots from the internal disk.
In the HP EliteDesk G4 specifically: press F9 for the boot device selection menu. Select your USB drive.
The Proxmox boot menu appears:
Install Proxmox VE (Graphical)
Install Proxmox VE (Terminal UI)
Install Proxmox VE (Graphical, no USB boot order check)
Advanced OptionsSelect Install Proxmox VE (Graphical). If the graphical installer fails to load (blank screen, GPU issues), restart and try Terminal UI — it’s identical in terms of configuration options, just text-based.
Click I agree on the EULA screen.
The installer shows available disks. Select your NVMe SSD.
Options to check:
- Filesystem:
ext4is the correct default for most setups.ZFSis an option here but requires more RAM and adds complexity — use ext4 unless you have a specific reason for ZFS. - Leave all other disk options at their defaults.
The installer creates two storage pools: local (directory storage for ISOs and templates at /var/lib/vz) and local-lvm (LVM thin pool for VM and CT disks). This is the correct layout for a homelab. Don’t change it.
Select your country and timezone. The installer uses this to set the clock and keyboard layout.
This password is the root password for both the Proxmox web UI and SSH. Requirements:
- At least 8 characters
- Mixed case, numbers, and symbols recommended
- You cannot recover this password if forgotten without console access
The email address receives system alerts. Use a real address you check.
This screen configures the network interface that Proxmox uses for its web UI and SSH. Set these carefully — getting them wrong means you can’t access the machine after reboot.
| Field | Value | Notes |
|---|---|---|
| Management Interface | (auto-selected NIC) | Leave as-is — it selects the first active NIC |
| Hostname (FQDN) | pvelab01.homelab.lan |
Use your node number: pvelab01, pvelab02, etc. |
| IP Address | 10.0.0.70 |
Your planned static IP for this node |
| Netmask | 255.255.255.0 |
Standard /24 subnet mask |
| Gateway | 10.0.0.1 |
Your router’s IP |
| DNS Server | 10.0.0.1 |
Your router or a public DNS like 1.1.1.1 |
The IPs above are from the example cluster in these guides. Substitute your own network’s subnet. If your home network is on 192.168.1.x, use addresses in that range — e.g., 192.168.1.100 for pvelab01, .101 for pvelab02, etc.
How to find your router’s IP: On any connected device, run ip route | grep default (Linux/Mac) or ipconfig and look for “Default Gateway” (Windows). That’s your gateway IP.
The installer shows a summary of all settings. Verify:
- ✓ Correct disk selected
- ✓ IP address matches your plan
- ✓ Gateway is your router’s IP
- ✓ Hostname includes the node number
Click Install. The installation takes 3–6 minutes. The machine reboots automatically when it completes.
When you see “Installation successful! Please remove the installation medium.” — remove the USB drive. The machine will boot into Proxmox from the NVMe.
Task 3: Access the Proxmox web UI
On your laptop or desktop (connected to the same network), open a browser and go to:
https://10.0.0.70:8006(Replace with your node’s actual IP.)
You’ll see a browser security warning about an untrusted SSL certificate — this is expected. Proxmox uses a self-signed certificate by default. Click Advanced → Proceed (Chrome) or Accept the Risk (Firefox).
Log in with:
- Username:
root - Password: the password you set during installation
- Realm:
Linux PAM standard authentication
A dialog appears: “You do not have a valid subscription for this server.”
Click OK to dismiss it. This appears on every login until you either buy a subscription ($150–$1,200/year per node, for enterprise support) or suppress it. You’ll suppress it in the next task.
Task 4: Essential post-install configuration
Proxmox ships configured for the enterprise package repository, which requires a paid subscription. Without switching this, apt upgrade will fail with an authentication error.
SSH to the node or use the web UI terminal (Node → Shell):
# Disable the enterprise repository
sed -i 's/^deb/#deb/' /etc/apt/sources.list.d/pve-enterprise.list
# Disable the enterprise ceph repository (if present)
[ -f /etc/apt/sources.list.d/ceph.list ] && sed -i 's/^deb/#deb/' /etc/apt/sources.list.d/ceph.list
# Add the free no-subscription repository
echo "deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list
# Update and upgrade
apt update && apt dist-upgrade -y
The upgrade may take 5–10 minutes depending on your internet connection.
The subscription dialog on every login is annoying. Suppress it:
sed -i.bak "s/if (res === null || res === undefined || !res || res['status']/if (false/g" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
# Restart the web service to apply
systemctl restart pveproxy
Refresh the Proxmox web UI — the nag dialog should no longer appear.
This edit may be overwritten by a Proxmox package update. If the nag reappears after an upgrade, re-run the command.
Time synchronisation is important for Proxmox cluster operations — Corosync requires clocks to be within a few seconds of each other across nodes.
# Check current time sync status
timedatectl status
# Should show: "System clock synchronized: yes"
# If not, enable it:
systemctl enable --now systemd-timesyncd
timedatectl set-ntp true
Logging in as root for day-to-day operations is a security risk. Create a dedicated admin user:
# Create the Linux user
useradd -m -s /bin/bash youradmin
passwd youradmin # set a password
# Create the Proxmox user with admin role
pveum user add youradmin@pam
pveum aclmod / -user youradmin@pam -role Administrator
You can now log into the Proxmox web UI as youradmin@pam instead of root. Keep the root password secure but use it only when necessary.
Task 5: Install on remaining nodes
Run through Tasks 1–4 on each remaining machine. The only things that change per node:
| Node | Hostname | IP Address |
|---|---|---|
| pvelab01 | pvelab01.homelab.lan | 10.0.0.70 |
| pvelab02 | pvelab02.homelab.lan | 10.0.0.71 |
| pvelab03 | pvelab03.homelab.lan | 10.0.0.72 |
| pvelab04 | pvelab04.homelab.lan | 10.0.0.73 |
Everything else — root password, repository fix, NTP — is identical.
After installing on all nodes, verify you can access each node’s web UI from your laptop and that each can ping the others.
Verifying your installation
# Check Proxmox version
pveversion -v
# Check storage pools
pvesm status
# Check system services are running
systemctl status pveproxy pvedaemon pvestatd
# Check network configuration
ip addr show
Expected output from pvesm status: two entries — local (directory) and local-lvm (LVM thin pool) — both showing “active.”
What’s installed and where
After a fresh Proxmox install, here’s what exists on the system:
| Path | What it is |
|---|---|
/var/lib/vz/ |
local storage — ISOs, templates, backups |
/etc/pve/ |
Cluster configuration files (synced across nodes) |
/etc/network/interfaces |
Network configuration |
/etc/apt/sources.list.d/ |
Package repositories |
/var/log/pve/ |
Proxmox service logs |
The Proxmox web UI at port 8006 is a React application backed by a REST API. Every action you take in the UI is a standard HTTP API call — the same API the Proxmox CLI tools (pveum, pvecm, pct, qm) use.
Next steps
With Proxmox installed on all nodes, the next step is forming a cluster — connecting the nodes so they can share management, resources, and live migration capabilities.
→ Continue to: Forming a Proxmox Cluster: Quorum, Corosync, and Node Joining
This post contains Amazon affiliate links (tag: buildahomelab-20). I earn a small commission on qualifying purchases at no extra cost to you.