From 1e568183e446b7174c53dcf81328d0d31d4439e1 Mon Sep 17 00:00:00 2001 From: "manuel.maier" Date: Tue, 27 Jan 2026 11:54:25 +0100 Subject: [PATCH] create_pve-mgnt-lxc.sh aktualisiert --- create_pve-mgnt-lxc.sh | 154 +++++++++++++++++------------------------ 1 file changed, 62 insertions(+), 92 deletions(-) diff --git a/create_pve-mgnt-lxc.sh b/create_pve-mgnt-lxc.sh index f2bdc45..2c64bc9 100644 --- a/create_pve-mgnt-lxc.sh +++ b/create_pve-mgnt-lxc.sh @@ -1,111 +1,81 @@ #!/bin/bash -# ===================================================== -# Proxmox VE: Debian 13 LXC automatisch erstellen -# Hostname: -MGNT -# Unprivilegiert -# Automatisches Debian 13 Template -# WebUI-Konsole funktioniert -# Autostart aktiviert -# ===================================================== -# ---- Konfiguration ---- -IP="10.60.10.2/24" +### === Konfiguration === +CTID=301 +HOSTNAME="debian-lxc" +TEMPLATE_STORAGE="local" +TEMPLATE_NAME="debian-13-standard_13.1-2_amd64.tar.zst" +ROOTFS_STORAGE="local-lvm" +ROOTFS_SIZE="4G" + +BRIDGE="xx_vmbrmgt" +IP_ADDR="10.60.10.2/24" GATEWAY="10.60.10.1" + CORES=1 MEMORY=512 SWAP=0 -STORAGE="local-lvm" -ROOTFS_SIZE=8 -BRIDGE="xx_vmbrmgt" -MIN_VMID=300 -# ---- Farben / Layout ---- -BOLD="\033[1m" -GREEN="\033[32m" -CYAN="\033[36m" -RESET="\033[0m" -INDENT=" " - -# ---- Root Check ---- -if [[ $EUID -ne 0 ]]; then - echo -e "${BOLD}${INDENT}Bitte als Root ausführen!${RESET}" +### === Checks === +if ! command -v pct &>/dev/null; then + echo "❌ pct nicht gefunden – läuft das Script auf einem Proxmox Host?" exit 1 fi -# ---- Root-Passwort abfragen ---- -read -s -p "Root-Passwort für LXC: " ROOTPASS -echo - -# ---- Dynamischer Hostname ---- -HOSTNAME="$(hostname)-MGNT" -echo -e "${INDENT}LXC-Hostname wird: $HOSTNAME" - -# ---- Nächste freie VMID ab 300 ---- -VMID=$MIN_VMID -while pct status $VMID &>/dev/null; do - ((VMID++)) -done -echo -e "${INDENT}Nächste freie VMID: $VMID" - -# ---- Template automatisch wählen ---- -echo -e "${INDENT}Suche aktuelles Debian 13 Template..." -pveam update -TEMPLATE_NAME=$(pveam available | awk '/debian-13-standard_.*_amd64\.tar\.zst/ {print $2}' | tail -n1) - -if [[ -z "$TEMPLATE_NAME" ]]; then - echo -e "${BOLD}${INDENT}Kein Debian 13 Template gefunden!${RESET}" +### === Template prüfen === +if [ ! -f "/var/lib/vz/template/cache/${TEMPLATE_NAME}" ]; then + echo "❌ Template ${TEMPLATE_NAME} nicht gefunden!" + echo "👉 Bitte vorher herunterladen:" + echo " pveam download ${TEMPLATE_STORAGE} ${TEMPLATE_NAME}" 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 vorhanden, lade herunter..." - pveam download local $TEMPLATE_NAME -else - echo -e "${INDENT}Template bereits vorhanden" +### === LXC erstellen === +echo "🚀 Erstelle unprivilegierten LXC ${CTID}..." + +pct create ${CTID} \ + ${TEMPLATE_STORAGE}:vztmpl/${TEMPLATE_NAME} \ + --hostname ${HOSTNAME} \ + --cores ${CORES} \ + --memory ${MEMORY} \ + --swap ${SWAP} \ + --rootfs ${ROOTFS_STORAGE}:${ROOTFS_SIZE} \ + --net0 name=eth0,bridge=${BRIDGE},ip=${IP_ADDR},gw=${GATEWAY} \ + --unprivileged 1 \ + --features nesting=1 \ + --onboot 1 \ + --tty 2 \ + --pty 1 \ + --ostype debian \ + --start 0 + +if [ $? -ne 0 ]; then + echo "❌ Fehler beim Erstellen des LXCs" + exit 1 fi -# ---- LXC erstellen ---- -echo -e "${INDENT}Erstelle unprivilegierten LXC $HOSTNAME (VMID: $VMID)..." +### === LXC starten === +echo "▶️ Starte LXC..." +pct start ${CTID} -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" +### === Warten bis Container läuft === +echo "⏳ Warte auf LXC..." +sleep 5 -# Passwort hinzufügen, falls gesetzt -if [[ -n "$ROOTPASS" ]]; then - CREATE_CMD="$CREATE_CMD --password $ROOTPASS" -fi +### === Pakete im LXC installieren === +echo "📦 Installiere Pakete im LXC..." +pct exec ${CTID} -- bash -c " +apt update && +apt upgrade -y && +apt install -y curl sudo +" -# Ausführen -eval $CREATE_CMD +### === Newt Installer ausführen === +echo "🧩 Installiere NEWT Client..." +pct exec ${CTID} -- bash -c " +curl -fsSL https://gitea.vmd55888.de/manuel.maier/update-install-newt/raw/branch/main/install_newt_v2.sh -o install_newt_v2.sh && +chmod +x install_newt_v2.sh && +bash ./install_newt_v2.sh --install +" -# ---- WebUI-Konsole aktivieren (modern) ---- -CONF_FILE="/etc/pve/lxc/$VMID.conf" -echo -e "${INDENT}Aktiviere WebUI-Konsole..." -echo "lxc.tty.max = 2" >> "$CONF_FILE" -echo "lxc.pty.max = 2" >> "$CONF_FILE" -echo "features: nesting=1,keyctl=1" >> "$CONF_FILE" - -# ---- Autostart aktivieren ---- -echo -e "${INDENT}Aktiviere Autostart..." -pct set $VMID --onboot 1 - -# ---- Container starten ---- -echo -e "${INDENT}Starte LXC..." -pct start $VMID - -echo -e "${INDENT}Installiere Newt-PVE-Mgnt" -pct exec $VMID -- bash -c "\ -apt update && apt install -y curl sudo && \ -curl -fsSL https://gitea.vmd55888.de/manuel.maier/update-install-newt/raw/branch/main/install_newt_v2.sh -o install_newt_v2.sh && \ -bash ./install_newt_v2.sh --install" - -echo -e "${GREEN}${INDENT}✔ Unprivilegierter LXC $HOSTNAME (VMID $VMID) erstellt, gestartet und Autostart aktiviert!${RESET}" +echo "✅ Fertig! LXC ${CTID} läuft, Autostart aktiv, Console funktioniert 🎉"