Proxmox Proxmox VM Template & Cloud-Init auto install Voraussetzungen Proxmox VE ≥ 6.x Linux-Cloud-Image (Ubuntu, Debian, Alma, Rocky, …) SSH-Key auf deinem Client 1. Cloud-Image herunterladen wget 💡 Wichtig: Normale ISOs funktionieren nicht , nur Cloud Images . Weitere Ubuntu Cloud Images gibts hier: https://cloud-images.ubuntu.com/ 2. VM als Cloud-Init-Template anlegen qm create 9000 \\ --name ubuntu-cloudinit \\ --memory 2048 \\ --cores 2 \\ --net0 virtio,bridge=vmbr0 Disk importieren: qm importdisk 9000 noble-server-cloudimg-amd64.img local-lvm Wichtige Information: Bei Proxmox version 9.1.4 und neuer gibt es einen bug wenn man den VM Speicher als LVM-Thin formatiert hat. In dem Fall muss die Image Datei unter local (pve) → Import → Upload hochgeladen werden. Im Anschluss muss das Hochgeladene image nur noch Hard Disk importiert werden. Disk & Boot setzen: qm set 9000 \\ --scsihw virtio-scsi-pci \\ --scsi0 local-lvm:vm-9000-disk-0 \\ --boot c \\ --bootdisk scsi0 Cloud-Init aktivieren: qm set 9000 --ide2 local-lvm:cloudinit qm set 9000 --serial0 socket --vga serial0 Cloud-Init konfigurieren (Proxmox GUI) Dies ist nur erforderlich wenn man nicht mit Snippets arbeitet Wenn man aber mit Snippets arbeitet ist es ratsam im Template in IP-Config die Konfiguration auf DHCP zu stellen. Wenn trotzdem eine statische IP für einen Dienst gewünscht wird, kann man dies auch über das Snippet konfigurieren. In der VM unter Cloud-Init : 👤 User: ubuntu 🔐 SSH Public Key einfügen 🌐 IP-Config: DHCP oder ip=192.168.1.50/24,gw=192.168.1.1 🖥 DNS optional VM zum Template machen qm template 9000 🎉 Fertig! Das Golden Image ist bereit. Snippets erstellen und einbinden Snippet Speicherort einstellen Bevor wir Snippets verwenden können, muss erst einmal das Speichern von Snippets erlaubt werden. Dafür im Proxmox Webinterface unter dem Punkt Datacenter → Storage → local → Edit Hier muss nur im Content Menü Snippets angeklickt werden und dann nur noch mit OK bestätigt werden. Nun muss über die Proxmox shell nur noch die Datei am Richtigen Ort abgelegt werden Snippets liegen dann hier: /var/lib/vz/snippets/ user-data Datei erstellen Beispiel: nano /var/lib/vz/snippets/user-data-web.yaml Inhalt: #cloud-config hostname: web01 users: - name: devops shell: /bin/bash sudo: ['ALL=(ALL) NOPASSWD:ALL'] ssh_authorized_keys: - ssh-ed25519 AAAA...DEINKEY package_update: true packages: - nginx - curl runcmd: - systemctl enable nginx - systemctl start nginx - echo "Provisioned by cloud-init" > /etc/motd Wichtig: Erste Zeile muss #cloud-config sein YAML korrekt eingerückt! VM klonen (vom Template) qm clone 9000 101 --name web01 Custom user-data anhängen qm set 101 --cicustom "user=local:snippets/user-data-web.yaml" VM Starten qm start 101 Fertig 🎉 Beim ersten Boot wird die Config ausgeführt. Erweiterte Beispiele Weitere Beispiele habe ich auf meiner Cloud liegen. Proxmox Proxmox Ceph Installation & Konfiguration 1. Vorbereitung & Anforderungen Bevor du beginnst, solltest du sicherstellen, dass folgende Voraussetzungen erfüllt sind: 📌 Hardware-Empfehlungen Mindestens 3 physische Proxmox-Nodes für Quorum und Redundanz. Leistungsfähige CPU & genügend RAM (Ceph benötigt insbesondere RAM pro OSD). Netzwerk mit dedizierten Ceph-Verbindungen (z. B. 10 Gbps oder mehr). Direkter Zugriff auf Festplatten (kein RAID) – Ceph arbeitet besser mit HBAs. 💡 Grundidee von Hyper-Converged Infrastructure (HCI) : Compute und Storage laufen gemeinsam auf denselben Servern. 2. Ceph Installation Du kannst Ceph entweder über die Proxmox-Weboberfläche oder per CLI installieren. 🔹 Installation über Web Wizard (empfohlen) Öffne die Proxmox Web-GUI. Wähle einen Cluster-Node aus. Navigiere zu Ceph → Installieren . Folge dem Assistenten: ➤ Wähle die Ceph-Version ➤ Bestätige Installation ➤ Setze Netzwerkeinstellungen (Public & optional Cluster Network) Nach Abschluss wird Ceph installiert und betriebsbereit sein. Netzwerkeinstellungen: Public Network: Ceph Datenverkehr (z. B. Client/Replication) Cluster Network (optional): Intern für OSD Replikation (empfohlen separat). 🔹 Installation über CLI Wenn du lieber die Konsole nutzt: pveceph install Danach die Erstkonfiguration: pveceph init--network / Dadurch wird /etc/pve/ceph.conf erzeugt und automatisch auf alle Cluster-Nodes verteilt. 3. Ceph Dienste erstellen Nach der Installation musst du die wichtigen Ceph-Dienste einrichten: Ceph Monitors (MON) Mindestens 3 Monitore für Quorum und Ausfallsicherheit: pveceph mon create oder über GUI: Ceph → Monitor → Create . Ceph Manager (MGR) Ein Manager ist wichtig für Cluster-Überwachung: pveceph mgr create oder über GUI: Ceph → Manager → Create . 4. OSDs erstellen Ceph speichert Daten über OSD-Dienste. Empfohlen: 1 OSD pro physischer Festplatte . 🔹 OSD per CLI pveceph osd create /dev/sdX → Ersetze /dev/sdX durch das entsprechende Block-Device. 💡 Falls eine Festplatte vorher schon Ceph-Daten enthält: ceph-volume lvm zap /dev/sdX--destroy ⚠ Alle Daten auf dem Laufwerk werden gelöscht. 5. Pool erstellen Ein Pool ist eine logische Einheit für Ceph-Speicher. pveceph pool create --add_storages Größe ( size ): Replicas (Standard: 3) Anzahl der Placement Groups ( pg_num ): Bestimmt Leistung und Verteilung Pools erscheinen dann automatisch in der Proxmox-GUI als Speicherziel. 6. Ceph in Proxmox hinzufügen Nachdem Pools erstellt sind: In der Proxmox-GUI gehe zu Datacenter → Storage → Add → RBD . Wähle den Ceph-Pool aus. Gib die Key-Ring und Mon Host-Informationen an. → Proxmox kann dann VM-Disks direkt auf Ceph speichern (RBD). 7. Optional: CephFS konfigurieren Wenn du ein verteiltes Dateisystem möchtest: pveceph mds create pveceph fs create--pg_num128--add-storage CephFS benötigt mindestens einen MDS. 8. Wartung & Monitoring Du kannst den Ceph-Status überwachen: ceph-s watch ceph--status Fehler können z. B. durch Netzwerkprobleme, ausgefallene OSDs oder unzureichende Ressourcen entstehen. Tipps aus den Empfehlungen → Vermeide RAID-Controller und nutze direkte HBAs. → Reserve genug RAM pro OSD (z. B. 1 GiB pro TiB). → Dedizierte Netzwerkschnittstellen für Ceph-Traffic bringen bessere Performance. Nvidia VGPU Driver installation 0. Vorbereitung – Proxmox & GPU-Check Bevor irgendetwas installiert wird, sollte geprüft werden, ob die verwendete NVIDIA-GPU vGPU-fähig ist. Dazu gibt man den Chipsatznamen (z. B. „1060“ oder „2080“) ein. Unterstützte Karten erkennt das Skript entsprechend. Wenn mehrere GPUs eingebaut sind, muss eine davon für das Passthrough reserviert werden und die andere für vGPU genutzt werden. 1. BIOS & Skript starten VT-d / IOMMU im BIOS aktivieren – Intel: VT-d – AMD: IOMMU Server neu starten und per SSH anmelden. Skript herunterladen und ausführen: git clone https://github.com/wvthoog/proxmox-vgpu-installer.git cd proxmox-vgpu-installer bash proxmox-installer.sh Im Menü wählt man z. B. „New vGPU installation“, um neu zu installieren. Nach Abschluss startet man das System neu. 2. Installation fortsetzen Nach dem Neustart erneut das Skript starten. Jetzt wird geprüft, ob VT-d / IOMMU geladen ist und eine Nvidia-Karte gefunden wurde. Anschließend wählt man die gewünschte Treiber-Version für Proxmox 7.x oder 8.x. Das Skript lädt den vGPU-Host-Treiber, patched ihn und installiert ihn. Am Ende erhält man zwei URLs: eine für den Linux-Gasttreiber und eine für den Windows-Gasttreiber. Diese werden später in den VMs benötigt. 4. vGPU einer VM zuweisen Nach der Installation erzeugt ein Befehl ( mdevctl types ) verschiedene vGPU-Profile. Diese Profile teilen den VRAM entsprechend auf (z. B. 4 GB, 2 GB, 1 GB). So weist man eine vGPU in der Proxmox-GUI zu: VM auswählen Reiter „Hardware“ öffnen „Add“ → „PCI Device“ klicken Nvidia-GPU auswählen (als „Mediated Device“) Gewünschtes vGPU-Profil wählen Hinzufügen und speichern 5. Gast-Treiber installieren Linux-Gast System aktualisieren: sudo apt update && sudo apt dist-upgrade Kernel-Headers installieren: sudo apt install linux-headers-$(uname -r) Den vom Skript bereitgestellten Nvidia-Grid-Treiber herunterladen und installieren: chmod +x NVIDIA-…-grid.run sudo ./NVIDIA-…-grid.run --dkms Mit nvidia-smi prüfen, ob die vGPU läuft. Windows-Gast Vor der vGPU-Treiberinstallation sollte ein vorhandener Nvidia-Treiber vollständig entfernt werden (z. B. über DDU). Danach den passenden GRID-Treiber installieren. 6. Tipps & Zusatzfunktionen Das Skript unterstützt zusätzliche Argumente wie –debug , –step , –url oder –file zur flexibleren Nutzung. Außerdem gibt es eine Liste möglicher Verbesserungen und eine Changelog-Übersicht mit den wichtigsten Updates seit der Veröffentlichung. 7. Fehlerbehebung Tritt ein Problem auf, kann man meist den vGPU-Installer entfernen, den Server neu starten und den Vorgang erneut beginnen. Falls das nicht hilft, lohnt sich ein Blick in die debug.log oder eine Rückmeldung an den Autor zur Verbesserung des Skripts.