DietPi unter Proxmox im LXC Container installieren

DietPi ist eine optimierte und minimale Debian basierte Linux Distribution.
Überwiegend für den Einsatz auf Einzelplatinencomputern (SBC) gedacht, kann aber auch auf einem normalen Computer und in virtuellen Maschinen genutzt werden.

17.05.2024 - Anleitung aktualisiert
01.05.2023 - Proxmox 7.4, DietPi 8.16.2 (Debian 11)

mein Setup:

  • Proxmox 8.2
  • DietPi 9.4.2 (Debian 12)

VM erstellen

Neue VM ohne Festplatte erstellen. Die VM wird später in einen Container konvertiert und kann dann auch wieder gelöscht werden.
Hier mal alles auf der Konsole. (404 ist meine VM ID – ! bitte entsprechend abändern !)

# neue vm erstellen
qm create 404 --name DietPi --net0 virtio,bridge=vmbr0 --scsihw virtio-scsi-single --ostype l26 --memory 2048 --sockets 1 --cores 2

# DietPi image herunterladen und entpacken
apt install xz-utils
wget https://dietpi.com/downloads/images/DietPi_Proxmox-x86_64-Bookworm.qcow2.xz
xz -dv DietPi_Proxmox-x86_64-Bookworm.qcow2.xz

# disk importieren und einbinden
qm importdisk 404 DietPi_Proxmox-x86_64-Bookworm.qcow2 local-lvm
qm set 404 --scsi0 local-lvm:vm-404-disk-0

# disk als boot device setzen
qm set 404 --boot order=scsi0

# vm starten
qm start 404

# das entpackte image löschen
rm DietPi_Proxmox-x86_64-Bookworm.qcow2

Anmelden und das Setup durchlaufen. (login: root / password: dietpi)

Die VM nochmal rebooten nach updates suchen und aufräumen.

dietpi-update
apt autoremove -y

Damit DietPi weis, dass es sich später um einen Container und keine VM mehr handelt, in der /etc/.dietpi_hw_model_identifier den Wert von 20 auf 75 ändern.

echo 75 >/etc/.dietpi_hw_model_identifier

VM in einen Container konvertieren

Dazu nutze ich das unveränderte script von: https://github.com/my5t3ry/machine-to-proxmox-lxc-ct-converter

Die zu konvertierende VM muss eingeschaltet bleiben.
In der Shell auf dem Proxmox Host wird jetzt das script heruntergeladen und ausgeführt.

git clone https://github.com/mathewalves/machine-to-proxmox-lxc-ct-converter.git
cd machine-to-proxmox-lxc-ct-converter
chmod +x convert.sh bashconvert

Das bashconvert script setzt die Anzahl der CPU Cores auf unlimited, sollte man später noch auf 1 oder 2 ändern.

Erklärung der Parameter:

-n neuer container name
-t ip adresse der zu konvertierenden vm
-P ssh port der zu konvertierenden vm
-i neuer container id
-s neuer container rootfs in gb
-a neuer container ip adresse
-b neuer container bridge interface
-g neuer container gateway ip
-m neuer container memory in mb
-d neuer container storage pool
-p neuer container passwort

Die VM konvertieren.

./bashconvert -n dietpi -t 192.168.50.198 -P 22 -i 120 -s 8 -a 192.168.50.53 -b vmbr0 -g 192.168.50.1 -m 2048 -d local-lvm -p changeme

Container anpassen

Den konvertierten Container starten, anmelden und auch wieder das Setup durchlaufen.

Im Container benötigt man keinen bootloader, initramfs und kernel. Kann alles gelöscht werden.

apt autopurge grub-pc tiny-initramfs linux-image-amd64

Diese Services können auch deaktiviert werden.

systemctl disable --now dietpi-cloudshell systemd-networkd systemd-resolved

Nochmal rebooten und fertig. DietPi im LXC Container.

Update

DietPi von der 8.16.2 auf die aktuelle 8.19.1 Version updaten.

