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 #!/bin/bash
# ===================================================== # =====================================================
# POST-INSTALL TOOLBOX (dialog GUI-Version) # Proxmox VE: Debian 13 LXC automatisch erstellen (dialog)
# ===================================================== # =====================================================
# Prüfen, ob Root set -e
if [ "$EUID" -ne 0 ]; then
echo "Bitte als Root ausführen (sudo)" # ---- 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 exit 1
fi fi
# Skripte (Name -> URL) # ---- Root Passwort ----
declare -A SCRIPTS ROOTPASS=$(
SCRIPTS["Get Host & SSD Serialnumbers"]="https://me-gitea.maieredv.cloud/manuel.maier/pve-pbs-setup/raw/branch/main/get_sn.sh" $DIALOG --backtitle "$BACKTITLE" \
SCRIPTS["Setup Mail Notification"]="https://me-gitea.maieredv.cloud/manuel.maier/pve-pbs-setup/raw/branch/main/setup-email.sh" --passwordbox "Root-Passwort für den LXC:" 10 60 \
SCRIPTS["Set CPU Scaling Governor"]="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/pve/scaling-governor.sh" 2> "$TMPFILE" || exit 1
SCRIPTS["Intel e1000e Offload Fix"]="https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/pve/nic-offloading-fix.sh" cat "$TMPFILE"
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"
) )
# Prüfen, ob dialog installiert ist # ---- Hostname ----
if ! command -v dialog &>/dev/null; then HOSTNAME="$(hostname)-MGNT"
echo "Dialog nicht gefunden. Installiere..."
apt update && apt install -y dialog
fi
# Funktion für Menü $DIALOG --backtitle "$BACKTITLE" \
run_menu() { --msgbox "LXC Hostname:\n\n$HOSTNAME" 8 50
local OPTIONS=()
local i=1 # ---- VMID ermitteln ----
for key in "${ORDER[@]}"; do VMID=$MIN_VMID
OPTIONS+=("$i" "$key") while pct status "$VMID" &>/dev/null; do
((i++)) ((VMID++))
done done
OPTIONS+=("0" "Beenden")
CHOICE=$(dialog --clear --title "POST-INSTALL TOOLBOX" \ # ---- Storage Auswahl ----
--menu "Wähle ein Script zum Ausführen:" 20 70 12 \ mapfile -t STORAGES < <(pvesm status --content rootdir | awk 'NR>1 {print $1}')
"${OPTIONS[@]}" 2>&1 >/dev/tty)
echo "$CHOICE" if [[ ${#STORAGES[@]} -eq 0 ]]; then
} $DIALOG --msgbox "Kein geeigneter Storage gefunden!" 8 50
exit 1
# Hauptloop
while true; do
CHOICE=$(run_menu)
# Prüfen ob Abbrechen / Exit
if [ -z "$CHOICE" ] || [ "$CHOICE" == "0" ]; then
clear
echo "Bye! 👋"
exit 0
fi fi
# Auswahl validieren MENU_ITEMS=()
if [[ "$CHOICE" =~ ^[0-9]+$ ]] && [ "$CHOICE" -ge 1 ] && [ "$CHOICE" -le ${#ORDER[@]} ]; then for i in "${!STORAGES[@]}"; do
key="${ORDER[$CHOICE-1]}" MENU_ITEMS+=("$i" "${STORAGES[$i]}")
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
done 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