Compare commits

..

13 Commits

Author SHA1 Message Date
MickLesk
e80ef21ad6 fix(patchmon): remove v prefix from pinned version in check_for_gh_release
check_for_gh_release expects versions without v prefix (like Immich).
fetch_and_deploy_gh_release keeps v1.4.2 as it maps to the git tag.

Fixes #12884
2026-03-14 21:30:04 +01:00
community-scripts-pr-app[bot]
813b11bb4f Update CHANGELOG.md (#12874)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-03-13 20:55:35 +00:00
Freddy
2e8203a64e fix(pve-privilege-converter): handle already stopped container in manage_states (#12765) 2026-03-13 21:55:13 +01:00
community-scripts-pr-app[bot]
1441f4c324 Update CHANGELOG.md (#12873)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-03-13 20:55:07 +00:00
Ömer Taha Öztop
56fa0d0aad feat: support PBS storage in backup/restore flow of update-apps.sh (#12528) 2026-03-13 21:54:40 +01:00
community-scripts-pr-app[bot]
749da403fb Update CHANGELOG.md (#12872)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-03-13 20:38:23 +00:00
Nicholas W. Heyer
de6cb110e2 Removed clean install usage from original script. (#12870) 2026-03-13 21:37:56 +01:00
community-scripts-pr-app[bot]
40d487282a Update CHANGELOG.md (#12861)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-03-13 14:15:52 +00:00
Michel Roegl-Brunner
32a30edcea Update: Docs/website metadata workflow (#12858) 2026-03-13 15:15:21 +01:00
CanbiZ (MickLesk)
655a66dd34 plex remove old gpg 2026-03-13 14:25:17 +01:00
CanbiZ (MickLesk)
48fb024ae8 hf: setup plex repo if not installed (old install) 2026-03-13 14:10:23 +01:00
community-scripts-pr-app[bot]
e727c584ba Update CHANGELOG.md (#12859)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-03-13 12:11:13 +00:00
Nicholas W. Heyer
b57879afc5 Updated for v2 migration and use prebuilt release bin. (#12763) 2026-03-13 13:10:48 +01:00
7 changed files with 69 additions and 60 deletions

View File

@@ -420,6 +420,30 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
</details>
## 2026-03-13
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Hotfix: Removed clean install usage from original script. [@nickheyer](https://github.com/nickheyer) ([#12870](https://github.com/community-scripts/ProxmoxVE/pull/12870))
- #### 🔧 Refactor
- Discopanel: V2 Support + Script rewrite [@nickheyer](https://github.com/nickheyer) ([#12763](https://github.com/community-scripts/ProxmoxVE/pull/12763))
### 🧰 Tools
- update-apps: fix restore path, add PBS support and improve restore messages [@omertahaoztop](https://github.com/omertahaoztop) ([#12528](https://github.com/community-scripts/ProxmoxVE/pull/12528))
- #### 🐞 Bug Fixes
- fix(pve-privilege-converter): handle already stopped container in manage_states [@liuqitoday](https://github.com/liuqitoday) ([#12765](https://github.com/community-scripts/ProxmoxVE/pull/12765))
### 📚 Documentation
- Update: Docs/website metadata workflow [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#12858](https://github.com/community-scripts/ProxmoxVE/pull/12858))
## 2026-03-12
### 🚀 Updated Scripts

View File

@@ -1,7 +1,7 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2026 community-scripts ORG
# Author: DragoQC
# Author: DragoQC | Co-Author: nickheyer
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://discopanel.app/ | Github: https://github.com/nickheyer/discopanel
@@ -38,34 +38,15 @@ function update_script() {
msg_info "Creating Backup"
mkdir -p /opt/discopanel_backup_temp
cp -r /opt/discopanel/data/discopanel.db \
/opt/discopanel/data/.recovery_key \
/opt/discopanel_backup_temp/
if [[ -d /opt/discopanel/data/servers ]]; then
cp -r /opt/discopanel/data/servers /opt/discopanel_backup_temp/
fi
cp /opt/discopanel/data/discopanel.db /opt/discopanel_backup_temp/discopanel.db
msg_ok "Created Backup"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "discopanel" "nickheyer/discopanel" "tarball" "latest" "/opt/discopanel"
msg_info "Setting up DiscoPanel"
cd /opt/discopanel
$STD make gen
cd /opt/discopanel/web/discopanel
$STD npm install
$STD npm run build
msg_ok "Built Web Interface"
setup_go
msg_info "Building DiscoPanel"
cd /opt/discopanel
$STD go build -o discopanel cmd/discopanel/main.go
msg_ok "Built DiscoPanel"
fetch_and_deploy_gh_release "discopanel" "nickheyer/discopanel" "prebuild" "latest" "/opt/discopanel" "discopanel-linux-amd64.tar.gz"
ln -sf /opt/discopanel/discopanel-linux-amd64 /opt/discopanel/discopanel
msg_info "Restoring Data"
mkdir -p /opt/discopanel/data
cp -a /opt/discopanel_backup_temp/. /opt/discopanel/data/
mv /opt/discopanel_backup_temp/discopanel.db /opt/discopanel/data/discopanel.db
rm -rf /opt/discopanel_backup_temp
msg_ok "Restored Data"

View File

@@ -37,7 +37,7 @@ function update_script() {
fi
NODE_VERSION="24" setup_nodejs
if check_for_gh_release "PatchMon" "PatchMon/PatchMon" "v1.4.2"; then
if check_for_gh_release "PatchMon" "PatchMon/PatchMon" "1.4.2"; then
msg_info "Stopping Service"
systemctl stop patchmon-server
msg_ok "Stopped Service"

View File

@@ -46,11 +46,11 @@ function update_script() {
"main"
msg_ok "Migrated to new Plex repository"
fi
elif [[ -f /etc/apt/sources.list.d/plexmediaserver.list ]]; then
elif compgen -G "/etc/apt/sources.list.d/plex*.list" >/dev/null; then
msg_info "Migrating to new Plex repository (deb822)"
rm -f /etc/apt/sources.list.d/plexmediaserver.list
rm -f /etc/apt/sources.list.d/plex*
rm -f /etc/apt/sources.list.d/plex*.list
rm -f /usr/share/keyrings/PlexSign.asc
rm -f /usr/share/keyrings/plexmediaserver.v2.gpg
setup_deb822_repo \
"plexmediaserver" \
"https://downloads.plex.tv/plex-keys/PlexSign.v2.key" \
@@ -58,6 +58,15 @@ function update_script() {
"public" \
"main"
msg_ok "Migrated to new Plex repository (deb822)"
elif [[ ! -f /etc/apt/sources.list.d/plexmediaserver.sources ]]; then
msg_info "Setting up Plex repository"
setup_deb822_repo \
"plexmediaserver" \
"https://downloads.plex.tv/plex-keys/PlexSign.v2.key" \
"https://repo.plex.tv/deb/" \
"public" \
"main"
msg_ok "Set up Plex repository"
fi
if [[ -f /usr/local/bin/plexupdate ]] || [[ -d /opt/plexupdate ]]; then
msg_info "Removing legacy plexupdate"

View File

@@ -1,6 +1,6 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2026 community-scripts ORG
# Author: DragoQC
# Author: DragoQC | Co-Author: nickheyer
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://discopanel.app/ | Github: https://github.com/nickheyer/discopanel
@@ -12,25 +12,9 @@ setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt install -y build-essential
msg_ok "Installed Dependencies"
NODE_VERSION="22" setup_nodejs
setup_go
fetch_and_deploy_gh_release "discopanel" "nickheyer/discopanel" "tarball" "latest" "/opt/discopanel"
fetch_and_deploy_gh_release "discopanel" "nickheyer/discopanel" "prebuild" "latest" "/opt/discopanel" "discopanel-linux-amd64.tar.gz"
setup_docker
msg_info "Setting up DiscoPanel"
cd /opt/discopanel
$STD make gen
cd /opt/discopanel/web/discopanel
$STD npm install
$STD npm run build
cd /opt/discopanel
$STD go build -o discopanel cmd/discopanel/main.go
msg_ok "Setup DiscoPanel"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/discopanel.service
[Unit]
@@ -39,7 +23,7 @@ After=network.target
[Service]
WorkingDirectory=/opt/discopanel
ExecStart=/opt/discopanel/discopanel
ExecStart=/opt/discopanel/discopanel-linux-amd64
Restart=always
[Install]

View File

@@ -134,16 +134,20 @@ manage_states() {
read -rp "Shutdown source and start new container? [Y/n]: " answer
answer=${answer:-Y}
if [[ $answer =~ ^[Yy] ]]; then
pct shutdown "$CONTAINER_ID"
for i in {1..36}; do
sleep 5
! pct status "$CONTAINER_ID" | grep -q running && break
done
if pct status "$CONTAINER_ID" | grep -q running; then
read -rp "Timeout reached. Force shutdown? [Y/n]: " force
if [[ ${force:-Y} =~ ^[Yy] ]]; then
pkill -9 -f "lxc-start -F -n $CONTAINER_ID"
pct shutdown "$CONTAINER_ID"
for i in {1..36}; do
sleep 5
! pct status "$CONTAINER_ID" | grep -q running && break
done
if pct status "$CONTAINER_ID" | grep -q running; then
read -rp "Timeout reached. Force shutdown? [Y/n]: " force
if [[ ${force:-Y} =~ ^[Yy] ]]; then
pkill -9 -f "lxc-start -F -n $CONTAINER_ID"
fi
fi
else
msg_custom "" "\e[36m" "Source container $CONTAINER_ID is already stopped"
fi
pct start "$NEW_CONTAINER_ID"
msg_ok "New container started"

View File

@@ -426,16 +426,23 @@ for container in $CHOICE; do
elif [ $exit_code -eq 75 ]; then
echo -e "${YW}[WARN]${CL} Container $container skipped (requires interactive mode)"
elif [ "$BACKUP_CHOICE" == "yes" ]; then
msg_info "Restoring LXC from backup"
msg_error "Update failed for container $container (exit code: $exit_code) — attempting restore"
msg_info "Restoring LXC $container from backup ($STORAGE_CHOICE)"
pct stop $container
LXC_STORAGE=$(pct config $container | awk -F '[:,]' '/rootfs/ {print $2}')
pct restore $container /var/lib/vz/dump/vzdump-lxc-${container}-*.tar.zst --storage $LXC_STORAGE --force >/dev/null 2>&1
pct start $container
BACKUP_ENTRY=$(pvesm list "$STORAGE_CHOICE" 2>/dev/null | awk -v ctid="$container" '$1 ~ "vzdump-lxc-"ctid"-" || $1 ~ "/ct/"ctid"/" {print $1}' | sort -r | head -n1)
if [ -z "$BACKUP_ENTRY" ]; then
msg_error "No backup found in storage $STORAGE_CHOICE for container $container"
exit 235
fi
msg_info "Restoring from: $BACKUP_ENTRY"
pct restore $container "$BACKUP_ENTRY" --storage $LXC_STORAGE --force >/dev/null 2>&1
restorestatus=$?
if [ $restorestatus -eq 0 ]; then
msg_ok "Restored LXC from backup"
pct start $container
msg_ok "Container $container successfully restored from backup"
else
msg_error "Restored LXC from backup failed"
msg_error "Restore failed for container $container"
exit 235
fi
else