From 9726e6671f6b86afd3d8edd4f3e68581aee8d9a3 Mon Sep 17 00:00:00 2001 From: "manuel.maier" Date: Fri, 23 Jan 2026 23:28:46 +0100 Subject: [PATCH] create_pve-mgnt-lxc.sh aktualisiert --- create_pve-mgnt-lxc.sh | 48 +++++++++++++++++++++++++++++++----------- 1 file changed, 36 insertions(+), 12 deletions(-) diff --git a/create_pve-mgnt-lxc.sh b/create_pve-mgnt-lxc.sh index da83ebb..4192b00 100644 --- a/create_pve-mgnt-lxc.sh +++ b/create_pve-mgnt-lxc.sh @@ -2,8 +2,10 @@ # ===================================================== # Proxmox VE: Debian 13 LXC automatisch erstellen # Hostname: -MGNT -# Unprivilegiert, ohne Root-Passwort +# Unprivilegiert # DNS vom Host übernehmen +# Passwort wird abgefragt +# Template automatisch aus Liste gewählt # ===================================================== # ---- Konfiguration ---- @@ -30,6 +32,10 @@ if [[ $EUID -ne 0 ]]; then exit 1 fi +# ---- Passwort abfragen ---- +read -s -p "Root-Passwort für LXC (leer für kein Passwort): " ROOTPASS +echo + # ---- Dynamischer Hostname ---- HOSTNAME="$(hostname)-MGNT" echo -e "${INDENT}LXC-Hostname wird: $HOSTNAME" @@ -41,38 +47,56 @@ while pct status $VMID &>/dev/null; do done echo -e "${INDENT}Nächste freie VMID: $VMID" -# ---- Template prüfen / herunterladen ---- -TEMPLATE_NAME="debian-13-standard_13.1-2_amd64.tar.zst" -TEMPLATE_PATH="/var/lib/vz/template/cache/$TEMPLATE_NAME" +# ---- Template automatisch wählen ---- +echo -e "${INDENT}Suche aktuelles Debian 13 Template..." +pveam update +TEMPLATE_NAME=$(pveam available | grep -E "debian-13-standard_.*_amd64" | tail -n1 | awk '{print $1}') +if [[ -z "$TEMPLATE_NAME" ]]; then + echo -e "${BOLD}${INDENT}Kein Debian 13 Template gefunden!${RESET}" + exit 1 +fi + +echo -e "${INDENT}Gefundenes Template: $TEMPLATE_NAME" + +# ---- Template prüfen / herunterladen ---- +TEMPLATE_PATH="/var/lib/vz/template/cache/$TEMPLATE_NAME" if [[ ! -f "$TEMPLATE_PATH" ]]; then - echo -e "${INDENT}Template nicht gefunden, lade herunter..." - pveam update + echo -e "${INDENT}Template nicht vorhanden, lade herunter..." pveam download local $TEMPLATE_NAME else - echo -e "${INDENT}Template bereits vorhanden: $TEMPLATE_NAME" + echo -e "${INDENT}Template bereits vorhanden" fi # ---- Host DNS übernehmen ---- HOST_DNS=$(grep -E "^nameserver" /etc/resolv.conf | awk '{print $2}' | tr '\n' ',' | sed 's/,$//') if [[ -z "$HOST_DNS" ]]; then - HOST_DNS="1.1.1.1" # fallback + HOST_DNS="1.1.1.1" fi echo -e "${INDENT}Verwende Host-DNS: $HOST_DNS" # ---- LXC erstellen ---- -echo -e "${INDENT}Erstelle unprivilegierten LXC $HOSTNAME (VMID: $VMID)..." -pct create $VMID local:vztmpl/$TEMPLATE_NAME \ +echo -e "${INDENT}Erstelle LXC $HOSTNAME (VMID: $VMID)..." + +CREATE_CMD="pct create $VMID local:vztmpl/$TEMPLATE_NAME \ --hostname $HOSTNAME \ --cores $CORES \ --memory $MEMORY \ --swap $SWAP \ --rootfs $STORAGE:$ROOTFS_SIZE \ --net0 name=eth0,bridge=$BRIDGE,ip=$IP,gw=$GATEWAY,type=veth \ - --unprivileged 1 + --unprivileged 1" + +# Passwort hinzufügen, falls gesetzt +if [[ -n "$ROOTPASS" ]]; then + CREATE_CMD="$CREATE_CMD --password $ROOTPASS" +fi + +# Ausführen +eval $CREATE_CMD # ---- Container starten ---- echo -e "${INDENT}Starte LXC..." pct start $VMID -echo -e "${GREEN}${INDENT}✔ Unprivilegierter LXC $HOSTNAME (VMID $VMID) erstellt und gestartet!${RESET}" +echo -e "${GREEN}${INDENT}✔ LXC $HOSTNAME (VMID $VMID) erstellt und gestartet!${RESET}"