Infrastructure

Installing Proxmox 8 on a Hetzner server (Debian 11 → 12)

A complete tutorial for installing Proxmox VE 8 on a Hetzner dedicated server without an official template. Debian 11 to 12 upgrade, PVE repositories, IP and hostname configuration, pve-kernel and clean-up.

Installing Proxmox 8 on a Hetzner server (Debian 11 → 12)
Contents (15 sections)
  1. Installing Debian 11 on Hetzner (or Debian 12 directly)
  2. Installing Debian 11 on your Hetzner server
  3. Connecting over SSH
  4. Upgrading to Debian 12 (if you started from Debian 11)
  5. Installing Proxmox 8 on Debian 12
  6. Configuring the IP address and host
  7. Changing the hostname
  8. Editing /etc/hosts to match the hostname
  9. Checking that the installation is correct
  10. Switching to the Proxmox pve-kernel
  11. Adding the official repositories and checking them
  12. Installing the Proxmox kernel and rebooting
  13. Installing the proxmox-ve packages
  14. Cleaning up the installation
  15. Conclusion

I recently decided to move my infrastructure from OVH to Hetzner. OVH offers a simplified Proxmox 8 installation through preconfigured templates, but Hetzner has no such option. There are several ways to install Proxmox on a dedicated server, including KVM (Kernel-based Virtual Machine), but that route did not interest me. My goal was to go from a standard Debian installation to a fully working Proxmox server.

For anyone in the same position, moving to Hetzner brings cost and performance benefits, but it requires more manual configuration. In this article, I walk you through the steps to install Proxmox 8 on a Hetzner server, starting from a basic Debian installation.

Hetzner server rack in a German data centre, cabinets lit in cold light, a European dedicated infrastructure setting
A Hetzner dedicated server in Germany: the target hardware for this Proxmox VE 8 installation guide.

Installing Debian 11 on Hetzner (or Debian 12 directly) #

Installing Debian 11 on your Hetzner server #

If you are starting in 2026 with a new server, pick Debian 12 directly in Robot: all the Proxmox commands below still apply. If you are taking over an existing Debian 11 (Bullseye) server, the “Upgrading to Debian 12” section explains how to switch over without reinstalling.

Connecting over SSH #

Once the installation is complete, Hetzner sends the root password by e-mail. Connect with ssh root@<IPv4-du-serveur> (since 2024, Hetzner disables password login by default, so remember to upload your SSH key in Robot before starting the installation).

Upgrading to Debian 12 (if you started from Debian 11) #

Skip this if you installed Debian 12 directly. Otherwise, these steps upgrade a Debian 11 (Bullseye) server to Debian 12 (Bookworm) without reinstalling.

Bash
# 1. Bring Bullseye fully up to date
apt update && apt upgrade -y && apt full-upgrade -y

# 2. Point every APT source to Bookworm (including sources.list.d/)
sed -i 's/bullseye/bookworm/g' /etc/apt/sources.list /etc/apt/sources.list.d/*.list

# 3. Fix the security repository URL: 'bullseye/updates' becomes 'bookworm-security'
sed -i 's|bookworm/updates|bookworm-security|g' /etc/apt/sources.list /etc/apt/sources.list.d/*.list

# 4. Actual switch-over + clean-up
apt update && apt full-upgrade -y
apt --purge autoremove -y

Installing Proxmox 8 on Debian 12 #

The official Proxmox documentation describes the procedure; here is an adapted version. First we change the hostname and map it to the right IP. In our example, the hostname will be proxmoxDemoTest.

Configuring the IP address and host #

Changing the hostname #

Bash
hostnamectl set-hostname proxmoxDemoTest

Editing /etc/hosts to match the hostname #

Bash
nano /etc/hosts

# Expected content:
127.0.0.1 localhost.localdomain localhost
XXX.XXX.XXX.XXX proxmoxDemoTest
xxxx:xxx:xxx:xxx::x proxmoxDemoTest

Checking that the installation is correct #

Bash
root@proxmoxDemoTest ~ # hostname --ip-address
xxxx:xxx:xxx:xxx::x
XXX.XXX.XXX.XXX

Switching to the Proxmox pve-kernel #

Adding the official repositories and checking them #

Bash
echo "deb [arch=amd64] http://download.proxmox.com/debian/pve bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-install-repo.list
Bash
# Download the official Proxmox GPG key for Bookworm
wget https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg \
  -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg

# Check the SHA-512 fingerprint against the value published by Proxmox
sha512sum /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg

Installing the Proxmox kernel and rebooting #

The old apt install pve-kernel-6.2 command is obsolete. From Proxmox 8.1 onwards, the recommended package is proxmox-default-kernel, a meta-package that automatically follows the signed kernel recommended by the Proxmox team (6.5 on PVE 8.1, 6.8+ on later versions).

Bash
apt update && apt full-upgrade -y
apt install -y proxmox-default-kernel
systemctl reboot

Installing the proxmox-ve packages #

During apt install proxmox-ve, the postfix package asks a configuration question: choose “No configuration” unless you deliberately run a mail server on this machine. For a Proxmox host dedicated to virtualisation, it is the safest option.

Bash
apt install -y proxmox-ve postfix open-iscsi chrony

Cleaning up the installation #

We remove the generic Debian kernel (it will no longer be used) and the os-prober tool, which would otherwise keep searching the guest VMs' disks for other operating systems whenever grub is updated, unwanted behaviour on a hypervisor.

Bash
# Remove the Debian meta-package + the Bookworm-specific 6.1 kernel
apt remove -y linux-image-amd64 'linux-image-6.1*'
update-grub
apt remove -y os-prober

Conclusion #

Proxmox VE 8 is installed and working, and it did not take much effort. After a reboot, the Proxmox web interface is available at https://your-ip:8006 with the server's root credentials.

Proxmox 8 web interface after a successful installation on a Hetzner server
Proxmox 8 installed and running on a Hetzner server.

If you want to go further with high availability and replication between nodes, see the guide to moving from LVM to ZFS on Proxmox, which builds directly on this basic installation.

About
01/Read nextThree articles

Related articles

Infrastructure

Exploit foundries: your firewall has become the front line

Two undergraduates in Changsha ran an automated pipeline that decrypts firmware, decompiles it through thousands of calls, forms hypotheses about vulnerabilities, writes the exploit and tests it in a lab, in a loop, day and night. More than a dozen unknown vulnerabilities in a month on network devices, some fifty organisations targeted, thirteen collection agents on a scheduled task. What this means for an SME's inventory.

cybersecurityvulnerability
Infrastructure

Intermittent SERVFAIL: the orphaned DS record that broke 15% of lookups

A CI pipeline failing intermittently, two different error messages, an obvious suspect that had nothing to do with it, and an invisible cause: a DNSSEC record still published at the parent while the zone was no longer signed. Post-mortem of a nasty DNS failure, with the method that finally settled it.

dnssecdns
Infrastructure

Patching 36 servers without unattended-upgrades

There are three doctrines: do nothing, automate everything blindly, or look first and then decide. We removed unattended-upgrades from the whole fleet and dismantled our own automatic patching with Ansible, in favour of a “visibility first” doctrine backed by PatchMon. Why, how, and the routine that goes with it.

patch managementpatchmon

What next

Infrastructure that is managed and monitored day and night?

Bastion, SIEM, patches applied on purpose, tested backups: what we apply for our clients. First conversation free.

Discuss your project

Reply within 24 working hours, from one of the two founders. Or by phone: +33 7 59 96 14 99.