Rewrite Hetzner guide section 2: proper QEMU-based Proxmox installation
Replace incorrect installimage-based instructions with the full QEMU method from the Hetzner community tutorial. Covers disk discovery, BIOS mode check, ISO download, SSH port forwarding for VNC, QEMU command with NVMe passthrough, graphical installer walkthrough (ZFS RAID1 mirror), predict-check for real NIC name, and network config fix before first boot. Alternative Debian+upgrade method mentioned in a single sentence at the end. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
a7c856121d
commit
14d27fccc8
|
|
@ -25,48 +25,213 @@ servers). Note the assigned IP address and temporary root password.
|
|||
|
||||
## 2. Proxmox installation
|
||||
|
||||
Hetzner provides two installation paths:
|
||||
We use the official Proxmox VE ISO installer running inside QEMU from
|
||||
the Hetzner rescue system. This gives the full graphical installer with
|
||||
ZFS support, which is not available via Hetzner's `installimage`. The
|
||||
method is documented in the
|
||||
[Hetzner community tutorial](https://community.hetzner.com/tutorials/install-and-configure-proxmox_ve).
|
||||
|
||||
### Option A: installimage (recommended)
|
||||
### 2.1 Boot the rescue system
|
||||
|
||||
Boot the rescue system from the Hetzner Robot panel, then SSH in:
|
||||
In the Hetzner Robot panel, activate the rescue system (Linux 64-bit)
|
||||
and reboot the server. Then SSH in:
|
||||
|
||||
```bash
|
||||
ssh root@<public-ip>
|
||||
installimage
|
||||
```
|
||||
|
||||
Select Proxmox VE from the list. The installer presents an editor for
|
||||
disk configuration -- set up ZFS RAID1 mirror on two system disks:
|
||||
### 2.2 Discover disks
|
||||
|
||||
```
|
||||
SWRAID 0
|
||||
SWRAIDLEVEL 1
|
||||
PART /boot ext4 1G
|
||||
PART lvm pve all
|
||||
LV pve root ext4 100G
|
||||
LV pve swap swap 16G
|
||||
```
|
||||
|
||||
Reboot after installation completes.
|
||||
|
||||
### Option B: ISO install
|
||||
|
||||
Upload the Proxmox VE ISO via Robot panel → Server → ISO Images, then
|
||||
boot from it. Follow the standard Proxmox installer. This gives more
|
||||
control over partitioning but requires KVM console access.
|
||||
|
||||
### Verify
|
||||
Identify which disks the server has:
|
||||
|
||||
```bash
|
||||
ssh root@<public-ip>
|
||||
pvesh get /version
|
||||
lsblk -d -o NAME,SIZE,MODEL,ROTA,TYPE
|
||||
```
|
||||
|
||||
Example output on a typical auction server with 2 NVMe drives:
|
||||
|
||||
```
|
||||
NAME SIZE MODEL ROTA TYPE
|
||||
nvme0n1 477G Samsung SSD 970 EVO 0 disk
|
||||
nvme1n1 477G Samsung SSD 970 EVO 0 disk
|
||||
```
|
||||
|
||||
For ZFS RAID1 (mirror), you want two matching disks. NVMe pairs are the
|
||||
strong favourite -- fast and reliable. Note the device names (`/dev/nvme0n1`,
|
||||
`/dev/nvme1n1`) for the QEMU command.
|
||||
|
||||
If you have additional disks beyond the pair (e.g. large SATA drives),
|
||||
those can be set up as a separate storage pool later (section 6). Only
|
||||
pass the system disks to QEMU for now.
|
||||
|
||||
### 2.3 Check BIOS mode
|
||||
|
||||
Determine whether the server boots in UEFI or legacy BIOS mode:
|
||||
|
||||
```bash
|
||||
[ -d "/sys/firmware/efi" ] && echo "UEFI" || echo "BIOS"
|
||||
```
|
||||
|
||||
Most modern Hetzner servers are UEFI. The QEMU command below includes
|
||||
the OVMF BIOS line for UEFI -- remove it if your server reports BIOS.
|
||||
|
||||
### 2.4 Download the Proxmox ISO
|
||||
|
||||
Get the latest Proxmox VE ISO from the official download page:
|
||||
|
||||
```bash
|
||||
wget https://enterprise.proxmox.com/iso/proxmox-ve_9.0-1.iso
|
||||
```
|
||||
|
||||
Check [proxmox.com/en/downloads](https://www.proxmox.com/en/downloads)
|
||||
for the current version and adjust the URL accordingly.
|
||||
|
||||
### 2.5 Set up SSH port forwarding for VNC
|
||||
|
||||
On your **workstation** (not the server), open an SSH tunnel forwarding
|
||||
the VNC port:
|
||||
|
||||
```bash
|
||||
ssh -L 5900:localhost:5900 root@<public-ip>
|
||||
```
|
||||
|
||||
This forwards local port 5900 to the server's localhost:5900, where
|
||||
QEMU will expose its VNC display. Keep this session open.
|
||||
|
||||
### 2.6 Start the QEMU installer
|
||||
|
||||
In the SSH session on the server, start QEMU with the ISO and the disks
|
||||
you identified in step 2.2:
|
||||
|
||||
```bash
|
||||
qemu-system-x86_64 \
|
||||
-enable-kvm \
|
||||
-cpu host \
|
||||
-m 16G \
|
||||
-boot d \
|
||||
-cdrom ./proxmox-ve_9.0-1.iso \
|
||||
-drive file=/dev/nvme0n1,format=raw,if=virtio \
|
||||
-drive file=/dev/nvme1n1,format=raw,if=virtio \
|
||||
-bios /usr/share/OVMF/OVMF_CODE.fd \
|
||||
-vnc 127.0.0.1:0
|
||||
```
|
||||
|
||||
**Notes:**
|
||||
- Remove the `-bios /usr/share/OVMF/OVMF_CODE.fd \` line for legacy
|
||||
BIOS servers (step 2.3).
|
||||
- For SATA drives, use `/dev/sda`, `/dev/sdb` instead of `/dev/nvmeXn1`.
|
||||
- Disks appear as `/dev/vdX` inside the VM because of the virtio interface
|
||||
-- this is normal and expected.
|
||||
- The `-vnc 127.0.0.1:0` flag binds VNC to localhost only (safe, no
|
||||
password needed since it's behind the SSH tunnel).
|
||||
|
||||
### 2.7 Connect via VNC and install
|
||||
|
||||
Open a VNC client on your workstation and connect to `127.0.0.1:5900`
|
||||
(or just `127.0.0.1` -- most clients default to port 5900).
|
||||
|
||||
The Proxmox graphical installer appears. Walk through it:
|
||||
|
||||
1. Accept the EULA.
|
||||
2. **Target disk**: Select the ZFS RAID1 (mirror) option across both
|
||||
drives (`/dev/vda` and `/dev/vdb` in the VM -- these are your NVMe
|
||||
drives passed through via virtio).
|
||||
3. **Country/timezone/keyboard**: Set as appropriate.
|
||||
4. **Root password and email**: Set a strong root password. This becomes
|
||||
`HETZNER_PROXMOX_ROOT_PASSWORD` in your `env` file.
|
||||
5. **Network**: The installer shows a virtualized NIC. Configure it with
|
||||
the server's public IP, gateway, and hostname. This will be corrected
|
||||
in the next step since the real NIC name differs.
|
||||
6. Click **Install** and wait for completion.
|
||||
|
||||
The VNC client may disconnect briefly during install -- just reconnect
|
||||
to `127.0.0.1:5900`.
|
||||
|
||||
### 2.8 Predict the real network interface name
|
||||
|
||||
After installation completes, stop QEMU with `Ctrl+C` in the SSH
|
||||
terminal. **Do not reboot yet** -- the network interface name configured
|
||||
by the installer is wrong (it matches the virtual NIC, not the real one).
|
||||
|
||||
Use the Hetzner `predict-check` tool to discover the real interface name:
|
||||
|
||||
```bash
|
||||
predict-check
|
||||
```
|
||||
|
||||
Example output:
|
||||
|
||||
```
|
||||
eth0 -> enp0s31f6
|
||||
```
|
||||
|
||||
Note the predicted name (e.g. `enp0s31f6`). You can also check the
|
||||
current rescue interface for reference:
|
||||
|
||||
```bash
|
||||
netdata
|
||||
```
|
||||
|
||||
### 2.9 Fix the network config before first real boot
|
||||
|
||||
Boot Proxmox again in QEMU, **without** the ISO (no `-cdrom` flag):
|
||||
|
||||
```bash
|
||||
qemu-system-x86_64 \
|
||||
-enable-kvm \
|
||||
-cpu host \
|
||||
-m 16G \
|
||||
-boot d \
|
||||
-drive file=/dev/nvme0n1,format=raw,if=virtio \
|
||||
-drive file=/dev/nvme1n1,format=raw,if=virtio \
|
||||
-bios /usr/share/OVMF/OVMF_CODE.fd \
|
||||
-vnc 127.0.0.1:0
|
||||
```
|
||||
|
||||
Connect via VNC, log in as root, and edit the network configuration:
|
||||
|
||||
```bash
|
||||
nano /etc/network/interfaces
|
||||
```
|
||||
|
||||
Replace the virtual interface name (e.g. `ens18`) with the predicted
|
||||
real name (e.g. `enp0s31f6`). A minimal working config:
|
||||
|
||||
```
|
||||
auto lo
|
||||
iface lo inet loopback
|
||||
|
||||
auto enp0s31f6
|
||||
iface enp0s31f6 inet static
|
||||
address <public-ip>/32
|
||||
gateway <gateway-ip>
|
||||
```
|
||||
|
||||
Save and shut down the VM (`shutdown -h now` inside the VNC session,
|
||||
or `Ctrl+C` in the SSH terminal).
|
||||
|
||||
### 2.10 Reboot into Proxmox
|
||||
|
||||
Exit the rescue system and reboot the server from the Hetzner Robot
|
||||
panel (or just `reboot` from SSH). The server now boots from disk
|
||||
into Proxmox with the correct network configuration.
|
||||
|
||||
### 2.11 Verify
|
||||
|
||||
```bash
|
||||
ssh root@<public-ip> pvesh get /version
|
||||
# Should show Proxmox VE version and API info
|
||||
```
|
||||
|
||||
The web UI is available at `https://<public-ip>:8006` (we'll lock this
|
||||
down to WireGuard-only in section 9).
|
||||
|
||||
> **Alternative method**: You can also install Debian 13 via Hetzner's
|
||||
> `installimage` and then upgrade to Proxmox following the
|
||||
> [official guide](https://pve.proxmox.com/wiki/Install_Proxmox_VE_on_Debian_13_Trixie).
|
||||
> This skips the QEMU/VNC process but does not offer ZFS-on-root from
|
||||
> the installer.
|
||||
|
||||
---
|
||||
|
||||
## 3. Network configuration
|
||||
|
|
|
|||
Loading…
Reference in New Issue