Homelab · Proxmox

Installing Proxmox VE: From ISO to First Login

A step-by-step walkthrough of turning a spare box into a Proxmox VE host, from downloading the ISO to the moment you log into the web GUI with a clean, updated system.

Quick idea: Installing Proxmox VE is a single guided process — prepare bootable media, answer a handful of disk and network questions in the installer, then spend your first five minutes as root fixing the repositories before you do anything else.
ISO Installer

A bootable Debian-based image that partitions the disk and installs the whole Proxmox VE stack in one pass.

Bare Metal

Proxmox VE installs directly onto hardware as the host OS, not as an application on top of one.

Web GUI

Once installed, almost everything is managed from https://<ip>:8006 in a browser.

What You’re Actually Installing

Proxmox VE is a Debian-based hypervisor platform: it installs like an operating system, then gives you a web console to run KVM virtual machines and LXC containers on top of it. If you want the fuller picture of what it is and how it compares to ESXi, XCP-ng, or Hyper-V, that ground is already covered in the Proxmox VE overview. This post picks up one step earlier: getting a blank box turned into a running, patched Proxmox host.

Think of the installer as a Debian installer wearing a Proxmox hat. It asks the same kinds of questions any Linux install asks — disk, filesystem, network, timezone — then lays down the KVM/LXC stack and the cluster-aware management daemons on top, so there’s nothing left to configure manually before you can create your first VM.

What You Need Before You Start

Proxmox VE will boot on very little hardware, but “will boot” and “will hold up with real VMs on it” are different bars. The table below separates the minimum needed to evaluate it from what’s recommended once you’re running anything you care about.

Resource Minimum (Evaluation) Recommended (Production)
CPU64-bit Intel/AMD with VT-x or AMD-VSame, plus VT-d/AMD-Vi if you plan to use PCI passthrough
RAM1 GB2 GB+ for the host itself, plus roughly 1 GB per TB of storage if you’re running ZFS or Ceph
StorageAny hard driveSSDs with power-loss protection; hardware RAID with a battery-backed cache, or no RAID at all if you’re using ZFS
NetworkOne NICRedundant Gbit NICs, more if your storage or cluster setup calls for it
Important: ZFS and Ceph do not work on top of a hardware RAID controller. Running ZFS over hardware RAID is unsupported and can cause data loss — pick one or the other, not both.

Step 1: Download and Verify the ISO

The current release is Proxmox VE 9.2, built on Debian 13 “Trixie”, distributed as proxmox-ve_9.2-1.iso from the official downloads page. Every ISO on that page ships with a published SHA256 checksum next to the download link — verify against whichever value is current for the file you actually downloaded, since it changes with every point release.

# Linux/macOS: compute the checksum and compare it to the value on the downloads page
sha256sum proxmox-ve_9.2-1.iso

# Windows PowerShell equivalent
Get-FileHash .\proxmox-ve_9.2-1.iso -Algorithm SHA256

Step 2: Build Bootable Installation Media

The ISO is a hybrid image, which changes how you’re allowed to write it to a USB stick. On Linux, dd writes it directly. On Windows, Rufus needs to be told explicitly to use DD mode rather than its default ISO mode, or the stick won’t boot. UNetbootin is called out by Proxmox’s own documentation as incompatible — don’t use it here.

# Linux — identify the USB device first with lsblk before and after
# inserting it, so you know XYZ for certain
lsblk

# Write the ISO directly to the USB device (NOT a partition, e.g. /dev/sdb not /dev/sdb1)
dd bs=1M conv=fdatasync if=./proxmox-ve_9.2-1.iso of=/dev/XYZ

# macOS — the ISO must be converted to a .dmg first
hdiutil convert proxmox-ve_9.2-1.iso -format UDRW -o proxmox-ve_9.2-1.dmg

# Identify the disk with diskutil list before/after inserting the USB drive,
# then write using the raw device (rdiskX) for speed
sudo dd if=proxmox-ve_9.2-1.dmg bs=1M of=/dev/rdiskX
Production note: Double-check the target device before running dd. It overwrites whatever device you point it at with no confirmation prompt, and there’s no undo. On Windows, use Rufus, select the ISO, click “No” when it asks about downloading a different GRUB version, then choose DD mode in the following dialog.

Step 3: Prep the Box to Boot It

Before you plug the USB stick in, go into the system’s BIOS/UEFI setup and confirm two things: virtualization is enabled (Intel VT-x or AMD-V, sometimes buried under a “CPU Configuration” or “Advanced” menu), and the boot order or one-time boot menu will let you select the USB drive. If Secure Boot is enabled and you’re not on a build that supports it, disable it — otherwise the installer’s boot loader can be rejected before it ever runs.

Step 4: Walk Through the Graphical Installer

Once it boots, the installer moves through a fixed sequence of screens. None of them take long individually, but a wrong answer on the disk screen is the one that’s expensive to undo, since the installer wipes the target drive.

