Skip to main content
RunBook Academy

Proxmox VEIII · Installation & BaselineAlternative install paths

Installing PVE on top of an existing Debian system

Advanced⏱ ~26 min🧪 Lab requiredaptwget

What you'll learn

  • Decide when installing on Debian is the right path and when it is a workaround
  • Execute the Debian 13 Trixie procedure end to end, in the order that avoids losing the network
  • List what the ISO installer configures that this path leaves to you
  • Verify the result matches an ISO-installed node before putting it in a cluster

Prerequisites

Verified against Proxmox VE 9.2.4 · Proxmox Backup Server 4.2.5 · Ceph Squid / Tentacle · Debian 13 (Trixie) · Linux kernel 7.0 (PVE 9.2 default) · 2026-08-12

Not yet marked complete on this device.

Proxmox VE is a set of Debian packages. The ISO installer is a convenience that partitions the disks, installs those packages and configures them; it is not a different product. So installing PVE onto a Debian system you already have is a supported path, documented by Proxmox, and it produces a working node.

It is also the path where more goes wrong, because everything the ISO would have decided is now yours to get right — and several of those things are invisible until much later.

When this is the right path

A rented dedicated server. Hetzner, OVH, Scaleway and the rest hand you a machine with Debian already on it and a rescue system, not a console you can boot an ISO from. This is the primary reason the path exists.

A machine you cannot reach physically or out of band. No IPMI, no crash cart, no remote KVM. Converting an already-running Debian install over SSH is possible; booting an ISO is not.

A provider image with mandatory customisation. Some hosts require their own kernel, network configuration or agent. Starting from their Debian image keeps that intact.

And when it is not:

“I already have Debian on this server and reinstalling is inconvenient.” If you can boot an ISO, boot the ISO. The convenience saved is twenty minutes; the cost is every gap in the table below, carried for the life of the node.

“I want a custom partition layout the installer will not do.” The answer file exposes hdsize, swapsize, maxroot, maxvz and minfree, plus full ZFS geometry. Reach for that first.

Prerequisites, in the order they bite

A resolvable, non-loopback hostname

This is the one that produces the most confusing failure. From the documentation: “The hostname of your machine must be resolvable to an IP address. This IP address must not be a loopback one like 127.0.0.1.”

Read-only / Safecheck it before you install anything
hostname
hostname --fqdn
hostname --ip-address
grep -n "$(hostname)" /etc/hosts

Many Debian cloud and provider images ship with the hostname mapped to 127.0.1.1, which is the Debian convention and is wrong for Proxmox. The /etc/hosts line needs the real address:

127.0.0.1       localhost
192.0.2.11      pve01.example.com pve01

::1             localhost ip6-localhost ip6-loopback
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters

Get this wrong and pve-cluster fails to start, producing ipcc_send_rec[1] failed: Connection refused from essentially every pve* command. The message names an IPC failure and says nothing about hostname resolution, which is why people spend an hour on it.

Nothing that rewrites /etc/resolv.conf

Packages such as resolvconf can overwrite the file and break DNS after the conversion. Check what manages it before you start, and remove or configure it deliberately.

A backup, or a machine you are willing to lose

This procedure replaces the kernel and reboots. On a remote machine with only a rescue system to fall back on, that reboot is the risk point. Confirm you know how to reach the provider’s rescue mode before you run the reboot, not after.

The procedure

The order matters. Each step assumes the previous one completed.

Configuration changestep 1 — add the Proxmox repository
cat > /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

cat /etc/apt/sources.list.d/pve-install-repo.sources
Configuration changestep 2 — install and verify the repository key
wget https://enterprise.proxmox.com/debian/proxmox-archive-keyring-trixie.gpg \
-O /usr/share/keyrings/proxmox-archive-keyring.gpg

sha256sum /usr/share/keyrings/proxmox-archive-keyring.gpg
# expect: 136673be77aba35dcce385b28737689ad64fd785a797e57897589aed08db6e45

Compare that hash against the value published on the Proxmox wiki page for this procedure. It is the only integrity check in the whole path, and skipping it means trusting a plain wget to bootstrap the trust that every subsequent package install depends on.

Service impact possiblestep 3 — update and full-upgrade
apt update
apt full-upgrade
Service impact possiblestep 4 — install the Proxmox kernel and reboot into it
apt install proxmox-default-kernel

