Im letzten Journal-Post hatte ich erzählt, wie die Idee für mein Homelab entstanden ist. Hier jetzt die technischen Details zur eigentlichen Erstinstallation von Proxmox - für alle, die vor demselben ersten Schritt stehen.
Hardware und Installation
Mein Node läuft auf einem HP Elite Mini 600 G9 (i5-12500T). Installiert wird von einem USB-Stick, das ISO gibt’s direkt von der offiziellen Proxmox-Downloadseite, geflasht z.B. mit balenaEtcher.
Vor dem Booten vom Stick musste ich im BIOS Secure Boot deaktivieren - sonst bootet der Installer gar nicht erst. Beim eigentlichen Setup:
- ZFS RAID-1 über zwei Disks fürs Root-Filesystem (Mirror, kein Single-Disk-Risiko)
- Node über einen eigenen FQDN benannt (z.B.
pve.heimnetz.local- der genaue Name ist Geschmackssache, Hauptsache konsistent mit dem Rest der eigenen Namenskonvention) - Fixe IP, Gateway und interner DNS-Server gleich bei der Installation hinterlegt, statt das später nachzuziehen
Für die extern angeschlossene Festplatte habe ich bewusst einen der USB-3-Ports mit 10 Gbit/s verwendet, um da kein unnötiges Nadelöhr einzubauen. Proxmox erkennt sie danach ganz normal als zusätzliche Disk.
Erste Schritte nach der Installation
Vor dem ersten Update-Lauf lohnt sich ein Blick, ob S.M.A.R.T.-Monitoring auf den NVMe-Devices aktiviert ist - gerade bei einer Neuinstallation nicht selbstverständlich.
Standardmässig sind die kostenpflichtigen Enterprise-Repositories aktiv, die ohne Subscription nur Fehler werfen. Auf die kostenlosen No-Subscription-Repos umstellen, danach in der Weboberfläche unter Updates refreshen, alle verfügbaren Updates installieren und rebooten.

IOMMU / PCI-Passthrough aktivieren
Um später Geräte direkt an VMs durchzureichen (z.B. eine Grafikkarte oder einen USB-Controller), braucht es IOMMU - Mainboard und CPU müssen das unterstützen, und die Funktion muss zusätzlich im BIOS aktiviert sein.
Auf Proxmox-Seite /etc/default/grub anpassen:
#GRUB_CMDLINE_LINUX_DEFAULT="quiet"
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"
Danach die Boot-Konfiguration neu schreiben. Wichtig: Proxmox nutzt inzwischen meist
proxmox-boot-tool statt eines klassischen GRUB-Updates direkt - ein simples
update-grub weist selbst darauf hin:
root@proxmox:~# update-grub
Generating grub configuration file ...
W: This system is booted via proxmox-boot-tool:
W: Executing 'update-grub' directly does not update the correct configs!
W: Running: 'proxmox-boot-tool refresh'
...
Also gleich den richtigen Befehl verwenden:
root@proxmox:~# proxmox-boot-tool refresh
Zusätzlich in /etc/modules die passenden VFIO-Module eintragen:
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
Danach einmal rebooten, damit alles greift.
Eine Disk direkt an eine VM durchreichen
Für eine einzelne Disk (z.B. eine externe USB-Platte) reicht ein direkter Eintrag im
VM-Config-File unter /etc/pve/qemu-server/<VMID>.conf:
scsi1: /dev/sda
Nach dem Speichern taucht die Disk sofort in der Hardware-Übersicht der VM auf - kein Neustart der VM nötig.
Den Subscription-Reminder loswerden
Ohne kostenpflichtige Subscription nervt Proxmox bei jedem Login und jeder
Update-Prüfung mit einem Popup. Lässt sich durch eine kleine Anpassung an
/usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js abschalten - die
Check-Funktion wird schlicht dazu gebracht, immer orig_cmd() direkt aufzurufen statt
vorher die Subscription zu prüfen:
checked_command: function(orig_cmd) {
Proxmox.Utils.API2Request(
{
url: '/nodes/localhost/subscription',
method: 'GET',
failure: function(response, opts) {
Ext.Msg.alert(gettext('Error'), response.htmlStatus);
},
success: function(response, opts) {
let res = response.result;
if (false) {
// ursprüngliche Subscription-Prüfung hier auskommentiert
} else {
orig_cmd();
}
},
},
);
},
Achtung: Das Update-Skript wird bei einem Proxmox-Upgrade wieder überschrieben, der Fix muss also nach grösseren Updates gelegentlich erneut angewendet werden.
Zwei kleine Nachträge
Um den lokalen Default-Storage local als reinen Backup-/ISO-Storage zu nutzen statt für
alles:
pvesm set local --content none
Und falls eine VM über NFS auf Verzeichnisse des Hosts zugreifen soll, braucht es unter Umständen zusätzlich Default-ACLs, damit neu angelegte Dateien/Ordner die richtigen Rechte erben:
setfacl -m d:u::rwx,d:g::rwx,d:o::r /mnt/usbdisk/pve/data/
Das war der Grundstein. Was danach kam - Ubuntu-VM, Docker, der erste Container - ist eine andere Geschichte.