How to Install Proxmox VE on Debian

Install Proxmox VE on Debian 12 Bookworm or Debian 13 Trixie from the official pve-no-subscription repository: fix /etc/hosts, add the signed repo, install proxmox-default-kernel, install proxmox-ve, remove the Debian kernel, open https://your-ip:8006, and create vmbr0.

Published

Updated

Read time 9 min read

Reviewed byDeepak Prasad

Install Proxmox on Debian hero with DEBIAN GUIDE badge, Proxmox VE virtualization graphics, and repository plus web UI feature highlights

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

IMPORTANT
Installing Proxmox on Debian assumes you already configured storage (ext4, LVM, or ZFS), networking, and static IP correctly. The Proxmox admin guide notes this path is aimed at advanced users—if you only want a working hypervisor, the Proxmox VE ISO installer is simpler.

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.com and enterprise.proxmox.com (for the signing key).
  • wget or 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.
WARNING
Proxmox documents that installation on Debian is not supported with systemd-boot and Secure Boot enabled together on Trixie. Use GRUB with Secure Boot off unless you know exactly what you are doing.

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:

bash
sudo apt update && sudo apt full-upgrade -y

Reboot if the upgrade installed a new Debian kernel:

bash
sudo reboot

Confirm architecture and release:

bash
. /etc/os-release && echo "$PRETTY_NAME"
dpkg --print-architecture
uname -r

On the test host:

text
Debian GNU/Linux 13 (trixie)
amd64
6.12.94+deb13-amd64

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

bash
hostname
hostname --ip-address
cat /etc/hosts

Before fixing hosts, the test machine returned:

text
debian
127.0.1.1
127.0.0.1	localhost
127.0.1.1	debian

Edit /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:

bash
sudo nano /etc/hosts
text
127.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-allrouters

Remove the hostname from the 127.0.1.1 line if it is still there—keeping both invites ambiguity.

Verify:

bash
hostname --ip-address

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

bash
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.gpg

Verify the key fingerprint matches the official Trixie wiki:

bash
sha256sum /usr/share/keyrings/proxmox-archive-keyring.gpg
md5sum /usr/share/keyrings/proxmox-archive-keyring.gpg

On Debian 13:

text
136673be77aba35dcce385b28737689ad64fd785a797e57897589aed08db6e45  /usr/share/keyrings/proxmox-archive-keyring.gpg
77c8b1166d15ce8350102ab1bca2fcbf  /usr/share/keyrings/proxmox-archive-keyring.gpg

Create the repository source:

bash
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
HINT
On Trixie you can migrate older one-line .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:

bash
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.gpg

Expected checksum:

text
7da6fe34168adc6e479327ba517796d4702fa2f8b4f0a9833f5ea6e6b48f6507a6da403a274fe201595edc86a84463d50383d07f64bdde2e3658108db7d6dc87  /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg

Add the repository:

bash
echo "deb [arch=amd64] http://download.proxmox.com/debian/pve bookworm pve-no-subscription" \
  | sudo tee /etc/apt/sources.list.d/pve-install-repo.list

Use bookworm as the suite on Debian 12—not trixie.

Refresh package indexes

bash
sudo apt update && sudo apt full-upgrade -y

Confirm Proxmox packages are visible:

bash
apt-cache policy proxmox-ve proxmox-default-kernel

On Debian 13 with the Trixie repository:

text
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 Packages

Step 4: Install the Proxmox kernel and reboot

Install the Proxmox kernel before the full proxmox-ve stack:

bash
sudo apt install proxmox-default-kernel -y

Dry-run on Debian 13 showed these packages would install:

text
Installing:
  proxmox-default-kernel
Installing dependencies:
  proxmox-kernel-7.0  proxmox-kernel-7.0.12-1-pve-signed  pve-firmware

Reboot into the new kernel:

bash
sudo reboot

After reboot, confirm you are on a *-pve kernel:

