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.
A bootable Debian-based image that partitions the disk and installs the whole Proxmox VE stack in one pass.
Proxmox VE installs directly onto hardware as the host OS, not as an application on top of one.
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) |
|---|---|---|
| CPU | 64-bit Intel/AMD with VT-x or AMD-V | Same, plus VT-d/AMD-Vi if you plan to use PCI passthrough |
| RAM | 1 GB | 2 GB+ for the host itself, plus roughly 1 GB per TB of storage if you’re running ZFS or Ceph |
| Storage | Any hard drive | SSDs with power-loss protection; hardware RAID with a battery-backed cache, or no RAID at all if you’re using ZFS |
| Network | One NIC | Redundant Gbit NICs, more if your storage or cluster setup calls for it |
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
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 disk | Select the disk(s) and filesystem | ext4 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 zone | Country, time zone, keyboard layout | Country selection is also used to pick a nearby package download mirror |
| Administration | Root password (8+ characters) and an email address | The email address is where the host sends system notifications, not a login credential |
| Management network | Hostname (FQDN), IPv4 or IPv6 address, gateway, DNS server | You configure one stack, not both — dual-stack networking is a post-install task |
| Summary | Confirm and start the install | This is the last point before the target disk is wiped; installation itself takes a few minutes |
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.
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
Post-Install Checklist
| Check | Why It Matters |
|---|---|
Repositories switched and apt dist-upgrade run | Enterprise repo without a key means no security patches reach the host |
Bridge vmbr0 present under Network | The installer creates this automatically — every VM’s virtual NIC attaches to a bridge like this one |
| Hostname resolves and matches what was set at install | A mismatched hostname causes confusing certificate and cluster-join errors later |
| Date/time and NTP sync healthy | Certificate validation and cluster consensus are both time-sensitive |
| Storage shows expected free space under Datacenter → Storage | Confirms the disk/filesystem choice from the installer landed the way you expected |
Troubleshooting Cheat Sheet
| Symptom | Likely Cause | Fix |
|---|---|---|
| USB stick doesn’t boot | Written in ISO mode instead of DD mode, or created with UNetbootin | Rewrite with Rufus in DD mode, or use dd directly on Linux/macOS |
| Installer says hardware doesn’t meet requirements | Missing VT-x/AMD-V, or it’s disabled in firmware | Enable virtualization support in BIOS/UEFI and retry |
apt update fails with 401 or subscription errors | Enterprise repository still enabled without a valid key | Set Enabled: no in pve-enterprise.sources and add the no-subscription repository |
Can’t reach https://<ip>:8006 | Wrong IP, host still booting, or a firewall blocking port 8006 | Confirm the IP from the console, and check any upstream firewall/router rules for TCP 8006 |
| Browser flags an untrusted certificate | Proxmox generates a self-signed certificate by default | Expected on a fresh install; accept the warning, or later replace it with a CA-issued certificate |
| Installation fails partway through | Bad media (checksum mismatch) or a failing disk | Re-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.
apt dist-upgrade runs clean against the no-subscription (or enterprise) repository and vmbr0 shows up under Network with the IP you expect.
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.