Installing Proxmox VE: Complete Step-by-Step Guide from USB to First Login

How to download Proxmox VE, write a bootable USB drive, install it on your hardware with the correct network settings, and complete the essential post-install configuration — including fixing the subscription nag and switching to the free package repository.

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.

Install Proxmox VE in 10 Minutes — Free Hypervisor, Zero Subscription — video walkthrough
Install Proxmox VE in 10 Minutes — video walkthrough

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.1 or 10.0.0.1)
  • The subnet mask — almost certainly 255.255.255.0 (/24)
Warning

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

1Download the Proxmox VE ISO5 min

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.

2Write the ISO to a USB drive5 min

On Linux/macOS:

Write ISO to USB (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.

Danger

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

1Boot from the USB drive3 min

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.

2Select 'Install Proxmox VE (Graphical)'1 min

The Proxmox boot menu appears:

Install Proxmox VE (Graphical)
Install Proxmox VE (Terminal UI)
Install Proxmox VE (Graphical, no USB boot order check)
Advanced Options

Select 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.

3Accept the license agreement1 min

Click I agree on the EULA screen.

4Select the target disk2 min

The installer shows available disks. Select your NVMe SSD.

Options to check:

  • Filesystem: ext4 is the correct default for most setups. ZFS is 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.
Note

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.

5Set location and timezone1 min

Select your country and timezone. The installer uses this to set the clock and keyboard layout.

6Set the root password and admin email2 min

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.

7Configure the management network — the most important step5 min

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
Use your real network IPs

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 IP / Netmask / Gateway RelateYour Network — 10.0.0.0 / 24(all devices share this subnet — the /24 means addresses .1 to .254 are all “local”)Router10.0.0.1= Gateway= DNS serverpvelab0110.0.0.70Proxmox nodepvelab0210.0.0.71Proxmox nodepvelab0310.0.0.72Proxmox nodepvelab0410.0.0.73Proxmox nodeInternet — reached via the gateway (router) when traffic leaves the subnetdefault routeNetmask 255.255.255.0 = all four nodes are on the same local network — they can reach each other directly

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.

8Review the summary and install2 min

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.

9Remove the USB drive on reboot1 min

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

1Open the Proxmox web UI from another machine2 min

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
2Acknowledge the no-subscription notice1 min

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

1Switch to the no-subscription package repository5 min

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):

pvelab01 — fix package repositories

# 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.

2Suppress the no-subscription login nag2 min

The subscription dialog on every login is annoying. Suppress it:

pvelab01 — suppress subscription warning

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.

Note

This edit may be overwritten by a Proxmox package update. If the nag reappears after an upgrade, re-run the command.

3Set the system clock to NTP2 min

Time synchronisation is important for Proxmox cluster operations — Corosync requires clocks to be within a few seconds of each other across nodes.

pvelab01 — verify NTP sync

# 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
4Create a non-root admin user5 min

Logging in as root for day-to-day operations is a security risk. Create a dedicated admin user:

pvelab01 — create 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

1Repeat the installation on pvelab02, pvelab03, pvelab0430 min

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

From pvelab01 — verify the install is healthy

# 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.