bash
uname -r

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

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

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

bash
sudo apt remove linux-image-amd64 'linux-image-6.12*' -y

On Debian 12:

bash
sudo apt remove linux-image-amd64 'linux-image-6.1*' -y

Update GRUB when you boot with GRUB (skip on pure systemd-boot installs):

bash
sudo update-grub

os-prober scans partitions—including VM disks—and can add unwanted GRUB entries on a dedicated hypervisor:

bash
sudo apt remove os-prober -y

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

text
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 root password

If the page does not load, check that port 8006/tcp is allowed on any host firewall and that pveproxy is running:

bash
sudo systemctl status pveproxy pvedaemon pve-cluster --no-pager

Step 9: Create the vmbr0 Linux bridge

New installs need a Linux bridge so VMs share the host NIC. In the web UI:

  1. Select your node → SystemNetwork.
  2. Add a Linux Bridge named vmbr0.
  3. Attach your physical interface (for example enp0s3 or eth0).
  4. 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.

NOTE
Until 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:

bash
sudo sed -i 's/^deb/#deb/' /etc/apt/sources.list.d/pve-enterprise.list
sudo apt update

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

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

Run a final upgrade:

bash
sudo apt full-upgrade -y

Troubleshooting

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


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.


Frequently Asked Questions

1. Can I install Proxmox VE on top of Debian instead of using the Proxmox ISO?

Yes. Proxmox documents installing on Debian 12 Bookworm and Debian 13 Trixie when you need a custom partition layout or dual boot. The bare-metal Proxmox ISO remains the recommended path for most new servers because networking, storage, and ZFS are preconfigured.

2. Which Debian release matches Proxmox VE 9?

Proxmox VE 9.x targets Debian 13 Trixie. Install a standard 64-bit Trixie system, add the trixie pve-no-subscription suite, and install proxmox-ve from that repository. Proxmox VE 8.x pairs with Debian 12 Bookworm.

3. Why must my hostname resolve to a real IP before installing Proxmox?

Proxmox cluster and API services expect hostname --ip-address to return a non-loopback address. Map your static IP in /etc/hosts or DNS. A default 127.0.1.1 entry alone causes ipcc_send_rec failed errors after install.

4. Do I install proxmox-ve before or after the Proxmox kernel?

Install proxmox-default-kernel first, reboot into the PVE kernel, then run apt install proxmox-ve postfix open-iscsi chrony. Some packages depend on kernel features the Proxmox kernel provides.

5. Should I remove the Debian kernel after installing Proxmox?

Yes on production nodes. Keeping linux-image-amd64 can break upgrades on Debian point releases. Remove linux-image-amd64 and versioned linux-image-* packages, then run update-grub when you use GRUB.

6. How do I access the Proxmox web interface after install?

Browse https://YOUR-IP:8006 in a browser, accept the self-signed certificate warning, choose Linux PAM standard authentication, and log in as root with your Debian root password. Create a Linux bridge vmbr0 and attach your physical NIC for VM networking.

7. What is the difference between pve-no-subscription and pve-enterprise?

pve-no-subscription is the free community repository used during install. pve-enterprise requires a subscription key. After install Proxmox enables the enterprise source; home labs disable pve-enterprise.list and keep pve-no-subscription for updates without a license warning blocking apt.

8. How much RAM and disk does Proxmox on Debian need?

Plan for at least 8 GB RAM and ample root disk for ISO storage and VM images. A minimal Debian plus proxmox-ve meta package pulls hundreds of megabytes of dependencies; dry-run on Debian 13 reported proxmox-ve 9.2.0 with proxmox-kernel-7.0.12-1-pve-signed as the default kernel metapackage.
Omer Cakmak

Linux Administrator

Highly skilled at managing Debian, Ubuntu, CentOS, Oracle Linux, and Red Hat servers. Proficient in bash scripting, Ansible, and AWX central server management, he handles server operations on …