Proxmox Virtual Environment (Proxmox VE) is an open-source hypervisor platform for KVM virtual machines and LXC containers, managed through a web UI on port 8006. Proxmox ships as Debian packages—you can install it with the bare-metal ISO or on top of an existing Debian 12 (Bookworm) or Debian 13 (Trixie) amd64 system when you need a custom disk layout, dual boot, or a minimal Debian base you configured yourself.
This guide walks through install Proxmox on Debian using the official Install Proxmox VE on Debian procedure: prepare Debian, fix /etc/hosts, add the pve-no-subscription repository, install the Proxmox kernel, install proxmox-ve, remove the stock Debian kernel, open the web UI, and create vmbr0. I ran the repository setup, GPG verification, and apt install -s dry-runs on Debian 13; use a dedicated server or lab VM for the kernel install and reboot steps so you do not disrupt an existing desktop system.
Tested on: Debian 13 (trixie); kernel 6.12.94+deb13-amd64; amd64; proxmox-ve 9.2.0 candidate from
pve-no-subscription(repository and dry-run verified).
Proxmox ISO installer vs installing on Debian
| Path | Best for | Trade-off |
|---|---|---|
| Proxmox VE ISO (bare metal) | New dedicated servers, homelabs, most production nodes | Less flexibility during base OS partitioning; fastest path to a working cluster node |
| Debian + Proxmox packages | Custom partitions, dual boot, pre-seeded Debian images, VPS with Debian preinstalled | You configure /etc/hosts, bridges, and storage yourself; wrong hostname or kernel leftovers cause subtle failures |
Proxmox VE 9.x aligns with Debian 13 Trixie; Proxmox VE 8.x aligns with Debian 12 Bookworm. Match the suite name in your repository file to the Debian release underneath—do not add the Trixie repository on Bookworm or vice versa.
Prerequisites
- 64-bit amd64 Debian 12 or 13 with a static IP (configure during install or afterward).
- sudo and outbound HTTP/HTTPS to
download.proxmox.comandenterprise.proxmox.com(for the signing key). wgetor cURL to fetch the repository key.- Root disk space for the Proxmox kernel, QEMU, LXC, and future VM disks—plan well beyond a minimal Debian netinst.
- 8 GB RAM or more for comfortable VM hosting (less works for a control-plane-only lab).
- Secure Boot disabled if the Proxmox kernel fails with
error: bad shim signature(wiki troubleshooting). - Only standard system utilities and SSH server during Debian install—skip a desktop environment; Proxmox brings its own QEMU and LXC stack.
Step 1: Install a minimal Debian base
Install Debian from the official netinst or full ISO. During software selection, enable SSH server and standard system utilities only.
After first boot, update the system with APT:
sudo apt update && sudo apt full-upgrade -yReboot if the upgrade installed a new Debian kernel:
sudo rebootConfirm architecture and release:
. /etc/os-release && echo "$PRETTY_NAME"
dpkg --print-architecture
uname -rOn the test host:
Debian GNU/Linux 13 (trixie)
amd64
6.12.94+deb13-amd64Step 2: Map the hostname to your real IP in /etc/hosts
Proxmox expects hostname --ip-address to return a reachable, non-loopback address. A fresh Debian install often leaves only 127.0.1.1:
hostname
hostname --ip-address
cat /etc/hostsBefore fixing hosts, the test machine returned:
debian
127.0.1.1
127.0.0.1 localhost
127.0.1.1 debianEdit /etc/hosts and add your static IP with the short hostname and FQDN. Example when the IP is 192.168.15.77 and the hostname is prox4m1:
sudo nano /etc/hosts127.0.0.1 localhost
192.168.15.77 prox4m1.proxmox.com prox4m1
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allroutersRemove the hostname from the 127.0.1.1 line if it is still there—keeping both invites ambiguity.
Verify:
hostname --ip-addressYou want your LAN IP (for example 192.168.15.77), not 127.0.0.1 or 127.0.1.1 alone.
Step 3: Add the Proxmox VE repository
Proxmox publishes a no-subscription repository for community use. Pick the block that matches your Debian release.
Debian 13 Trixie (Proxmox VE 9.x) — deb822 format
Trixie uses the deb822 .sources format recommended by Proxmox:
sudo mkdir -p /usr/share/keyrings
sudo wget https://enterprise.proxmox.com/debian/proxmox-archive-keyring-trixie.gpg \
-O /usr/share/keyrings/proxmox-archive-keyring.gpgVerify the key fingerprint matches the official Trixie wiki:
sha256sum /usr/share/keyrings/proxmox-archive-keyring.gpg
md5sum /usr/share/keyrings/proxmox-archive-keyring.gpgOn Debian 13:
136673be77aba35dcce385b28737689ad64fd785a797e57897589aed08db6e45 /usr/share/keyrings/proxmox-archive-keyring.gpg
77c8b1166d15ce8350102ab1bca2fcbf /usr/share/keyrings/proxmox-archive-keyring.gpgCreate the repository source:
sudo tee /etc/apt/sources.list.d/pve-install-repo.sources << 'EOF'
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.list entries to deb822 with sudo apt modernize-sources before adding Proxmox—see the Debian wiki note.
Debian 12 Bookworm (Proxmox VE 8.x) — one-line list format
For Bookworm, use the .list style from the Bookworm wiki:
sudo wget https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg \
-O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg
sha512sum /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpgExpected checksum:
7da6fe34168adc6e479327ba517796d4702fa2f8b4f0a9833f5ea6e6b48f6507a6da403a274fe201595edc86a84463d50383d07f64bdde2e3658108db7d6dc87 /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpgAdd the repository:
echo "deb [arch=amd64] http://download.proxmox.com/debian/pve bookworm pve-no-subscription" \
| sudo tee /etc/apt/sources.list.d/pve-install-repo.listUse bookworm as the suite on Debian 12—not trixie.
Refresh package indexes
sudo apt update && sudo apt full-upgrade -yConfirm Proxmox packages are visible:
apt-cache policy proxmox-ve proxmox-default-kernelOn Debian 13 with the Trixie repository:
proxmox-ve:
Installed: (none)
Candidate: 9.2.0
Version table:
9.2.0 500
500 http://download.proxmox.com/debian/pve trixie/pve-no-subscription amd64 Packages
proxmox-default-kernel:
Installed: (none)
Candidate: 2.1.0
Version table:
2.1.0 500
500 http://download.proxmox.com/debian/pve trixie/pve-no-subscription amd64 PackagesStep 4: Install the Proxmox kernel and reboot
Install the Proxmox kernel before the full proxmox-ve stack:
sudo apt install proxmox-default-kernel -yDry-run on Debian 13 showed these packages would install:
Installing:
proxmox-default-kernel
Installing dependencies:
proxmox-kernel-7.0 proxmox-kernel-7.0.12-1-pve-signed pve-firmwareReboot into the new kernel:
sudo rebootAfter reboot, confirm you are on a *-pve kernel:
uname -rYou should see a version such as 6.14.x-y-pve or 6.8.x-y-pve depending on the current Proxmox release—not 6.12.x+deb13-amd64.
Step 5: Install Proxmox VE packages
With the PVE kernel running, install the meta package and supporting daemons:
sudo apt install proxmox-ve postfix open-iscsi chrony -y| Package | Role |
|---|---|
proxmox-ve |
Meta package pulling pve-manager, QEMU, LXC, ZFS tools, and cluster services |
postfix |
Mail relay for cron and cluster notifications—choose local only if you have no SMTP relay |
open-iscsi |
iSCSI initiator for shared storage |
chrony |
NTP time sync (Proxmox recommends against systemd-timesyncd on servers) |
During Postfix configuration, pick Satellite system when you have an internal mail relay; otherwise Local only is fine.
A dry-run on Debian 13 resolved proxmox-ve 9.2.0 and pulled pve-manager, qemu-server, pve-container, and related dependencies—hundreds of packages total. Allow time and disk space for the transaction.
List what Proxmox installed afterward with list installed packages on Debian:
dpkg -l 'pve-*' 'proxmox-*' | grep '^ii'Step 6: Remove the Debian stock kernel
Proxmox ships its own kernel. Keeping linux-image-amd64 can cause upgrade conflicts on Debian point releases.
On Debian 13:
sudo apt remove linux-image-amd64 'linux-image-6.12*' -yOn Debian 12:
sudo apt remove linux-image-amd64 'linux-image-6.1*' -yUpdate GRUB when you boot with GRUB (skip on pure systemd-boot installs):
sudo update-grubStep 7: Remove os-prober (recommended)
os-prober scans partitions—including VM disks—and can add unwanted GRUB entries on a dedicated hypervisor:
sudo apt remove os-prober -ySkip this only when Proxmox shares the machine as a dual-boot host beside another OS.
Step 8: Open the Proxmox web interface
From a browser on your network:
https://YOUR-SERVER-IP:8006/Replace YOUR-SERVER-IP with the address you mapped in /etc/hosts. The UI uses a self-signed TLS certificate—accept the browser warning on first visit.
Log in with:
- Username:
root - Realm:
Linux PAM standard authentication - Password: your Debian
rootpassword
If the page does not load, check that port 8006/tcp is allowed on any host firewall and that pveproxy is running:
sudo systemctl status pveproxy pvedaemon pve-cluster --no-pagerStep 9: Create the vmbr0 Linux bridge
New installs need a Linux bridge so VMs share the host NIC. In the web UI:
- Select your node → System → Network.
- Add a Linux Bridge named
vmbr0. - Attach your physical interface (for example
enp0s3oreth0). - Apply the configuration.
The default bridge example in the Proxmox wiki shows the usual vmbr0 layout with your static IP on the bridge instead of the raw NIC.
vmbr0 exists, guests may not reach your LAN even though the host SSH session works on the physical interface.
Step 10: Adjust APT repositories after first login
Proxmox enables the enterprise repository during install. Without a subscription key, apt update shows a warning and the web UI nags about licensing.
For homelabs using the community repository, disable enterprise and keep no-subscription:
sudo sed -i 's/^deb/#deb/' /etc/apt/sources.list.d/pve-enterprise.list
sudo apt updateIf you purchase a subscription, upload the key in the web UI under Datacenter → Subscription, then re-enable pve-enterprise and remove the install helper file:
# Trixie (deb822 install helper)
sudo rm /etc/apt/sources.list.d/pve-install-repo.sources
# Bookworm (one-line install helper)
sudo rm /etc/apt/sources.list.d/pve-install-repo.listRun a final upgrade:
sudo apt full-upgrade -yTroubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
ipcc_send_rec[1] failed: Connection refused |
Hostname resolves to loopback | Fix /etc/hosts per Step 2; rerun hostname --ip-address |
error: bad shim signature at boot |
Secure Boot on | Disable Secure Boot in firmware (wiki) |
| DNS breaks inside Proxmox UI | resolv.conf overwritten |
Remove packages like resolvconf / rdnssd that regenerate /etc/resolv.conf; let Proxmox manage DNS |
Web UI unreachable on :8006 |
Firewall or pveproxy stopped |
Open TCP 8006; sudo systemctl restart pveproxy |
apt update enterprise errors without a key |
pve-enterprise enabled |
Comment out pve-enterprise.list (Step 10) |
Network slow to start with ntpsec |
Known hook issue on some hardware | Prefer chrony as the wiki recommends (Bookworm note) |
References
- Install Proxmox VE on Debian 13 Trixie — official procedure for PVE 9 on Trixie
- Install Proxmox VE on Debian 12 Bookworm — official procedure for PVE 8 on Bookworm
- Proxmox VE Administration Guide — install on Debian
- APT command in Linux — update, install, and upgrade workflows
- Install a deb file on Debian — useful when handling standalone
.debpayloads alongsideapt - List installed packages on Debian — audit
pve-*andproxmox-*packages after install
Summary
For most new hardware, start with the Proxmox VE ISO. When you already run Debian 12 or 13 and need full control over partitioning or dual boot, add the official pve-no-subscription repository, verify the GPG key checksum, install proxmox-default-kernel, reboot, then install proxmox-ve. Fix /etc/hosts before you install—127.0.1.1 alone is the usual reason for ipcc_send_rec errors later. Remove the Debian kernel and os-prober, browse to https://your-ip:8006, create vmbr0, and disable pve-enterprise if you rely on the community repository. I verified repository setup and package candidates on Debian 13; run the kernel install and reboot on a dedicated lab host so you are not surprised when GRUB switches to the *-pve kernel.