Screen What You Enter Notes
Target diskSelect the disk(s) and filesystemext4 is the safe default and uses LVM; xfs also uses LVM; ZFS gives you RAID0/1/10/Z1/Z2/Z3 in software but should not sit on a hardware RAID controller
Location and time zoneCountry, time zone, keyboard layoutCountry selection is also used to pick a nearby package download mirror
AdministrationRoot password (8+ characters) and an email addressThe email address is where the host sends system notifications, not a login credential
Management networkHostname (FQDN), IPv4 or IPv6 address, gateway, DNS serverYou configure one stack, not both — dual-stack networking is a post-install task
SummaryConfirm and start the installThis is the last point before the target disk is wiped; installation itself takes a few minutes
Key rule: If you’re not sure which filesystem to pick, choose ext4. It’s the documented safe default, works with any disk controller, and you can always add ZFS storage pools for VM data after the host is up.

Advanced users can override defaults on the disk screen — hdsize, swapsize, maxroot, and minfree for LVM, or ashift and compress for ZFS — but the defaults are sensible enough that most installs never need to touch them.

Step 5: First Login to the Web GUI

After the install finishes and the box reboots, everything from here on happens at https://<ip-address>:8006 from any machine on the same network. The certificate is self-signed, so the browser will warn you the first time — that’s expected on a fresh install, not a sign anything is wrong. Log in as root with the password you set during installation.

Expected behaviour: On first login you’ll see a “No valid subscription” popup. That’s normal on every install that hasn’t attached a paid subscription key — it’s a reminder, not an error, and it goes away once you switch to the no-subscription repository in the next step.

Step 6: Fix the Repositories Before You Touch Anything Else

A default install points at the enterprise repository, which needs a paid subscription key to pull updates. Before you create a single VM, switch to the no-subscription repository so apt update actually works. On Proxmox VE 9 (Debian Trixie), repositories are defined in the newer .sources format, not the old .list files.

# Disable the enterprise repository by editing
# /etc/apt/sources.list.d/pve-enterprise.sources
# and adding this line to the entry:
Enabled: no

# Create /etc/apt/sources.list.d/proxmox.sources with the
# no-subscription repository for Proxmox VE 9 / Debian Trixie
cat << 'EOF' > /etc/apt/sources.list.d/proxmox.sources
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

# Pull the updated package lists and apply them
apt update
apt dist-upgrade
Practical rule: The no-subscription repository is officially intended for testing and non-production use. For a homelab it’s the normal choice; for anything you’d call production, budget for a subscription and use the enterprise repository instead.

Post-Install Checklist

Check Why It Matters
Repositories switched and apt dist-upgrade runEnterprise repo without a key means no security patches reach the host
Bridge vmbr0 present under NetworkThe installer creates this automatically — every VM’s virtual NIC attaches to a bridge like this one
Hostname resolves and matches what was set at installA mismatched hostname causes confusing certificate and cluster-join errors later
Date/time and NTP sync healthyCertificate validation and cluster consensus are both time-sensitive
Storage shows expected free space under Datacenter → StorageConfirms the disk/filesystem choice from the installer landed the way you expected

Troubleshooting Cheat Sheet

Symptom Likely Cause Fix
USB stick doesn’t bootWritten in ISO mode instead of DD mode, or created with UNetbootinRewrite with Rufus in DD mode, or use dd directly on Linux/macOS
Installer says hardware doesn’t meet requirementsMissing VT-x/AMD-V, or it’s disabled in firmwareEnable virtualization support in BIOS/UEFI and retry
apt update fails with 401 or subscription errorsEnterprise repository still enabled without a valid keySet Enabled: no in pve-enterprise.sources and add the no-subscription repository
Can’t reach https://<ip>:8006Wrong IP, host still booting, or a firewall blocking port 8006Confirm the IP from the console, and check any upstream firewall/router rules for TCP 8006
Browser flags an untrusted certificateProxmox generates a self-signed certificate by defaultExpected on a fresh install; accept the warning, or later replace it with a CA-issued certificate
Installation fails partway throughBad media (checksum mismatch) or a failing diskRe-verify the ISO’s SHA256, rewrite the USB stick, and check disk health before retrying

Final Thoughts

Everything up to first login is mechanical: prepare the media correctly, answer the installer’s questions deliberately on the disk and network screens, and the rest follows. The part that actually determines whether the host is usable long-term happens in the five minutes right after — fixing the repositories so the system can patch itself, and confirming the network bridge and storage came up the way you expected.

From here, the box is a Proxmox host in the full sense: reachable over the web GUI, patchable, and ready to have its first VM or container created on it.

Key takeaway: A Proxmox install isn’t done at first login — it’s done once apt dist-upgrade runs clean against the no-subscription (or enterprise) repository and vmbr0 shows up under Network with the IP you expect.
Next in this series

With the host installed and patched, the natural next step is creating the first VM and container, and setting up storage pools properly — covered in more depth in the Proxmox VE overview‘s CLI tooling section.