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
# =====================================================
# 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 ----
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
# 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"
DIALOG=dialog
BACKTITLE="Proxmox VE LXC Installer"
TMPFILE=$(mktemp)
# 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"
)
cleanup() {
rm -f "$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
# 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 ----
if [[ $EUID -ne 0 ]]; then
echo "Bitte als Root ausführen!"
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
# ---- Root Passwort ----
ROOTPASS=$(
$DIALOG --backtitle "$BACKTITLE" \
--passwordbox "Root-Passwort für den LXC:" 10 60 \
2> "$TMPFILE" || exit 1
cat "$TMPFILE"
)
# Auswahl validieren
if [[ "$CHOICE" =~ ^[0-9]+$ ]] && [ "$CHOICE" -ge 1 ] && [ "$CHOICE" -le ${#ORDER[@]} ]; then
key="${ORDER[$CHOICE-1]}"
url="${SCRIPTS[$key]}"
# ---- Hostname ----
HOSTNAME="$(hostname)-MGNT"
dialog --infobox "Lade Script:\n$key\nVon: $url" 5 60
tmpfile=$(mktemp)
curl -sSL "$url" -o "$tmpfile"
$DIALOG --backtitle "$BACKTITLE" \
--msgbox "LXC Hostname:\n\n$HOSTNAME" 8 50
if [ ! -s "$tmpfile" ]; then
dialog --msgbox "Fehler beim Download!" 5 40
rm -f "$tmpfile"
continue
fi
# ---- VMID ermitteln ----
VMID=$MIN_VMID
while pct status "$VMID" &>/dev/null; do
((VMID++))
# 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
# ---- 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