systemctl reboot
Read-only / Safestep 5 — confirm you are on the Proxmox kernel
uname -r
Service impact possiblestep 6 — install Proxmox VE
apt install proxmox-ve postfix open-iscsi chrony
Service impact possiblestep 7 — remove the Debian kernel and os-prober
apt remove linux-image-amd64 'linux-image-6.12*'
update-grub

apt remove os-prober

os-prober scans block devices for other operating systems and adds entries to the GRUB menu. On a hypervisor those block devices are VM disks, so it can add boot entries for your guests’ operating systems to the host’s boot menu — which is confusing at best and, on a shared machine, an information disclosure about what is running.

Verifying the result

Read-only / Safedoes this look like a Proxmox node?
pveversion --verbose
systemctl status pve-cluster pvedaemon pveproxy pvestatd --no-pager
ss -tlnp | grep -E ':8006|:3128'

The GUI should answer on port 8006. If pve-cluster is not running, the hostname resolution check from the prerequisites is the first thing to revisit.

What the ISO would have done that this did not

This is the part that matters six months later.

AreaISO installerThis path
Root filesystemZFS mirror, or LVM with a sized data volumeWhatever Debian or the provider chose — often a single ext4 partition
Boot redundancyAn ESP on every selected disk, in the synced setOne ESP, on one disk
local-lvm thin poolCreated and registered as PVE storageAbsent; guest storage must be configured by hand
Swap sizingSized against RAM, clamped to 4–8 GiBProvider default, frequently a large swap file
NetworkA vmbr0 bridge with the management address on itThe provider’s flat interface configuration; no bridge
Repository setEnterprise repository configuredNo-subscription, from step 1
KernelPVE kernel only, from the startPVE kernel added, Debian kernel removed by hand
Time syncchronyWhatever the image had, until step 6

Two of those rows are the ones that actually cause incidents.

No vmbr0. Guests need a bridge. The provider’s configuration has the address on a physical interface, and converting that to a bridge is the step where you lose the network if you get it wrong — on a machine whose recovery path is a rescue system. Do it with a rollback timer and read the networking part of this course first; several providers also require MAC-address restrictions that make the naive bridge configuration fail in provider-specific ways.

No local-lvm. A default Debian layout gives the root filesystem the whole disk, so there is no volume group space for a thin pool. You either plan the partitioning before the conversion, or you accept directory storage on the root filesystem, which is a real choice with real consequences — no thin provisioning, no LVM snapshots, and a full root filesystem taking the host down rather than just the guest.

Common mistakes

  • Hostname resolving to 127.0.1.1. pve-cluster will not start and every pve* command reports an IPC failure that names nothing useful.
  • Using the bookworm suite. That is PVE 8 on a Trixie system. Debian 13 needs trixie.
  • Skipping the keyring checksum. It is the only integrity check in the procedure.
  • Installing proxmox-ve before rebooting into the PVE kernel. Packages present, modules absent, symptoms that point elsewhere.
  • Leaving linux-image-amd64 installed. A future Debian kernel becomes the default and the node breaks during unrelated maintenance.
  • Leaving os-prober. It adds your guests’ operating systems to the host boot menu.
  • Converting to vmbr0 without reading the provider’s networking notes. MAC filtering on the uplink drops bridged guest traffic.
  • Not planning storage before the conversion. Repartitioning under a running hypervisor is much harder than choosing a layout beforehand.

Key takeaways

  • PVE on Debian is supported and produces a working node. Use it for rented servers and machines you cannot boot an ISO on, not for convenience.
  • The hostname must resolve to a real, non-loopback address before anything else. The failure mode names IPC, not DNS.
  • Suite is trixie for PVE 9. Verify the keyring checksum.
  • Install the PVE kernel, reboot, confirm uname -r, then install proxmox-ve. The order is what makes the modules match the packages.
  • Remove linux-image-amd64 and os-prober afterwards.
  • The ISO would have given you a bridge, a thin pool, boot redundancy and a sized root layout. None of those arrive on this path.
  • On a remote machine, verify the rescue system and schedule the undo before any network change.

Knowledge check

Knowledge check · 4 questions

  1. Q1. After converting a Debian host, every pve command returns "ipcc_send_rec[1] failed: Connection refused". What should you check first?

  2. Q2. Why does the documented procedure install proxmox-default-kernel and reboot before installing proxmox-ve?

  3. Q3. Which of these does the ISO installer configure that a Debian conversion leaves to you? Select all that apply.

  4. Q4. Using the bookworm suite in the Proxmox sources file on a Debian 13 Trixie system is acceptable, because Proxmox packages are compatible across adjacent Debian releases.

Passing score: 75%. Answers are checked in this browser.