From 58200be0d8f0f853536db0b634250e69052bf648 Mon Sep 17 00:00:00 2001 From: "manuel.maier" Date: Fri, 23 Jan 2026 21:30:44 +0100 Subject: [PATCH] set_repos.sh aktualisiert --- set_repos.sh | 135 ++++++++++++++++++++++++++------------------------- 1 file changed, 69 insertions(+), 66 deletions(-) diff --git a/set_repos.sh b/set_repos.sh index 1217206..47ba372 100644 --- a/set_repos.sh +++ b/set_repos.sh @@ -1,84 +1,87 @@ #!/bin/bash +# ===================================================== +# Proxmox VE 9 Repository Setup (No-Subscription) +# Debian 13 (trixie) | deb822 (.sources) +# ===================================================== -# ========================================== -# PVE & Ceph Repo Switch: Enterprise → No-Subscription -# Dynamisch für PVE8/PVE9 & Ceph-Version -# ========================================== - -# Farben -RED="\033[31m" +# Farben / Layout +BOLD="\033[1m" GREEN="\033[32m" YELLOW="\033[33m" +RED="\033[31m" CYAN="\033[36m" -BOLD="\033[1m" RESET="\033[0m" INDENT=" " -# Prüfen ob Root -if [ "$EUID" -ne 0 ]; then - echo -e "${RED}${INDENT}Bitte als Root ausführen (sudo)${RESET}" +# Root-Check +if [[ $EUID -ne 0 ]]; then + echo -e "${RED}${INDENT}Bitte als Root ausführen!${RESET}" exit 1 fi -# PVE Version auslesen -PVE_VER=$(pveversion -v | head -n1 | awk '{print $2}' | cut -d'-' -f1) -echo -e "${CYAN}${INDENT}Erkannte PVE Version: $PVE_VER${RESET}" +echo -e "${BOLD}${CYAN}" +echo -e "${INDENT}==============================================" +echo -e "${INDENT} Proxmox VE 9 – Repository Setup" +echo -e "${INDENT} No-Subscription | deb822 Standard" +echo -e "${INDENT}==============================================" +echo -e "${RESET}" -# Debian Codename dynamisch setzen -if [[ "$PVE_VER" =~ ^9 ]]; then - DEB_CODENAME="trixie" -elif [[ "$PVE_VER" =~ ^8 ]]; then - DEB_CODENAME="bookworm" -else - echo -e "${YELLOW}${INDENT}Unbekannte PVE-Version, Standard auf bookworm${RESET}" - DEB_CODENAME="bookworm" -fi -echo -e "${CYAN}${INDENT}Debian Codename: $DEB_CODENAME${RESET}" - -# Backup -echo -e "${CYAN}${INDENT}==> Backup der aktuellen sources.list erstellen...${RESET}" -cp /etc/apt/sources.list /etc/apt/sources.list.bak.$(date +%F-%H%M) -echo -e "${GREEN}${INDENT}Backup erstellt: /etc/apt/sources.list.bak.$(date +%F-%H%M)${RESET}" - -# Enterprise Repos deaktivieren -echo -e "${CYAN}${INDENT}==> Enterprise Repos deaktivieren...${RESET}" -sed -i 's|^deb https://enterprise.proxmox.com/debian/pve|# deb https://enterprise.proxmox.com/debian/pve|' /etc/apt/sources.list -sed -i 's|^deb https://enterprise.proxmox.com/debian/ceph|# deb https://enterprise.proxmox.com/debian/ceph|' /etc/apt/sources.list - -# PVE No-Subscription Repo -PVE_NO_SUB="deb http://download.proxmox.com/debian/pve $DEB_CODENAME pve-no-subscription" -if ! grep -q "pve-no-subscription" /etc/apt/sources.list; then - echo -e "${CYAN}${INDENT}==> No-Subscription PVE Repo hinzufügen...${RESET}" - echo "$PVE_NO_SUB" >> /etc/apt/sources.list - echo -e "${GREEN}${INDENT}PVE No-Subscription Repo hinzugefügt: $PVE_NO_SUB${RESET}" -else - echo -e "${YELLOW}${INDENT}PVE No-Subscription Repo bereits vorhanden, übersprungen.${RESET}" +# OS prüfen +if ! grep -q "trixie" /etc/os-release; then + echo -e "${RED}${INDENT}Dieses Script ist NUR für Debian 13 (trixie)!${RESET}" + exit 1 fi -# Ceph Repo dynamisch erkennen und anpassen -# Wir suchen nach Zeilen mit "ceph" in sources.list -CEPH_LINE=$(grep -E "^deb .+ceph" /etc/apt/sources.list | head -n1) -if [ -n "$CEPH_LINE" ]; then - # Extrahiere die Ceph-Version (z.B. ceph-squid, ceph-pacific) - CEPH_VER=$(echo "$CEPH_LINE" | awk '{print $3}') - CEPH_REPO="deb http://download.proxmox.com/debian/ceph-$CEPH_VER $DEB_CODENAME main" - # Alte Ceph Zeilen auskommentieren - sed -i '/^deb .*ceph/ s|^deb|# deb|' /etc/apt/sources.list - # Prüfen ob schon vorhanden - if ! grep -q "ceph-$CEPH_VER" /etc/apt/sources.list; then - echo -e "${CYAN}${INDENT}==> No-Subscription Ceph Repo hinzufügen...${RESET}" - echo "$CEPH_REPO" >> /etc/apt/sources.list - echo -e "${GREEN}${INDENT}Ceph No-Subscription Repo hinzugefügt: $CEPH_REPO${RESET}" - else - echo -e "${YELLOW}${INDENT}Ceph No-Subscription Repo bereits vorhanden, übersprungen.${RESET}" - fi -else - echo -e "${YELLOW}${INDENT}Keine Ceph Repos gefunden, übersprungen.${RESET}" +# Backup-Ordner +BACKUP_DIR="/root/repo-backup-$(date +%F-%H%M)" +mkdir -p "$BACKUP_DIR" + +echo -e "${CYAN}${INDENT}==> Backup vorhandener Repo-Dateien...${RESET}" +mv /etc/apt/sources.list.d/*.list "$BACKUP_DIR/" 2>/dev/null +mv /etc/apt/sources.list.d/*.sources "$BACKUP_DIR/" 2>/dev/null +[ -f /etc/apt/sources.list ] && mv /etc/apt/sources.list "$BACKUP_DIR/" + +echo -e "${GREEN}${INDENT}Backup erstellt unter: $BACKUP_DIR${RESET}" + +# Proxmox Keyring prüfen +KEYRING="/usr/share/keyrings/proxmox-archive-keyring.gpg" +if [[ ! -f "$KEYRING" ]]; then + echo -e "${CYAN}${INDENT}==> Proxmox Keyring fehlt – installiere...${RESET}" + apt update >/dev/null + apt install -y proxmox-archive-keyring fi +# Ceph Version dynamisch bestimmen +CEPH_CODENAME="squid" +if command -v ceph >/dev/null 2>&1; then + CEPH_CODENAME=$(ceph -v | awk '{print $3}' | cut -d. -f1) +fi + +echo -e "${CYAN}${INDENT}==> Erkannte Ceph-Version: ${CEPH_CODENAME}${RESET}" + +# PVE Repo +echo -e "${CYAN}${INDENT}==> Erstelle PVE No-Subscription Repo...${RESET}" +cat < /etc/apt/sources.list.d/pve-no-subscription.sources +Types: deb +URIs: http://download.proxmox.com/debian/pve +Suites: trixie +Components: pve-no-subscription +Signed-By: ${KEYRING} +EOF + +# Ceph Repo +echo -e "${CYAN}${INDENT}==> Erstelle Ceph No-Subscription Repo...${RESET}" +cat < /etc/apt/sources.list.d/ceph-no-subscription.sources +Types: deb +URIs: http://download.proxmox.com/debian/ceph-${CEPH_CODENAME} +Suites: trixie +Components: main +Signed-By: ${KEYRING} +EOF + # APT Update -echo -e "${CYAN}${INDENT}==> APT Update durchführen...${RESET}" -apt update -y +echo -e "${CYAN}${INDENT}==> APT Update...${RESET}" +apt update -echo -e "${GREEN}${INDENT}Fertig! Dein Proxmox nutzt jetzt No-Subscription Repos für PVE & Ceph.${RESET}" -echo -e "${CYAN}${INDENT}Backup der alten sources.list ist unter /etc/apt/sources.list.bakYYYY-MM-DD-HHMM verfügbar.${RESET}" +echo -e "${GREEN}${INDENT}✔ Repositories erfolgreich eingerichtet!${RESET}" +echo -e "${CYAN}${INDENT}PVE 9 + Ceph (${CEPH_CODENAME}) nutzen jetzt No-Subscription.${RESET}" \ No newline at end of file