revert post_install_v2.sh aktualisiert
This commit is contained in:
2026-01-27 23:25:25 +01:00
parent 6cf681a0b1
commit ec172f0bf5

View File

@@ -1,154 +1,99 @@
#!/bin/bash #!/bin/bash
# ===================================================== # =====================================================
# Proxmox VE: Debian 13 LXC automatisch erstellen (dialog) # POST-INSTALL TOOLBOX (dialog GUI-Version)
# ===================================================== # =====================================================
set -e # Prüfen, ob Root
if [ "$EUID" -ne 0 ]; then
echo "Bitte als Root ausführen (sudo)"
exit 1
fi
# ---- Konfiguration ---- # Skripte (Name -> URL)
IP="10.60.10.2/24" declare -A SCRIPTS
GATEWAY="10.60.10.1" SCRIPTS["Get Host & SSD Serialnumbers"]="https://me-gitea.maieredv.cloud/manuel.maier/pve-pbs-setup/raw/branch/main/get_sn.sh"
CORES=1 SCRIPTS["Setup Mail Notification"]="https://me-gitea.maieredv.cloud/manuel.maier/pve-pbs-setup/raw/branch/main/setup-email.sh"
MEMORY=512 SCRIPTS["Set CPU Scaling Governor"]="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/pve/scaling-governor.sh"
SWAP=0 SCRIPTS["Intel e1000e Offload Fix"]="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/pve/nic-offloading-fix.sh"
ROOTFS_SIZE=8 SCRIPTS["Set PVE Update Repos"]="https://me-gitea.maieredv.cloud/manuel.maier/pve-pbs-setup/raw/branch/main/set_pve_repos.sh"
BRIDGE="xx_vmbrmgt" SCRIPTS["Set PBS Update Repos"]="https://me-gitea.maieredv.cloud/manuel.maier/pve-pbs-setup/raw/branch/main/set_pbs_repos.sh"
MIN_VMID=300 SCRIPTS["Create PVE MGNT Bridge"]="https://me-gitea.maieredv.cloud/manuel.maier/pve-pbs-setup/raw/branch/main/create_pve-mgnt-vmbr.sh"
SCRIPTS["Create PVE MGNT LXC"]="https://me-gitea.maieredv.cloud/manuel.maier/pve-pbs-setup/raw/branch/main/create_pve-mgnt-lxc_v2.sh"
SCRIPTS["Install pcvisit RemoteHost on Windows VMs"]="https://me-gitea.maieredv.cloud/manuel.maier/pve-pbs-setup/raw/branch/main/install-pcvisit-remotehost.sh"
DIALOG=dialog # Reihenfolge festlegen
BACKTITLE="Proxmox VE LXC Installer" ORDER=(
TMPFILE=$(mktemp) "Get Host & SSD Serialnumbers"
"Setup Mail Notification"
"Set CPU Scaling Governor"
"Intel e1000e Offload Fix"
"Set PVE Update Repos"
"Set PBS Update Repos"
"Create PVE MGNT Bridge"
"Create PVE MGNT LXC"
"Install pcvisit RemoteHost on Windows VMs"
)
cleanup() { # Prüfen, ob dialog installiert ist
rm -f "$TMPFILE" if ! command -v dialog &>/dev/null; then
echo "Dialog nicht gefunden. Installiere..."
apt update && apt install -y dialog
fi
# Funktion für Menü
run_menu() {
local OPTIONS=()
local i=1
for key in "${ORDER[@]}"; do
OPTIONS+=("$i" "$key")
((i++))
done
OPTIONS+=("0" "Beenden")
CHOICE=$(dialog --clear --title "POST-INSTALL TOOLBOX" \
--menu "Wähle ein Script zum Ausführen:" 20 70 12 \
"${OPTIONS[@]}" 2>&1 >/dev/tty)
echo "$CHOICE"
} }
trap cleanup EXIT
# ---- Root Check ---- # Hauptloop
if [[ $EUID -ne 0 ]]; then while true; do
echo "Bitte als Root ausführen!" CHOICE=$(run_menu)
exit 1
# Prüfen ob Abbrechen / Exit
if [ -z "$CHOICE" ] || [ "$CHOICE" == "0" ]; then
clear
echo "Bye! 👋"
exit 0
fi fi
# ---- Root Passwort ---- # Auswahl validieren
ROOTPASS=$( if [[ "$CHOICE" =~ ^[0-9]+$ ]] && [ "$CHOICE" -ge 1 ] && [ "$CHOICE" -le ${#ORDER[@]} ]; then
$DIALOG --backtitle "$BACKTITLE" \ key="${ORDER[$CHOICE-1]}"
--passwordbox "Root-Passwort für den LXC:" 10 60 \ url="${SCRIPTS[$key]}"
2> "$TMPFILE" || exit 1
cat "$TMPFILE"
)
# ---- Hostname ---- dialog --infobox "Lade Script:\n$key\nVon: $url" 5 60
HOSTNAME="$(hostname)-MGNT" tmpfile=$(mktemp)
curl -sSL "$url" -o "$tmpfile"
$DIALOG --backtitle "$BACKTITLE" \ if [ ! -s "$tmpfile" ]; then
--msgbox "LXC Hostname:\n\n$HOSTNAME" 8 50 dialog --msgbox "Fehler beim Download!" 5 40
rm -f "$tmpfile"
continue
fi
# ---- VMID ermitteln ---- # Unter-Script in Subshell ausführen
VMID=$MIN_VMID clear
while pct status "$VMID" &>/dev/null; do echo "========================================"
((VMID++)) echo "Starte Script: $key"
echo "========================================"
bash "$tmpfile"
rm -f "$tmpfile"
echo
read -rp "Fertig! Enter drücken für Menü..." _
else
dialog --msgbox "Ungültige Auswahl! Bitte erneut versuchen." 5 50
fi
done done
# ---- Storage Auswahl ----
mapfile -t STORAGES < <(pvesm status --content rootdir | awk 'NR>1 {print $1}')
if [[ ${#STORAGES[@]} -eq 0 ]]; then
$DIALOG --msgbox "Kein geeigneter Storage gefunden!" 8 50
exit 1
fi
MENU_ITEMS=()
for i in "${!STORAGES[@]}"; do
MENU_ITEMS+=("$i" "${STORAGES[$i]}")
done
STORAGE_INDEX=$(
$DIALOG --backtitle "$BACKTITLE" \
--menu "Storage für RootFS auswählen:" 15 60 6 \
"${MENU_ITEMS[@]}" \
2> "$TMPFILE" || exit 1
cat "$TMPFILE"
)
STORAGE="${STORAGES[$STORAGE_INDEX]}"
# ---- Template suchen ----
$DIALOG --infobox "Suche aktuelles Debian 13 Template..." 5 50
pveam update >/dev/null
TEMPLATE_NAME=$(pveam available | awk '/debian-13-standard_.*_amd64\.tar\.zst/ {print $2}' | tail -n1)
if [[ -z "$TEMPLATE_NAME" ]]; then
$DIALOG --msgbox "Kein Debian 13 Template gefunden!" 8 50
exit 1
fi
# ---- Template laden ----
TEMPLATE_PATH="/var/lib/vz/template/cache/$TEMPLATE_NAME"
if [[ ! -f "$TEMPLATE_PATH" ]]; then
$DIALOG --infobox "Lade Template:\n$TEMPLATE_NAME" 6 60
pveam download local "$TEMPLATE_NAME"
fi
# ---- Zusammenfassung ----
$DIALOG --backtitle "$BACKTITLE" \
--yesno \
"Zusammenfassung:
Hostname: $HOSTNAME
VMID: $VMID
Storage: $STORAGE
IP: $IP
Bridge: $BRIDGE
RAM: ${MEMORY}MB
Cores: $CORES
LXC jetzt erstellen?" 15 60
# ---- LXC erstellen ----
$DIALOG --infobox "Erstelle unprivilegierten LXC..." 5 50
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 \
--password "$ROOTPASS"
# ---- WebUI Konsole ----
CONF_FILE="/etc/pve/lxc/$VMID.conf"
{
echo "lxc.tty.max = 2"
echo "lxc.pty.max = 2"
echo "features: nesting=1,keyctl=1"
} >> "$CONF_FILE"
# ---- Autostart ----
pct set "$VMID" --onboot 1
# ---- Starten ----
pct start "$VMID"
# ---- Post-Install ----
$DIALOG --infobox "Installiere Newt-PVE-MGNT im LXC..." 5 60
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
"
# ---- Fertig ----
$DIALOG --backtitle "$BACKTITLE" \
--msgbox \
"LXC erfolgreich erstellt!
Name: $HOSTNAME
VMID: $VMID
Autostart: aktiv
Status: gestartet" 10 50