Installing Proxmox VE 9 takes about 20 minutes on a physical server or on a dedicated VDS with nested virtualization support. In this guide we will walk through the whole process, from downloading the ISO to the first login to the web interface.
Step 1: Downloading the ISO image
Download the official ISO from the Proxmox website:
https://www.proxmox.com/en/downloads/proxmox-virtual-environment/iso
The current version is Proxmox VE 9.0 (the file is about 1.2 GB). Verify the SHA256 checksum after downloading.
Step 2: Creating a bootable USB
On Linux/macOS use dd:
# Find the USB device
lsblk
# Write the ISO (replace /dev/sdX with your USB)
dd if=proxmox-ve_9.0-1.iso of=/dev/sdX bs=1M status=progress
On Windows use Rufus or Balena Etcher.
Step 3: The installation process
- Boot from the USB and select Install Proxmox VE (Graphical)
- Accept the license agreement
- Select the target disk for the installation
- Choose the Filesystem:
ZFS (RAID-1)is recommended if you have two disks
Step 4: Network configuration
| Parameter | Description | Example |
|---|---|---|
| Management Interface | Network adapter used for management | eno1 |
| Hostname (FQDN) | Fully qualified host name | pve1.example.com |
| IP Address (CIDR) | IP with netmask | 192.168.1.100/24 |
| Gateway | Default gateway | 192.168.1.1 |
| DNS Server | DNS server | 8.8.8.8 |
Step 5: Finishing the installation and the first login
After the reboot, open in your browser:
https://IP-ADDRESS:8006
Login: root, password — the one you set during the installation. The browser will show a warning about the self-signed certificate — this is normal.
apt update && apt dist-upgrade -y
Disabling the no-subscription notice
If you do not use a paid subscription, remove the daily pop-up window:
sed -i.bak "s/data.status !== 'Active'/false/" /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js
systemctl restart pveproxy
Adding the no-subscription repository
# Disable the enterprise repository
echo "# disabled" > /etc/apt/sources.list.d/pve-enterprise.list
# Add the free repository
echo "deb http://download.proxmox.com/debian/pve trixie pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list
apt update && apt dist-upgrade -y
Installation and first-login problems
Three situations that cause a new node's installation to fail on the first attempt — all three are more common on non-standard hardware or inside virtualization than on a plain server with a single pair of disks.
Waiting for /dev to be fully populated ...
error: no such device: root
This site can't be reached - connection refused (https://IP:8006)
- Waiting for /dev to be fully populated: typical on servers with hardware RAID or NVMe in passthrough mode inside nested virtualization. Wait a minute or two, or rebuild the initramfs after the first boot:
update-initramfs -u. - no such device: root (grub rescue): the bootloader is installed on a different disk than the one marked bootable in the BIOS/UEFI, or one of the ZFS mirror disks is disconnected. Check the boot order and reinstall the bootloader on every mirror disk:
proxmox-boot-tool init /dev/sdb2. - connection refused on :8006:
pveproxyis not running, or the network interface selected during installation is not up. Log in through the local console and checksystemctl status pveproxyandip a.
When the standard installation is not the right fit
The standard installer expects bare metal with direct disk access — three cases require a different approach.
- A server with a hardware RAID controller and no HBA/JBOD mode: the installer will not see individual disks for ZFS — switch the controller to HBA mode, or use ext4/LVM on top of the ready-made array.
- Virtualization inside a cloud provider without nested virtualization enabled: KVM will not start inside the VM. Before installing, check
egrep -c '(vmx|svm)' /proc/cpuinfo— a zero means you need to enable nested virtualization with the provider. - Moving between major versions (for example, 8 to 9): use
apt dist-upgradefollowing the official procedure, not a clean reinstall — otherwise VM configurations and cluster keys are lost.
Verifying the installation result
# Version and status of key services
pveversion -v
systemctl status pve-cluster pvedaemon pveproxy
# Local web interface availability
curl -k -I https://127.0.0.1:8006
# ZFS pool state, if ZFS was chosen during installation
zpool status
If all three services are active, curl returns HTTP/1.1 200 OK, and the ZFS pool is ONLINE, the installation completed correctly. The next step is creating your first VM, covered in creating a virtual machine.