# Debian Template erstellen

### Vorbereitung der VM

Konfigurieren Sie die Debian-VM vollständig: Installieren Sie benötigte Pakete (z. B. SSH-Server, Cloud-Init für bessere Flexibilität: `apt install cloud-init`), passen Sie Netzwerk, Benutzer und Systemeinstellungen an. Löschen Sie dann maschinen-spezifische Daten wie `/etc/machine-id` (`truncate -s 0 /etc/machine-id && systemd-machine-id-setup`), SSH-Host-Keys (`rm /etc/ssh/ssh_host_*`) und führen Sie `cloud-init clean` aus, falls Cloud-Init verwendet wird. Fahren Sie die VM herunter.​​

### Template erstellen

Wählen Sie die VM im Proxmox-Webinterface aus, klicken Sie auf **More** &gt; **Convert to template**. Die VM wird in eine nicht-startbare Vorlage umgewandelt (Icon ändert sich). Optional: Fügen Sie vorher ein Cloud-Init-CD-Laufwerk hinzu (`qm set <VMID> --ide2 local-lvm:cloudinit`), um bei Klonen IP, SSH-Keys usw. automatisch zuzuweisen.​​

### Neue VM bereitstellen

Klicken Sie rechts auf die Template &gt; **Clone**. Wählen Sie **Full Clone** (vollständige Kopie, unabhängig) oder **Linked Clone** (speichersparend, aber abhängig vom Template). Starten Sie die neue VM und finalisieren Sie einzigartige Einstellungen wie Hostname. Mit Cloud-Init können Sie vor dem Start IP (`qm set <neueVMID> --ipconfig0 ip=192.168.1.100/24,gw=192.168.1.1`) und SSH-Keys setzen.

### VM-Vorbereitung schrittweise

Ja, die Vorbereitung einer Debian-VM für ein Proxmox-Template erfolgt systematisch innerhalb der VM, um maschinen-spezifische Daten zu entfernen und Wiederverwendbarkeit zu gewährleisten.​​

1. **Debian-VM starten und konfigurieren**: Installieren Sie notwendige Pakete wie `apt update && apt install openssh-server cloud-init qemu-guest-agent`. Passen Sie Einstellungen an (Hostname generisch halten, z. B. `hostnamectl set-hostname template`, Netzwerk auf DHCP oder statisch minimal).​​
2. **Maschinen-ID leeren**: Führen Sie `truncate -s 0 /etc/machine-id && systemd-machine-id-setup` aus, damit jede neue VM eine einzigartige ID erhält.​​
3. **SSH-Keys regenerieren**: Entfernen Sie `rm /etc/ssh/ssh_host_*` und starten Sie SSH neu (`systemctl restart ssh`), damit Klonen neue Keys erzeugt. Deaktivieren Sie optional Root-Login (`sed -i 's/PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config`).​
4. **Cloud-Init bereinigen (empfohlen)**: Installieren Sie `cloud-init` falls nicht vorhanden, dann `cloud-init clean --logs --seed`. Erstellen Sie ein Cloud-Init-Laufwerk in Proxmox: `qm set <VMID> --ide2 local-lvm:cloudinit`.​
5. **Swap und Logs aufräumen**: Deaktivieren Sie Swap falls nicht benötigt (`swapoff -a`), leeren Sie Logs (`logrotate -f /etc/logrotate.conf`) und führen Sie `apt autoremove && apt clean` aus.​
6. **VM herunterfahren**: `shutdown -h now`. Im Proxmox-UI dann **More &gt; Convert to template** auswählen.​

Diese Schritte sorgen für saubere Klone mit automatischer Anpassung via Cloud-Init. Testen Sie mit einem Klon, ob SSH und Netzwerk funktionieren.

### SSH muss wieder hergestellt werden

#### Korrekte Reihenfolge für Templates

Die Keys **müssen nach dem Klonen** in der **neuen VM** neu generiert werden, nicht im Template:

1. **Im Template-Vorbereitung**: Keys entfernen (`sudo rm /etc/ssh/ssh_host_*`), **aber SSH NICHT neu starten** und VM herunterfahren.
2. **Nach Klonen/Start der neuen VM**:
    
    <div class="w-full md:max-w-[90vw]"><div class="codeWrapper text-light selection:text-super selection:bg-super/10 my-md relative flex flex-col rounded-lg font-mono text-sm font-normal bg-subtler"><div class="translate-y-xs -translate-x-xs bottom-xl mb-xl flex h-0 items-start justify-end sm:sticky sm:top-xs"><div class="overflow-hidden rounded-full border-subtlest ring-subtlest divide-subtlest bg-base"><div class="border-subtlest ring-subtlest divide-subtlest bg-subtler">  
    </div></div></div><div class="-mt-xl"><div><div class="text-quiet bg-subtle py-xs px-sm inline-block rounded-br rounded-tl-lg text-xs font-thin" data-testid="code-language-indicator">text</div></div><div>`sudo dpkg-reconfigure openssh-server`</div></div></div></div>oder