Zum Inhalt springen
myvpsguide

Proxmox VE auf einem Root-Server installieren

Vom leeren Root-Server zum Proxmox-Host: Installationsweg, ZFS gegen LVM, Netzbrücke mit NAT, Repository ohne Subscription und die ersten Handgriffe.

veröffentlicht 08.07.2026
4 min lesezeit
fortgeschritten

Proxmox VE ist Debian mit einem Verwaltungsaufsatz für KVM und LXC. Das ist keine Abwertung, sondern der Grund, warum es sich so gut in bestehende Linux-Kenntnisse einfügt: Alles darunter ist ein normales Debian, und im Zweifel gilt, was für Debian gilt.

Diese Anleitung geht von Proxmox VE 9 aus (Unterbau: Debian 13 „trixie“). Zielsystem ist ein dedizierter Root-Server bei einem Anbieter, der ein Rettungssystem bereitstellt.

Welcher Weg: ISO oder von Debian aus?#

Installer-ISOAuf bestehendem Debian
VoraussetzungKVM-Konsole oder ISO-Boot beim Anbieterein installiertes Debian
ZFS-Rootim Installer wählbar, inklusive Spiegelnachträglich mühsam
Partitionierungvom Installer vorgegebenfrei
Netzwird meist per DHCP geratenschon eingerichtet

Wenn der Anbieter ISO-Boot erlaubt: das ISO nehmen. Vor allem wegen ZFS-Root mit Spiegel, nachträglich einen Root-Spiegel einzurichten ist deutlich mehr Arbeit als einmal im Installer zwei Platten anzuklicken.

Ohne ISO-Boot geht der Debian-Weg:

# Auf einem frisch installierten Debian 13
echo "deb [arch=amd64] http://download.proxmox.com/debian/pve trixie pve-no-subscription" \
  > /etc/apt/sources.list.d/pve-install-repo.list

curl -fsSL https://enterprise.proxmox.com/debian/proxmox-release-trixie.gpg \
  -o /etc/apt/trusted.gpg.d/proxmox-release-trixie.gpg

# Fingerabdruck gegen die offizielle Angabe prüfen, bevor irgendetwas installiert wird
sha512sum /etc/apt/trusted.gpg.d/proxmox-release-trixie.gpg

apt update && apt full-upgrade -y
apt install -y proxmox-ve postfix open-iscsi chrony

Danach den Debian-Standardkernel entfernen, damit nicht versehentlich der falsche gebootet wird:

apt remove -y linux-image-amd64 'linux-image-6.*'
update-grub
reboot
Vor dem Neustart

Prüfe, dass der Proxmox-Kernel installiert und in GRUB an erster Stelle steht: dpkg -l | grep proxmox-kernel und grep menuentry /boot/grub/grub.cfg | head -3. Ein Neustart in einen entfernten Kernel endet in einer nicht bootenden Maschine und dann brauchst du das Rettungssystem, das du hoffentlich vorher gefunden hast.

ZFS oder LVM für das Wurzeldateisystem?#

Die Entscheidung fällt bei der Installation und lässt sich später nur mit Neuaufbau ändern.

ZFS nehmen, wenn: zwei oder mehr Platten vorhanden sind, du Snapshots auf Dateisystemebene willst, Prüfsummen gegen stille Datenfehler wichtig sind, oder du später inkrementell zu einem zweiten Host replizieren möchtest.

LVM-Thin nehmen, wenn: nur eine Platte da ist, der RAM knapp ist, oder ein Hardware-RAID-Controller im Spiel ist, den man ZFS besser nicht unterschiebt.

ZFS und Arbeitsspeicher

ZFS nutzt freien RAM als Lesecache (ARC) und gibt ihn bei Bedarf wieder her, die verbreitete Faustregel „1 GB pro TB“ ist für den Normalbetrieb zu grob. Auf einem Host mit 32 GB und laufenden Gästen lohnt es sich trotzdem, die Obergrenze zu setzen, damit der ARC den Gästen nicht im Weg steht:
echo "options zfs zfs_arc_max=8589934592" > /etc/modprobe.d/zfs.conf (8 GB), danach update-initramfs -u.

Details zur Storage-Wahl für die Gäste stehen in Proxmox-Storage: welcher Typ wofür.

Netz: eine öffentliche IP, mehrere Gäste#

Der Standardfall beim Root-Server: Du hast eine öffentliche IPv4-Adresse und willst mehrere Gäste betreiben. Die Lösung ist eine interne Brücke mit NAT.

# /etc/network/interfaces

auto lo
iface lo inet loopback

# Physische Schnittstelle behält die öffentliche Adresse
auto enp0s31f6
iface enp0s31f6 inet static
    address 203.0.113.10/24
    gateway 203.0.113.1

# Interne Brücke für die Gäste — ohne physischen Port
auto vmbr0
iface vmbr0 inet static
    address 10.10.10.1/24
    bridge-ports none
    bridge-stp off
    bridge-fd 0
    post-up   echo 1 > /proc/sys/net/ipv4/ip_forward
    post-up   iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o enp0s31f6 -j MASQUERADE
    post-down iptables -t nat -D POSTROUTING -s 10.10.10.0/24 -o enp0s31f6 -j MASQUERADE
