post_install_v2.sh aktualisiert

This commit is contained in:
2026-01-27 23:24:23 +01:00
parent 7006984893
commit 6cf681a0b1

View File

@@ -1,99 +1,154 @@
#!/bin/bash
# =====================================================
# POST-INSTALL TOOLBOX (dialog GUI-Version)
# Proxmox VE: Debian 13 LXC automatisch erstellen (dialog)
# =====================================================
# Prüfen, ob Root
if [ "$EUID" -ne 0 ]; then
echo "Bitte als Root ausführen (sudo)"
set -e
# ---- Konfiguration ----
IP="10.60.10.2/24"
GATEWAY="10.60.10.1"
CORES=1
MEMORY=512
SWAP=0
ROOTFS_SIZE=8
BRIDGE="xx_vmbrmgt"
MIN_VMID=300
DIALOG=dialog
BACKTITLE="Proxmox VE LXC Installer"
TMPFILE=$(mktemp)
cleanup() {
rm -f "$TMPFILE"
}
trap cleanup EXIT
# ---- Root Check ----
if [[ $EUID -ne 0 ]]; then
echo "Bitte als Root ausführen!"
exit 1
fi
# Skripte (Name -> URL)
declare -A SCRIPTS
SCRIPTS["Get Host & SSD Serialnumbers"]="https://me-gitea.maieredv.cloud/manuel.maier/pve-pbs-setup/raw/branch/main/get_sn.sh"
SCRIPTS["Setup Mail Notification"]="https://me-gitea.maieredv.cloud/manuel.maier/pve-pbs-setup/raw/branch/main/setup-email.sh"
SCRIPTS["Set CPU Scaling Governor"]="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/pve/scaling-governor.sh"
SCRIPTS["Intel e1000e Offload Fix"]="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/pve/nic-offloading-fix.sh"
SCRIPTS["Set PVE Update Repos"]="https://me-gitea.maieredv.cloud/manuel.maier/pve-pbs-setup/raw/branch/main/set_pve_repos.sh"
SCRIPTS["Set PBS Update Repos"]="https://me-gitea.maieredv.cloud/manuel.maier/pve-pbs-setup/raw/branch/main/set_pbs_repos.sh"
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"
# Reihenfolge festlegen
ORDER=(
"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"
# ---- Root Passwort ----
ROOTPASS=$(
$DIALOG --backtitle "$BACKTITLE" \
--passwordbox "Root-Passwort für den LXC:" 10 60 \
2> "$TMPFILE" || exit 1
cat "$TMPFILE"
)
# Prüfen, ob dialog installiert ist
if ! command -v dialog &>/dev/null; then
echo "Dialog nicht gefunden. Installiere..."
apt update && apt install -y dialog
fi
# ---- Hostname ----
HOSTNAME="$(hostname)-MGNT"
# Funktion für Menü
run_menu() {
local OPTIONS=()
local i=1
for key in "${ORDER[@]}"; do
OPTIONS+=("$i" "$key")
((i++))
$DIALOG --backtitle "$BACKTITLE" \
--msgbox "LXC Hostname:\n\n$HOSTNAME" 8 50
# ---- VMID ermitteln ----
VMID=$MIN_VMID
while pct status "$VMID" &>/dev/null; do
((VMID++))
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)
# ---- Storage Auswahl ----
mapfile -t STORAGES < <(pvesm status --content rootdir | awk 'NR>1 {print $1}')
echo "$CHOICE"
}
# Hauptloop
while true; do
CHOICE=$(run_menu)
# Prüfen ob Abbrechen / Exit
if [ -z "$CHOICE" ] || [ "$CHOICE" == "0" ]; then
clear
echo "Bye! 👋"
exit 0
if [[ ${#STORAGES[@]} -eq 0 ]]; then
$DIALOG --msgbox "Kein geeigneter Storage gefunden!" 8 50
exit 1
fi
# Auswahl validieren
if [[ "$CHOICE" =~ ^[0-9]+$ ]] && [ "$CHOICE" -ge 1 ] && [ "$CHOICE" -le ${#ORDER[@]} ]; then
key="${ORDER[$CHOICE-1]}"
url="${SCRIPTS[$key]}"
dialog --infobox "Lade Script:\n$key\nVon: $url" 5 60
tmpfile=$(mktemp)
curl -sSL "$url" -o "$tmpfile"
if [ ! -s "$tmpfile" ]; then
dialog --msgbox "Fehler beim Download!" 5 40
rm -f "$tmpfile"
continue
fi
# Unter-Script in Subshell ausführen
clear
echo "========================================"
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
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