Im Terminal:

root@dietpi:~# dietpi-update

Update GUI

links

9 Gedanken zu „DietPi unter Proxmox im LXC Container installieren“

  1. Danke, klappt!

    Für Proxmox-Newbies wäre vielleicht noch die zusätzliche Info hilfreich, dass man vor dem Schritt “VM in einen Container konvertieren” die “Übergangs-VM” nicht herunterfährt, sondern laufen lässt und parallel in die Shell des Proxmoxs-Knotens (also des eigenen Servers) wechselt, um dort das convert-Skript herunterzuladen und auszuführen.

    Eine Anregung wäre noch, vielleicht die Wahl zwischen einem privilegierten und unprivilegierten Container anzubieten. Die Anleitung erzeugt einen unprivilegierten. Die Frage ist ob man mit dem unprivilegierten Dietpi-LXC-Container alles machen kann, was man will. Wenn man z.B. Nextcloud im Container laufen lassen will, verwenden Anleitungen wie die von ApfelCast z.B. einen privilegierten Container.

    Antworten
    • Danke für die Infos. Hab die Anleitung aktualisiert.

      Proxmox erstellt per default einen neuen Container immer unprivilegiert mit aktiviertem nesting.
      Sollte damit nicht alles laufen, kann der Container später in einen priviligierten geändert werden.

      Für die Wahl zwischen einem privilegierten oder unprivilegierten Container müsste man das script anpassen.

      Antworten
  2. Danke für das Update in der Anleitung.

    Ergebnis meiner Recherche: Später von “unprivilegiert” auf “privilegiert” zu ändern scheint nur über ein Backup und angepasstes Restore zu funktionieren. Wenn man von vornherein einen privilegierten Container haben will, braucht es nur eine weitere Zeile im convert.sh-Skript, nämlich beim “pct create”-Befehl:

    pct create "$id" "/tmp/$name.tar.gz" \
    -description LXC \
    -hostname "$name" \
    --features nesting=1 \
    -memory "$memory" -nameserver 8.8.8.8 \
    -net0 name=eth0,ip="$ip"/24,gw="$gateway",bridge="$bridge" \
    --rootfs "$rootsize" -storage "$storage" -password "$password" \
    --unprivileged 1

    Das funktioniert bei mir anstandslos.

    Antworten
  3. Wenn alles super funktioniert, ist dringend eine Neuerung nötig, nerv…
    s. https://github.com/my5t3ry/machine-to-proxmox-lxc-ct-converter

    git clone https://github.com/mathewalves/machine-to-proxmox-lxc-ct-converter.git
    cd machine-to-proxmox-lxc-ct-converter
    chmod +x convert.sh bashconvert

    ./bashconvert -n dietpi -t 192.168.50.198 -P 22 -i 120 -s 8 -a 192.168.50.53 -b vmbr0 -g 192.168.50.1 -m 2048 -d local-lvm -p changeme

    Ansonsten Gratulation für die vielen Tipps zu Proxmox, ARM, etc…

    Antworten
  4. Super Blog!
    Nutze selbst schon seit längerem DietPi LXC Container. Die Einrichtungsassistenten von DietPi z.B. dietpi-config erleichtern einem das Leben.
    Anstelle wie in diesem Beitrag beschrieben, kreiere ich in der Regel erst mal ein Debian LXC Container (kann gerne unpriviledged sein) und folge dieser Anleitung
    https://dietpi.com/docs/hardware/#make-your-own-distribution
    um DietPi darüber zu installieren. Die Befehle sind natürlich im LXC Container auszuführen. An der Stelle, wo eine Geräteauswahl mit Raspberry Pis etc. präsentiert, wählt man einfach Container aus.
    Ich erspare mir damit das Konvertieren in ein LXC Container, was in meiner Erfahrung oft ein wenig eine Frickelei ist. Hoffe das hilf dem einen oder anderen.

    Antworten

Schreibe einen Kommentar