ifreload -a          # lädt die Konfiguration ohne Neustart neu
ip -brief addr

Gäste bekommen dann Adressen aus 10.10.10.0/24 mit 10.10.10.1 als Gateway. Nach außen erreichbar werden einzelne Dienste über Portweiterleitung oder, sauberer, über einen Reverse-Proxy auf dem Host.

ifreload und die Fernwartung

ifreload -a kann bei einem Fehler in der Datei die Netzverbindung des Hosts abwerfen. Auf einer entfernten Maschine ohne Konsole ist das das Ende der Sitzung. Vorher immer: sudo sh -c 'sleep 300 && reboot' &, ein geplanter Neustart in fünf Minuten bringt die alte, funktionierende Konfiguration zurück, falls du dich aussperrst. Läuft alles, brichst du ihn mit kill ab.

Die ersten fünf Handgriffe nach dem Login#

1. Repository ohne Subscription#

Die Enterprise-Quelle liefert ohne Abo keine Updates und wirft bei jedem apt update einen Fehler:

# Enterprise-Quellen deaktivieren
sed -i 's/^deb/#deb/' /etc/apt/sources.list.d/pve-enterprise.sources 2>/dev/null
sed -i 's/^deb/#deb/' /etc/apt/sources.list.d/ceph.sources 2>/dev/null

# Community-Quelle eintragen
cat > /etc/apt/sources.list.d/pve-no-subscription.sources <<'EOF'
Types: deb
URIs: http://download.proxmox.com/debian/pve
Suites: trixie
Components: pve-no-subscription
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
EOF

apt update && apt full-upgrade -y

Die „no-subscription“-Quelle ist für den privaten und kleinen Einsatz gedacht und bekommt Updates etwas später als die Enterprise-Quelle. Wer produktiv fährt und Support möchte, kauft ein Abo, das ist auch der Grund, warum es das Projekt noch gibt.

2. Zeit#

timedatectl set-timezone Europe/Berlin
chronyc tracking          # muss eine Quelle und einen kleinen Offset zeigen

Auf einem Host, der später Teil eines Clusters wird, ist eine falsche Uhr kein Schönheitsfehler: Corosync verlässt sich darauf.

3. Zugriff auf die Weboberfläche einschränken#

Die Oberfläche auf Port 8006 gehört nicht offen ins Internet. Zwei Wege, in der Reihenfolge der Empfehlung:

  1. Über ein VPN oder Overlay-Netz (WireGuard, Tailscale, NetBird) erreichbar machen und den Port nach außen sperren.
  2. Wenn das nicht geht: auf feste Quell-IPs beschränken.
# Nur aus dem VPN-Netz erreichbar
iptables -A INPUT -p tcp --dport 8006 -s 10.99.0.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 8006 -j DROP

4. Zwei-Faktor für root@pam#

Unter Datacenter → Permissions → Two Factor einen TOTP-Eintrag anlegen. Der Root-Zugang zur Oberfläche ist gleichbedeutend mit Zugriff auf alle Gäste und alle Daten.

5. Ein Nicht-Root-Konto für den Alltag#

pveum user add mauri@pve --comment "Alltagskonto"
pveum passwd mauri@pve
pveum acl modify / --users mauri@pve --roles PVEAdmin

PVEAdmin kann alles außer Benutzerverwaltung. Für den täglichen Umgang reicht das, und im Auditlog steht ein Name statt „root“.

Erster Gast als Funktionsprobe#

# Container-Vorlagen aktualisieren und eine Debian-Vorlage holen
pveam update
pveam available | grep debian-13
pveam download local debian-13-standard_13.0-1_amd64.tar.zst

# Container anlegen
pct create 100 local:vztmpl/debian-13-standard_13.0-1_amd64.tar.zst \
  --hostname test01 \
  --cores 1 --memory 512 --swap 512 \
  --rootfs local-lvm:8 \
  --net0 name=eth0,bridge=vmbr0,ip=10.10.10.100/24,gw=10.10.10.1 \
  --nameserver 9.9.9.9 \
  --unprivileged 1 \
  --features nesting=1

pct start 100
pct exec 100 -- ping -c2 9.9.9.9

Wenn dieser Ping durchkommt, stimmen Brücke, NAT und Weiterleitung. Wenn nicht, liegt es fast immer an ip_forward oder der MASQUERADE-Regel, beides in /etc/network/interfaces oben.

Ob ein Container oder eine VM das richtige Werkzeug ist, klärt LXC oder VM?. Und bevor der erste echte Dienst darauf läuft, gehört das Backup eingerichtet: Proxmox Backup Server.

MRMedia

Geschrieben aus dem laufenden Betrieb: MRMedia betreibt eigene Proxmox- Hosts, einen Backup-Server und Kundendienste in der EU. Fehler in einer Anleitung sind Fehler im eigenen Betrieb. Korrekturen bitte über Discord.