How to Setup Proxmox on a Hetzner Dedicated Server
Updated June 2026 — commands and versions refreshed for current releases. This guide originally installed Proxmox VE 6 on Debian Buster; the current release is Proxmox VE 8 on Debian 12 (Bookworm). Where a version-specific repository or key path is shown, the note alongside it gives the modern equivalent.
This is the second article in a series that ends with installing SAP B1 on HANA. The first article covered how to set up a new dedicated Hetzner server as a base.
Proxmox
Proxmox VE is a complete open-source platform for all-inclusive enterprise virtualization that tightly integrates the KVM hypervisor and LXC containers, software-defined storage and networking functionality on a single platform, and easily manages high availability clusters and disaster recovery tools with the built-in web management interface.
The enterprise-class features and the 100% software-based focus make Proxmox VE a strong choice to virtualize your IT infrastructure, optimize existing resources, and increase efficiencies with minimal expense. You can virtualize demanding Linux and Windows application workloads and dynamically scale out compute and storage as your needs grow.
You can set up Proxmox on any bare-metal server, but for this article we assume you are using a bare-metal/dedicated server from Hetzner, set up as described in the previous article.
Server config

As in the previous article we assume the following settings.
Hostname
proxmox.example.com
Main IP settings
- Main IP: 11.11.11.11
- Gateway: 11.11.11.1
- Netmask: 255.255.255.192
Additional IP settings
- Subnet: 100.100.100.32/28 (IPs from 100.100.100.33 to 100.100.100.46)
- Gateway: 11.11.11.11
- Netmask: 255.255.255.240
Prepare the server
SSH into the server where you want to install Proxmox:
ssh [email protected]
Update the server to ensure everything is up to date:
apt update -y && apt full-upgrade -y && apt autoremove -y
If you logged in using a username and password, it is recommended to set up SSH-key based authentication, as it is more convenient and more secure. First, log off from the server:
exit
Copy the public SSH key from the machine you are logging in from to the remote server:
ssh-copy-id [email protected]
Once you can log in using the SSH key, edit the sshd_config file to disable username/password login:
nano /etc/ssh/sshd_config
# in the sshd_config file make the following changes
PubkeyAuthentication yes
PasswordAuthentication no
Make sure the server has proper host settings:
nano /etc/hosts
# This file should look similar to this
### Hetzner Online GmbH installimage
# nameserver config
# IPv4
127.0.0.1 localhost.localdomain localhost
11.11.11.11 proxmox.example.com proxmox
#
# IPv6
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
fcc8:7d20:587f:f1c9:550:ba8d:780b:4771 proxmox.example.com proxmox
Add the Proxmox VE repository
echo "deb http://download.proxmox.com/debian/pve buster pve-no-subscription" > /etc/apt/sources.list.d/pve-install-repo.list
For Proxmox VE 8 on Debian 12, replace buster with bookworm in the line above.
Add the Proxmox VE repository key:
wget http://download.proxmox.com/debian/proxmox-ve-release-6.x.gpg -O /etc/apt/trusted.gpg.d/proxmox-ve-release-6.x.gpg
chmod +r /etc/apt/trusted.gpg.d/proxmox-ve-release-6.x.gpg
For Proxmox VE 8, fetch proxmox-release-bookworm.gpg from download.proxmox.com instead of the 6.x key shown above.
Update the repository and system
apt update -y && apt full-upgrade -y
reboot
Remove packages not needed, as Proxmox will bring its own versions:
aptitude -q -y purge firmware-bnx2x firmware-realtek firmware-linux firmware-linux-free firmware-linux-nonfree
Install Proxmox VE packages
apt install proxmox-ve postfix open-iscsi
apt remove os-prober
reboot
You can choose local only for the postfix setup and Use vendor settings… when asked. Also choose proxmox.example.com when asked for the System mail name in the Postfix config screen.
Checking Proxmox
Once the server has rebooted, SSH back in and check that Proxmox is properly installed:
uname -rv
## you should see a result similar to
5.4.78-1-pve #1 SMP PVE 5.4.78-1 (Mon, 30 Nov 2020 10:57:47 +0100)
# Check if the required modules are loaded
lsmod | grep kvm
## result
kvm_intel 253952 0
kvm 659456 1 kvm_intel
irqbypass 16384 1 kvm
Remove enterprise Proxmox packages
rm /etc/apt/sources.list.d/pve-enterprise.list && apt-get update
Basic Proxmox security
For basic security, install fail2ban, which monitors login attempts and bans an IP address temporarily after multiple failed logins. You can follow the steps outlined at https://pve.proxmox.com/wiki/Fail2ban, but in a nutshell:
#install fail2ban
apt-get install fail2ban
#use /etc/fail2ban/jail.conf as a template for configuration
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
nano /etc/fail2ban/jail.local
#-----
# add the following settings at the bottom of jail.local
[proxmox]
enabled = true
port = https,http,8006
filter = proxmox
logpath = /var/log/daemon.log
maxretry = 3
# 1 hour
bantime = 3600
#-----
#create conf for proxmox in fail2ban
nano /etc/fail2ban/filter.d/proxmox.conf
#add the following settings
[Definition]
failregex = pvedaemon\[.*authentication failure; rhost=<HOST> user=.* msg=.*
ignoreregex =
Let's Encrypt certificate
You can now log in to Proxmox at https://proxmox.example.com:8006. Because the system uses a self-signed certificate, it is recommended to set up a Let's Encrypt certificate before you log in:
> pvenode acme account register default [email protected]
Directory endpoints:
0) Let's Encrypt V2 (https://acme-v02.api.letsencrypt.org/directory)
1) Let's Encrypt V2 Staging (https://acme-staging-v02.api.letsencrypt.org/directory)
2) Custom
Enter selection: 0
Attempting to fetch Terms of Service ...
Do you agree to the above terms? [y|N]: y
Registering ACME account..
Registration successful, account URL: 'https://acme-v02.api.letsencrypt.org/acme/acct/104920491'
Task OK
> pvenode acme account list
default
> pvenode config set --acme domains=proxmox.example.com
> pvenode acme cert order
Loading ACME account details
Placing ACME order
The validation for proxmox.example.com is pending!
Setting up webserver
Triggering validation
Status is 'valid', domain 'proxmox.example.com' OK!
All domains validated!
Downloading certificate
Setting pveproxy certificate and key
Restarting pveproxy
Task OK
Host network configuration
Due to the way the Hetzner network works, some extra network configuration is needed so you can use the additional IPs you ordered. Edit the /etc/network/interfaces file and add the following at the bottom:
auto vmbr0
iface vmbr0 inet static
address 11.11.11.11 # -- this is your main IP
netmask 255.255.255.255
bridge_ports none
bridge_stp off
bridge_fd 0
bridge_maxwait 0
pre-up brctl addbr vmbr0
#each additional IP is listed here
up ip route add 100.100.100.33/32 dev vmbr0
up ip route add 100.100.100.34/32 dev vmbr0
up ip route add 100.100.100.35/32 dev vmbr0
up ip route add 100.100.100.36/32 dev vmbr0
up ip route add 100.100.100.37/32 dev vmbr0
up ip route add 100.100.100.38/32 dev vmbr0
up ip route add 100.100.100.39/32 dev vmbr0
up ip route add 100.100.100.40/32 dev vmbr0
up ip route add 100.100.100.41/32 dev vmbr0
up ip route add 100.100.100.42/32 dev vmbr0
up ip route add 100.100.100.43/32 dev vmbr0
up ip route add 100.100.100.44/32 dev vmbr0
up ip route add 100.100.100.45/32 dev vmbr0
up ip route add 100.100.100.47/32 dev vmbr0
We also need to set up the server for IP forwarding. Edit the /etc/sysctl.conf file:
#make the following changes
net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1
net.ipv4.conf.all.send_redirects=0
After editing the file, reboot the server for the settings to take effect:
reboot
ISO locations
Once the server has rebooted, you are ready to create VMs. First, store the ISOs of the operating systems you will be installing. The location to store these ISOs is /var/lib/vz/template/iso.
Windows OS
Download official Microsoft Windows Server evaluation ISOs from the Microsoft Evaluation Center. These are 90- or 180-day evaluation versions; you can insert a paid Windows key to convert them to a registered version. The 2020 links below are kept for reference but point at older builds — always grab the current ISO from the Eval Center.
cd /var/lib/vz/template/iso
wget https://software-download.microsoft.com/download/pr/Windows_Server_2016_Datacenter_EVAL_en-us_14393_refresh.ISO
Ubuntu Linux distribution
For the latest version go to https://ubuntu.com/download/server. The original guide used 20.04; current LTS releases are 24.04 and 22.04.
cd /var/lib/vz/template/iso
wget https://releases.ubuntu.com/24.04/ubuntu-24.04-live-server-amd64.iso
SUSE SAP Linux distribution
For the latest version go to https://www.suse.com/download/sle-sap/.
cd /var/lib/vz/template/iso
wget https://updates.suse.com/SUSE/Products/SLE-Product-SLES/15-SP1-QU5/x86_64/iso/SLE-15-SP1-Installer-DVD-x86_64-QU5-Media1.iso
Log in to Proxmox
Once everything is installed, log in to Proxmox at https://proxmox.example.com:8006. Enter root as the username and your Linux root password.
External references
- https://pve.proxmox.com/wiki/Install_Proxmox_VE_on_Debian_Bookworm
- https://community.hetzner.com/tutorials/install-and-configure-proxmox_ve
Indivar Software Solutions
SAP Business One consulting and custom software development since 2009. Offices in India, New Zealand, and the USA.