#!/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" 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}" 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}" 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" fi # ---- LXC erstellen ---- echo -e "${INDENT}Erstelle unprivilegierten 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" # Passwort hinzufügen, falls gesetzt if [[ -n "$ROOTPASS" ]]; then CREATE_CMD="$CREATE_CMD --password $ROOTPASS" fi # Ausführen eval $CREATE_CMD # ---- 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}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}"