This guide and script collection enables the installation of Proxmox VE with native ZFS Root (e.g., RAID1 on NVMe) on Hetzner Dedicated Servers.
It solves common issues encountered when using standard installation methods or older QEMU guides:
- Network Interface Mismatch: Handles the discrepancy between QEMU (
ens18) and Bare Metal (enpKs0) naming. - Boot Mode detection: Automatically detects if the server is running in Legacy BIOS or UEFI mode and configures QEMU accordingly (fixing the "No bootable device" loop).
- Subnet Issues: Automatically handles Hetzner's
/32vs/27routing requirements.
Use at your own risk. This process involves wiping hard drives (wipefs). Ensure you have backups. I am not responsible for data loss.
- Hetzner Dedicated Server (tested on AX/EX lines with NVMe).
- Server booted into Rescue System (Linux 64bit).
- SSH Access to the Rescue System.
- A VNC Viewer on your local machine.
SSH into your server in Rescue Mode:
ssh root@<your-server-ip>Download the scripts from this repo (or create them manually):
wget https://raw.githubusercontent.com/rewulff/hetzner-proxmox-zfs/main/install_pve.sh
wget https://raw.githubusercontent.com/rewulff/hetzner-proxmox-zfs/main/post_install.sh
chmod +x install_pve.sh post_install.sh
Run the main install script. It will detect your hardware, wipe old signatures, download the Proxmox ISO, and start the VNC session.
./install_pve.sh
Follow the on-screen instructions. The script will tell you the VNC Password and the SSH Tunnel Command.
- Open a terminal on your local machine and create the tunnel (as displayed by the script):
ssh -L 5900:localhost:5900 root@<your-server-ip>
- Open your VNC Viewer and connect to
localhost:5900. - Proceed through the Proxmox Installer:
- Target Disk: Options -> ZFS (RAID1) (or RAID0/RAIDZ).
- Advanced Options: Set
ashift=12(Critical for NVMe performance!). - Network: Leave everything as default (DHCP). Uncheck "Pin network interface names".
- CRITICAL: When installation finishes, click "Reboot" in the VNC window.
- IMMEDIATELY switch back to your SSH terminal.
Once the VNC window goes black or disconnects, QEMU has rebooted. Do not let it try to boot again.
Kill the QEMU process and run the post-install script to inject the correct network configuration and host settings:
./post_install.sh
This script will:
- Mount your new ZFS pool.
- Inject the correct
enp*network interface name (detected from hardware). - Fix the
/etc/hostsand/etc/resolv.conf. - Reboot the server.
After a few minutes, your Proxmox VE server should be reachable via SSH and the Web Interface (https://<your-ip>:8006).
Credits: Based on extensive debugging of Hetzner hardware quirks.