Back to Blog
System Administration

How to Setup Proxmox on a Hetzner Dedicated Server

4 December 2020 9 min read System Administration
How to Setup Proxmox on a Hetzner Dedicated Server
System Administration

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

How to Setup Proxmox on a Hetzner Dedicated Server

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.

Related Articles

More on System Administration

Need Help with SAP Business One?

Whether you need implementation support, custom add-ons, or strategic ERP advice, our team is ready to help. over 17 years of SAP B1 experience across India, New Zealand, and the USA.