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.

Proxmox-Weboberfläche: APT-Repositories-Übersicht mit aktiviertem no-subscription- und deaktiviertem enterprise-Repo

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.