From 7eb6715a1f1b7d6e4ee7e75cfd89196fac1d6a64 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Tue, 26 Aug 2025 14:07:16 +0200 Subject: [PATCH] PBS: Upgrade Script for v4 (#7214) * Refactor: Post-PBS Script * PBS4-Upgrade-Script * Remove unintended changes to post-pbs-install.sh --- frontend/public/json/pbs4-upgrade.json | 52 +++++++ tools/pve/pbs4-upgrade.sh | 183 +++++++++++++++++++++++++ 2 files changed, 235 insertions(+) create mode 100644 frontend/public/json/pbs4-upgrade.json create mode 100644 tools/pve/pbs4-upgrade.sh diff --git a/frontend/public/json/pbs4-upgrade.json b/frontend/public/json/pbs4-upgrade.json new file mode 100644 index 000000000..c6e993136 --- /dev/null +++ b/frontend/public/json/pbs4-upgrade.json @@ -0,0 +1,52 @@ +{ + "name": "PBS 4 Upgrade", + "slug": "pbs4-upgrade", + "categories": [ + 1 + ], + "date_created": "2025-08-26", + "type": "pve", + "updateable": false, + "privileged": false, + "interface_port": null, + "documentation": "https://pbs.proxmox.com/wiki/Upgrade_from_3_to_4", + "website": "https://www.proxmox.com/en/proxmox-backup-server", + "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/proxmox.webp", + "config_path": "", + "description": "This script guides you through upgrading Proxmox Backup Server from version 3.x (Debian 12 Bookworm) to version 4.0 (Debian 13 Trixie). It adjusts the Debian base sources, configures PBS 4 repositories in deb822 format, updates enterprise/no-subscription/test repos, runs a full system upgrade, and finalizes with a reboot.", + "install_methods": [ + { + "type": "default", + "script": "tools/pve/pbs4-upgrade.sh", + "resources": { + "cpu": null, + "ram": null, + "hdd": null, + "os": null, + "version": null + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [ + { + "text": "Execute this script directly on the PBS 3.x host as root.", + "type": "info" + }, + { + "text": "Ensure you have a verified backup of /etc/proxmox-backup before starting.", + "type": "warning" + }, + { + "text": "Do not run this on an already upgraded PBS 4.x system.", + "type": "warning" + }, + { + "text": "A reboot is strongly recommended after upgrade to activate the new kernel and services.", + "type": "info" + } + ] +} diff --git a/tools/pve/pbs4-upgrade.sh b/tools/pve/pbs4-upgrade.sh new file mode 100644 index 000000000..f9f765b27 --- /dev/null +++ b/tools/pve/pbs4-upgrade.sh @@ -0,0 +1,183 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE + +header_info() { + clear + cat <<"EOF" + ____ ____ _____ __ __ __ __ __ + / __ \/ __ ) ___// // / / / / /___ ____ __________ _____/ /__ + / /_/ / __ \__ \/ // /_ / / / / __ \/ __ `/ ___/ __ `/ __ / _ \ + / ____/ /_/ /__/ /__ __/ / /_/ / /_/ / /_/ / / / /_/ / /_/ / __/ +/_/ /_____/____/ /_/ \____/ .___/\__, /_/ \__,_/\__,_/\___/ + /_/ /____/ +EOF +} + +RD=$(echo "\033[01;31m") +YW=$(echo "\033[33m") +GN=$(echo "\033[1;92m") +CL=$(echo "\033[m") +BFR="\\r\\033[K" +HOLD="-" +CM="${GN}✓${CL}" +CROSS="${RD}✗${CL}" + +set -euo pipefail +shopt -s inherit_errexit nullglob + +msg_info() { echo -ne " ${HOLD} ${YW}$1..."; } +msg_ok() { echo -e "${BFR} ${CM} ${GN}$1${CL}"; } +msg_error() { echo -e "${BFR} ${CROSS} ${RD}$1${CL}"; } + +start_routines() { + header_info + CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "PBS 3 BACKUP" --menu \ + "\nMake a backup of /etc/proxmox-backup to ensure recovery in worst case?" 14 58 2 \ + "yes" " " "no" " " 3>&2 2>&1 1>&3) + case $CHOICE in + yes) + msg_info "Backing up Proxmox Backup Server 3" + tar czf "pbs3-etc-backup-$(date -I).tar.gz" -C "/etc" "proxmox-backup" + msg_ok "Backed up Proxmox Backup Server 3" + ;; + no) msg_error "Selected no to Backup" ;; + esac + + # --- Debian 13 Sources --- + CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "PBS 4 SOURCES" --menu \ + "Switch to Debian 13 (Trixie) sources for PBS 4?" 14 58 2 "yes" " " "no" " " 3>&2 2>&1 1>&3) + case $CHOICE in + yes) + msg_info "Switching to Debian 13 (Trixie) Sources" + rm -f /etc/apt/sources.list.d/*.list + sed -i '/proxmox/d;/bookworm/d' /etc/apt/sources.list || true + cat >/etc/apt/sources.list.d/debian.sources <&2 2>&1 1>&3) + case $CHOICE in + yes) + msg_info "Adding 'pbs-enterprise' repository" + cat >/etc/apt/sources.list.d/pbs-enterprise.sources <&2 2>&1 1>&3) + case $CHOICE in + yes) + msg_info "Adding 'pbs-no-subscription' repository" + cat >/etc/apt/sources.list.d/proxmox.sources <&2 2>&1 1>&3) + case $CHOICE in + yes) + msg_info "Adding 'pbs-test' repository (disabled)" + cat >/etc/apt/sources.list.d/pbs-test.sources <&2 2>&1 1>&3) + case $CHOICE in + yes) + msg_info "Upgrading to Proxmox Backup Server 4 (Patience)" + apt update + DEBIAN_FRONTEND=noninteractive apt -o Dpkg::Options::="--force-confold" dist-upgrade -y + msg_ok "System upgraded to PBS 4" + ;; + no) msg_error "Selected no to upgrade" ;; + esac + + # --- Reboot --- + CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "REBOOT" --menu \ + "\nReboot Proxmox Backup Server 4 now? (recommended)" 11 58 2 "yes" " " "no" " " \ + 3>&2 2>&1 1>&3) + case $CHOICE in + yes) + msg_info "Rebooting PBS 4" + sleep 2 + msg_ok "Upgrade Complete" + reboot + ;; + no) + msg_error "Selected no to Reboot (Reboot recommended)" + msg_ok "Upgrade Complete" + ;; + esac +} + +header_info +while true; do + read -rp "Start the Upgrade to Proxmox Backup Server 4 Script (y/n)? " yn + case $yn in + [Yy]*) break ;; + [Nn]*) + clear + exit + ;; + *) echo "Please answer yes or no." ;; + esac +done + +start_routines