From a5208b55647e796ae2e77026c8905a3b22006484 Mon Sep 17 00:00:00 2001 From: "push-app-to-main[bot]" <203845782+push-app-to-main[bot]@users.noreply.github.com> Date: Sat, 13 Jun 2026 16:01:22 +0200 Subject: [PATCH 01/78] Add bookorbit (ct) (#15080) Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com> --- ct/bookorbit.sh | 78 ++++++++++++++++++++++++++++ ct/headers/bookorbit | 6 +++ install/bookorbit-install.sh | 99 ++++++++++++++++++++++++++++++++++++ 3 files changed, 183 insertions(+) create mode 100644 ct/bookorbit.sh create mode 100644 ct/headers/bookorbit create mode 100644 install/bookorbit-install.sh diff --git a/ct/bookorbit.sh b/ct/bookorbit.sh new file mode 100644 index 000000000..25b19cddf --- /dev/null +++ b/ct/bookorbit.sh @@ -0,0 +1,78 @@ +#!/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: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/bookorbit/bookorbit + +APP="BookOrbit" +var_tags="${var_tags:-books;library;reading}" +var_cpu="${var_cpu:-2}" +var_ram="${var_ram:-2048}" +var_disk="${var_disk:-10}" +var_os="${var_os:-debian}" +var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" +var_unprivileged="${var_unprivileged:-1}" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + + if [[ ! -d /opt/bookorbit ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + if check_for_gh_release "bookorbit" "bookorbit/bookorbit"; then + msg_info "Stopping Service" + systemctl stop bookorbit + msg_ok "Stopped Service" + + create_backup /opt/bookorbit/.env + + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "bookorbit" "bookorbit/bookorbit" "tarball" + + msg_info "Rebuilding Application" + cd /opt/bookorbit + PNPM_VERSION=$(jq -r '.packageManager | ltrimstr("pnpm@")' /opt/bookorbit/package.json) + $STD corepack enable + $STD corepack prepare "pnpm@${PNPM_VERSION}" --activate + $STD pnpm install --frozen-lockfile + $STD pnpm --filter client run build-only + $STD pnpm --filter server run build + cp -r /opt/bookorbit/client/dist /opt/bookorbit/server/public + mkdir -p /opt/bookorbit/server/migrations + cp -r /opt/bookorbit/server/src/db/migrations/. /opt/bookorbit/server/migrations/ + chmod +x /opt/bookorbit/server/bin/kepubify/* + APP_VER=$(cat ~/.bookorbit) + sed -i "s/^APP_VERSION=.*/APP_VERSION=v$APP_VER/" /opt/bookorbit/.env + msg_ok "Rebuilt Application" + + msg_info "Updating Kobo Python Runtime" + $STD uv pip install --python /opt/bookorbit-python/bin/python -r /opt/bookorbit/server/requirements/kobo-cloudscraper.txt + msg_ok "Updated Kobo Python Runtime" + + + msg_info "Starting Service" + systemctl start bookorbit + msg_ok "Started Service" + msg_ok "Updated successfully!" + fi + exit +} + +start +build_container +description + +msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}" diff --git a/ct/headers/bookorbit b/ct/headers/bookorbit new file mode 100644 index 000000000..0fddb4d33 --- /dev/null +++ b/ct/headers/bookorbit @@ -0,0 +1,6 @@ + ____ __ ____ __ _ __ + / __ )____ ____ / /__/ __ \_____/ /_ (_) /_ + / __ / __ \/ __ \/ //_/ / / / ___/ __ \/ / __/ + / /_/ / /_/ / /_/ / ,< / /_/ / / / /_/ / / /_ +/_____/\____/\____/_/|_|\____/_/ /_.___/_/\__/ + diff --git a/install/bookorbit-install.sh b/install/bookorbit-install.sh new file mode 100644 index 000000000..48c249a2d --- /dev/null +++ b/install/bookorbit-install.sh @@ -0,0 +1,99 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2026 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/bookorbit/bookorbit + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt install -y \ + build-essential \ + ffmpeg \ + poppler-utils +msg_ok "Installed Dependencies" + +PG_VERSION="16" PG_MODULES="pgvector" setup_postgresql +PG_DB_NAME="bookorbit" PG_DB_USER="bookorbit" PG_DB_EXTENSIONS="uuid-ossp,pg_trgm,vector" setup_postgresql_db +NODE_VERSION="24" setup_nodejs +setup_uv + +fetch_and_deploy_gh_release "bookorbit" "bookorbit/bookorbit" "tarball" + +msg_info "Building Application" +cd /opt/bookorbit +PNPM_VERSION=$(jq -r '.packageManager | ltrimstr("pnpm@")' /opt/bookorbit/package.json) +$STD corepack enable +$STD corepack prepare "pnpm@${PNPM_VERSION}" --activate +$STD pnpm install --frozen-lockfile +$STD pnpm --filter client run build-only +$STD pnpm --filter server run build +cp -r /opt/bookorbit/client/dist /opt/bookorbit/server/public +mkdir -p /opt/bookorbit/server/migrations +cp -r /opt/bookorbit/server/src/db/migrations/. /opt/bookorbit/server/migrations/ +chmod +x /opt/bookorbit/server/bin/kepubify/* +msg_ok "Built Application" + +msg_info "Setting up Python Runtime" +$STD uv venv /opt/bookorbit-python +$STD uv pip install --python /opt/bookorbit-python/bin/python -r /opt/bookorbit/server/requirements/kobo-cloudscraper.txt +msg_ok "Set up Python Runtime" + +msg_info "Configuring Application" +mkdir -p /opt/bookorbit-data/covers /opt/bookorbit-data/book-bucket /opt/bookorbit-books +APP_VER=$(cat ~/.bookorbit) +JWT_SECRET=$(openssl rand -hex 32) +SETUP_BOOTSTRAP_TOKEN=$(openssl rand -hex 16) +cat <>~/bookorbit.creds + +Setup Token: ${SETUP_BOOTSTRAP_TOKEN} +EOF +cat </opt/bookorbit/.env +NODE_ENV=production +PORT=3000 +DATABASE_URL=postgres://${PG_DB_USER}:${PG_DB_PASS}@127.0.0.1:5432/${PG_DB_NAME} +JWT_SECRET=${JWT_SECRET} +SETUP_BOOTSTRAP_TOKEN=${SETUP_BOOTSTRAP_TOKEN} +APP_URL=http://${LOCAL_IP}:3000 +CLIENT_URL=http://${LOCAL_IP}:3000 +NODE_OPTIONS=--max-old-space-size=2048 +APP_DATA_PATH=/opt/bookorbit-data +KOBO_CLOUDSCRAPER_PYTHON=/opt/bookorbit-python/bin/python +BOOK_DOCK_PATH=/opt/bookorbit-data/book-bucket +APP_VERSION=v${APP_VER} +EOF +msg_ok "Configured Application" + +msg_info "Creating Service" +cat </etc/systemd/system/bookorbit.service +[Unit] +Description=BookOrbit Service +After=network.target postgresql.service +Requires=postgresql.service + +[Service] +Type=simple +User=root +WorkingDirectory=/opt/bookorbit/server +EnvironmentFile=/opt/bookorbit/.env +ExecStartPre=/usr/bin/node /opt/bookorbit/server/dist/scripts/migrate.js +ExecStart=/usr/bin/node /opt/bookorbit/server/dist/main.js +Restart=on-failure +RestartSec=5 + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now bookorbit +msg_ok "Created Service" + +motd_ssh +customize +cleanup_lxc From 9020fa88b8c977739bc1dc348ad111f4966448c3 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sat, 13 Jun 2026 14:01:50 +0000 Subject: [PATCH 02/78] Update CHANGELOG.md (#15081) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1b97d8760..4f87b6ad9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -480,6 +480,12 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit +## 2026-06-13 + +### 🆕 New Scripts + + - BookOrbit ([#15080](https://github.com/community-scripts/ProxmoxVE/pull/15080)) + ## 2026-06-12 ### 🆕 New Scripts From 07ab5dc16e9530243a8d4a5e159e12a9e3c0e781 Mon Sep 17 00:00:00 2001 From: MickLesk Date: Sat, 13 Jun 2026 18:17:21 +0200 Subject: [PATCH 03/78] Quote PostgreSQL extension names Wrap the extension identifier in double quotes in the CREATE EXTENSION SQL call within setup_postgresql_db. This ensures extension names containing hyphens, mixed case, or other characters that require quoting are handled correctly and avoids syntax errors when creating extensions. --- misc/tools.func | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/misc/tools.func b/misc/tools.func index 055eb3ee2..cbeded9f8 100644 --- a/misc/tools.func +++ b/misc/tools.func @@ -8098,7 +8098,7 @@ setup_postgresql_db() { IFS=',' read -ra EXT_LIST <<<"${PG_DB_EXTENSIONS:-}" for ext in "${EXT_LIST[@]}"; do ext=$(echo "$ext" | xargs) # Trim whitespace - $STD sudo -u postgres psql -d "$PG_DB_NAME" -c "CREATE EXTENSION IF NOT EXISTS $ext;" + $STD sudo -u postgres psql -d "$PG_DB_NAME" -c "CREATE EXTENSION IF NOT EXISTS \"$ext\";" done fi From d4b9bc86e8fa2f476e7e694146ae699aef25ab59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?= <58952836+tremor021@users.noreply.github.com> Date: Sat, 13 Jun 2026 18:43:15 +0200 Subject: [PATCH 04/78] Refactor A-B (#15075) --- ct/2fauth.sh | 16 ++++++++++------ ct/adventurelog.sh | 16 ++++++---------- ct/ampache.sh | 18 +++++------------- ct/anchor.sh | 7 ++----- ct/anytype-server.sh | 9 ++------- ct/apache-tomcat.sh | 20 ++++++++------------ ct/babybuddy.sh | 5 +++-- ct/baikal.sh | 13 +++++-------- ct/bambuddy.sh | 24 ++++++------------------ ct/bar-assistant.sh | 26 +++++++++++--------------- ct/baserow.sh | 19 ++++++------------- ct/bentopdf.sh | 17 ++++++----------- ct/bichon.sh | 14 +++++++------- ct/bitmagnet.sh | 14 ++++++-------- ct/blocky.sh | 10 ++-------- ct/bookstack.sh | 17 +++++------------ ct/bytestash.sh | 21 +++------------------ 17 files changed, 93 insertions(+), 173 deletions(-) diff --git a/ct/2fauth.sh b/ct/2fauth.sh index 3906ec971..506f140d8 100644 --- a/ct/2fauth.sh +++ b/ct/2fauth.sh @@ -35,8 +35,10 @@ function update_script() { $STD apt -y upgrade msg_info "Creating Backup" - rm -rf /opt/2fauth-backup - mv /opt/2fauth /opt/2fauth-backup + create_backup \ + /opt/2fauth/.env \ + /opt/2fauth/storage + if ! dpkg -l | grep -q 'php8.4'; then cp /etc/nginx/conf.d/2fauth.conf /etc/nginx/conf.d/2fauth.conf.bak fi @@ -46,11 +48,13 @@ function update_script() { PHP_VERSION="8.4" PHP_FPM="YES" setup_php sed -i 's/php8\.[0-9]/php8.4/g' /etc/nginx/conf.d/2fauth.conf fi + fetch_and_deploy_gh_release "2fauth" "Bubka/2FAuth" "tarball" setup_composer - cp /opt/2fauth-backup/.env /opt/2fauth/.env - cp -r /opt/2fauth-backup/storage /opt/2fauth/storage - cd /opt/2fauth || return + restore_backup + + msg_info "Configuring 2FAuth" + cd /opt/2fauth export COMPOSER_ALLOW_SUPERUSER=1 $STD composer install --no-dev --prefer-dist php artisan 2fauth:install @@ -58,7 +62,7 @@ function update_script() { chmod -R 755 /opt/2fauth $STD systemctl restart php8.4-fpm $STD systemctl restart nginx - rm -rf /opt/2fauth-backup + msg_ok "Configured 2FAuth" msg_ok "Updated successfully!" fi exit diff --git a/ct/adventurelog.sh b/ct/adventurelog.sh index 4b7825bfd..e61c7f2da 100644 --- a/ct/adventurelog.sh +++ b/ct/adventurelog.sh @@ -35,10 +35,8 @@ function update_script() { systemctl stop adventurelog-frontend msg_ok "Services Stopped" - msg_info "Backup Old Installation" - cp -r /opt/adventurelog /opt/adventurelog-backup - rm -rf /opt/adventurelog - msg_ok "Backup done" + create_backup /opt/adventurelog/backend/server/.env \ + /opt/adventurelog/backend/server/media fetch_and_deploy_gh_release "adventurelog" "seanmorley15/adventurelog" "tarball" PYTHON_VERSION="3.13" setup_uv @@ -47,9 +45,9 @@ function update_script() { $STD sudo -u postgres psql -d adventurelog_db -c "CREATE EXTENSION IF NOT EXISTS postgis;" msg_ok "PostgreSQL Extensions Ready" - msg_info "Updating ${APP}" - cp /opt/adventurelog-backup/backend/server/.env /opt/adventurelog/backend/server/.env - cp -r /opt/adventurelog-backup/backend/server/media /opt/adventurelog/backend/server/media + restore_backup + + msg_info "Updating AdventureLog" cd /opt/adventurelog/backend/server if [[ ! -x .venv/bin/python ]]; then $STD uv venv --clear .venv @@ -61,12 +59,10 @@ function update_script() { $STD .venv/bin/python -m manage collectstatic --noinput $STD .venv/bin/python -m manage migrate - cp /opt/adventurelog-backup/frontend/.env /opt/adventurelog/frontend/.env cd /opt/adventurelog/frontend $STD pnpm i $STD pnpm build - rm -rf /opt/adventurelog-backup - msg_ok "Updated ${APP}" + msg_ok "Updated AdventureLog" msg_info "Starting Services" systemctl daemon-reexec diff --git a/ct/ampache.sh b/ct/ampache.sh index 88aac095e..11798160e 100644 --- a/ct/ampache.sh +++ b/ct/ampache.sh @@ -34,24 +34,16 @@ function update_script() { systemctl stop apache2 msg_ok "Stopped Service" - msg_info "Creating Backup" - cp /opt/ampache/config/ampache.cfg.php /tmp/ampache.cfg.php.backup - cp /opt/ampache/public/rest/.htaccess /tmp/ampache_rest.htaccess.backup - cp /opt/ampache/public/play/.htaccess /tmp/ampache_play.htaccess.backup - rm -rf /opt/ampache_backup - mv /opt/ampache /opt/ampache_backup - msg_ok "Created Backup" + create_backup /opt/ampache/config/ampache.cfg.php \ + /opt/ampache/public/rest/.htaccess \ + /opt/ampache/public/play/.htaccess \ + /opt/ampache/advanced-config fetch_and_deploy_gh_release "Ampache" "ampache/ampache" "prebuild" "latest" "/opt/ampache" "ampache-*_all_php8.4.zip" - msg_info "Restoring Backup" - cp /tmp/ampache.cfg.php.backup /opt/ampache/config/ampache.cfg.php - cp /tmp/ampache_rest.htaccess.backup /opt/ampache/public/rest/.htaccess - cp /tmp/ampache_play.htaccess.backup /opt/ampache/public/play/.htaccess + restore_backup chmod 664 /opt/ampache/public/rest/.htaccess /opt/ampache/public/play/.htaccess chown -R www-data:www-data /opt/ampache - rm -f /tmp/ampache*.backup - msg_ok "Restored Configuration" msg_info "Starting Service" systemctl start apache2 diff --git a/ct/anchor.sh b/ct/anchor.sh index 7702598a2..f0094c30c 100644 --- a/ct/anchor.sh +++ b/ct/anchor.sh @@ -35,9 +35,7 @@ function update_script() { systemctl stop anchor-web anchor-server msg_ok "Stopped Services" - msg_info "Backing up Configuration" - cp /opt/anchor/.env /opt/anchor.env.bak - msg_ok "Backed up Configuration" + create_backup /opt/anchor/.env CLEAN_INSTALL=1 fetch_and_deploy_gh_release "anchor" "ZhFahim/anchor" "tarball" @@ -57,8 +55,7 @@ function update_script() { cp -r public .next/standalone/public msg_ok "Built Web Interface" - cp /opt/anchor.env.bak /opt/anchor/.env - rm -f /opt/anchor.env.bak + restore_backup msg_info "Running Database Migrations" cd /opt/anchor/server diff --git a/ct/anytype-server.sh b/ct/anytype-server.sh index 5058177e6..c54c8da6b 100644 --- a/ct/anytype-server.sh +++ b/ct/anytype-server.sh @@ -36,17 +36,12 @@ function update_script() { systemctl stop anytype msg_ok "Stopped Service" - msg_info "Backing up Data" - cp -r /opt/anytype/data /opt/anytype_data_backup - msg_ok "Backed up Data" + create_backup /opt/anytype/data CLEAN_INSTALL=1 fetch_and_deploy_gh_release "anytype" "grishy/any-sync-bundle" "prebuild" "latest" "/opt/anytype" "any-sync-bundle_*_linux_amd64.tar.gz" chmod +x /opt/anytype/any-sync-bundle - msg_info "Restoring Data" - cp -r /opt/anytype_data_backup/. /opt/anytype/data - rm -rf /opt/anytype_data_backup - msg_ok "Restored Data" + restore_backup msg_info "Starting Service" systemctl start anytype diff --git a/ct/apache-tomcat.sh b/ct/apache-tomcat.sh index 48b9bc5f8..734fe1bde 100644 --- a/ct/apache-tomcat.sh +++ b/ct/apache-tomcat.sh @@ -26,26 +26,26 @@ function update_script() { check_container_resources TOMCAT_DIR=$(ls -d /opt/tomcat-* 2>/dev/null | head -n1) - if [[ -z "$TOMCAT_DIR" || ! -d "$TOMCAT_DIR" ]]; then + if [[ -z $TOMCAT_DIR || ! -d $TOMCAT_DIR ]]; then msg_error "No ${APP} Installation Found!" exit fi # Detect major version and current version from install path (e.g., /opt/tomcat-11 -> 11) TOMCAT_MAJOR=$(basename "$TOMCAT_DIR" | grep -oP 'tomcat-\K[0-9]+') - if [[ -z "$TOMCAT_MAJOR" ]]; then + if [[ -z $TOMCAT_MAJOR ]]; then msg_error "Cannot determine Tomcat major version from path: $TOMCAT_DIR" exit fi CURRENT_VERSION=$(grep -oP 'Apache Tomcat Version \K[0-9.]+' "$TOMCAT_DIR/RELEASE-NOTES" 2>/dev/null || echo "unknown") LATEST_VERSION=$(curl -fsSL "https://dlcdn.apache.org/tomcat/tomcat-${TOMCAT_MAJOR}/" | grep -oP 'v[0-9]+\.[0-9]+\.[0-9]+(-M[0-9]+)?/' | sort -V | tail -n1 | sed 's/\/$//; s/v//') - if [[ -z "$LATEST_VERSION" ]]; then + if [[ -z $LATEST_VERSION ]]; then msg_error "Failed to fetch latest version for Tomcat ${TOMCAT_MAJOR}" exit fi - if [[ "$CURRENT_VERSION" == "$LATEST_VERSION" ]]; then + if [[ $CURRENT_VERSION == "$LATEST_VERSION" ]]; then msg_ok "${APP} ${CURRENT_VERSION} is already up to date" exit fi @@ -54,13 +54,9 @@ function update_script() { systemctl stop tomcat msg_ok "Stopped Tomcat service" - msg_info "Backing up configuration and applications" - BACKUP_DIR="/tmp/tomcat-backup-$$" - mkdir -p "$BACKUP_DIR" - cp -a "$TOMCAT_DIR/conf" "$BACKUP_DIR/conf" - cp -a "$TOMCAT_DIR/webapps" "$BACKUP_DIR/webapps" - [[ -d "$TOMCAT_DIR/lib" ]] && cp -a "$TOMCAT_DIR/lib" "$BACKUP_DIR/lib" - msg_ok "Backed up configuration and applications" + create_backup $TOMCAT_DIR/conf + [[ -d $TOMCAT_DIR/webapps ]] && create_backup $TOMCAT_DIR/webapps + [[ -d $TOMCAT_DIR/lib ]] && create_backup $TOMCAT_DIR/lib msg_info "Downloading Tomcat ${LATEST_VERSION}" TOMCAT_URL="https://dlcdn.apache.org/tomcat/tomcat-${TOMCAT_MAJOR}/v${LATEST_VERSION}/bin/apache-tomcat-${LATEST_VERSION}.tar.gz" @@ -78,7 +74,7 @@ function update_script() { cp -a "$BACKUP_DIR/webapps"/* "$TOMCAT_DIR/webapps/" 2>/dev/null || true if [[ -d "$BACKUP_DIR/lib" ]]; then for jar in "$BACKUP_DIR/lib"/*.jar; do - [[ -f "$jar" ]] || continue + [[ -f $jar ]] || continue jar_name=$(basename "$jar") if [[ ! -f "$TOMCAT_DIR/lib/$jar_name" ]]; then cp "$jar" "$TOMCAT_DIR/lib/" diff --git a/ct/babybuddy.sh b/ct/babybuddy.sh index 66d5f71f7..29fc7703a 100644 --- a/ct/babybuddy.sh +++ b/ct/babybuddy.sh @@ -37,16 +37,17 @@ function update_script() { systemctl stop uwsgi msg_ok "Services Stopped" + create_backup /opt/babybuddy/babybuddy/settings/production.py + msg_info "Cleaning old files" - cp /opt/babybuddy/babybuddy/settings/production.py /tmp/production.py.bak find . -mindepth 1 -maxdepth 1 ! -name '.venv' -exec rm -rf {} + msg_ok "Cleaned old files" fetch_and_deploy_gh_release "babybuddy" "babybuddy/babybuddy" "tarball" + restore_backup msg_info "Updating ${APP}" cd /opt/babybuddy - mv /tmp/production.py.bak /opt/babybuddy/babybuddy/settings/production.py source .venv/bin/activate $STD uv pip install -r requirements.txt export DJANGO_SETTINGS_MODULE=babybuddy.settings.production diff --git a/ct/baikal.sh b/ct/baikal.sh index cc568f039..74550dd8e 100644 --- a/ct/baikal.sh +++ b/ct/baikal.sh @@ -34,22 +34,19 @@ function update_script() { systemctl stop apache2 msg_ok "Stopped Service" - msg_info "Backing up data" - mv /opt/baikal /opt/baikal-backup - msg_ok "Backed up data" + create_backup /opt/baikal/config/baikal.yaml \ + /opt/baikal/Specific/ PHP_APACHE="YES" PHP_VERSION="8.3" setup_php setup_composer fetch_and_deploy_gh_release "baikal" "sabre-io/Baikal" "tarball" - - msg_info "Configuring Baikal" - cp -r /opt/baikal-backup/config/baikal.yaml /opt/baikal/config/ - cp -r /opt/baikal-backup/Specific/ /opt/baikal/ + restore_backup chown -R www-data:www-data /opt/baikal/ chmod -R 755 /opt/baikal/ + + msg_info "Configuring Baikal" cd /opt/baikal $STD composer install - rm -rf /opt/baikal-backup msg_ok "Configured Baikal" msg_info "Starting Service" diff --git a/ct/bambuddy.sh b/ct/bambuddy.sh index 045e2bc4a..8f19a1015 100644 --- a/ct/bambuddy.sh +++ b/ct/bambuddy.sh @@ -38,11 +38,11 @@ function update_script() { msg_ok "Stopped Service" msg_info "Backing up Configuration and Data" - cp /opt/bambuddy/.env /opt/bambuddy.env.bak - cp -r /opt/bambuddy/data /opt/bambuddy_data_bak - [[ -f /opt/bambuddy/bambuddy.db ]] && cp /opt/bambuddy/bambuddy.db /opt/bambuddy.db.bak - [[ -f /opt/bambuddy/bambutrack.db ]] && cp /opt/bambuddy/bambutrack.db /opt/bambutrack.db.bak - [[ -d /opt/bambuddy/archive ]] && cp -r /opt/bambuddy/archive /opt/bambuddy_archive_bak + create_backup /opt/bambuddy/.env \ + /opt/bambuddy/data \ + /opt/bambuddy/bambuddy.db \ + /opt/bambuddy/bambutrack.db \ + /opt/bambuddy/archive msg_ok "Backed up Configuration and Data" CLEAN_INSTALL=1 fetch_and_deploy_gh_release "bambuddy" "maziggy/bambuddy" "tarball" "latest" "/opt/bambuddy" @@ -59,19 +59,7 @@ function update_script() { $STD npm run build msg_ok "Rebuilt Frontend" - msg_info "Restoring Configuration and Data" - mkdir -p /opt/bambuddy/data - cp /opt/bambuddy.env.bak /opt/bambuddy/.env - cp -r /opt/bambuddy_data_bak/. /opt/bambuddy/data/ - [[ -f /opt/bambuddy.db.bak ]] && cp /opt/bambuddy.db.bak /opt/bambuddy/bambuddy.db - [[ -f /opt/bambutrack.db.bak ]] && cp /opt/bambutrack.db.bak /opt/bambuddy/bambutrack.db - if [[ -d /opt/bambuddy_archive_bak ]]; then - mkdir -p /opt/bambuddy/archive - cp -r /opt/bambuddy_archive_bak/. /opt/bambuddy/archive/ - fi - rm -f /opt/bambuddy.env.bak /opt/bambuddy.db.bak /opt/bambutrack.db.bak - rm -rf /opt/bambuddy_data_bak /opt/bambuddy_archive_bak - msg_ok "Restored Configuration and Data" + restore_backup msg_info "Starting Service" systemctl start bambuddy diff --git a/ct/bar-assistant.sh b/ct/bar-assistant.sh index be0b90f24..d38393ef0 100644 --- a/ct/bar-assistant.sh +++ b/ct/bar-assistant.sh @@ -37,16 +37,15 @@ function update_script() { PHP_VERSION="8.4" PHP_FPM="YES" PHP_MODULE="pdo-sqlite" setup_php - msg_info "Backing up Bar Assistant" - mv /opt/bar-assistant /opt/bar-assistant-backup - msg_ok "Backed up Bar Assistant" + create_backup /opt/bar-assistant/.env \ + /opt/bar-assistant/storage/bar-assistant fetch_and_deploy_gh_release "bar-assistant" "karlomikus/bar-assistant" "tarball" "latest" "/opt/bar-assistant" setup_composer - msg_info "Updating Bar-Assistant" - cp -r /opt/bar-assistant-backup/.env /opt/bar-assistant/.env - cp -r /opt/bar-assistant-backup/storage/bar-assistant /opt/bar-assistant/storage/bar-assistant + restore_backup + + msg_info "Configuring Bar-Assistant" cd /opt/bar-assistant $STD composer install --no-interaction $STD php artisan migrate --force @@ -57,8 +56,7 @@ function update_script() { $STD php artisan route:cache $STD php artisan event:cache chown -R www-data:www-data /opt/bar-assistant - rm -rf /opt/bar-assistant-backup - msg_ok "Updated Bar-Assistant" + msg_ok "Configured Bar-Assistant" msg_info "Starting nginx" systemctl start nginx @@ -66,23 +64,21 @@ function update_script() { fi if check_for_gh_release "vue-salt-rim" "karlomikus/vue-salt-rim"; then - msg_info "Backing up Vue Salt Rim" - mv /opt/vue-salt-rim /opt/vue-salt-rim-backup - msg_ok "Backed up Vue Salt Rim" + + create_backup /opt/vue-salt-rim/public/config.js msg_info "Stopping nginx" systemctl stop nginx msg_ok "Stopped nginx" fetch_and_deploy_gh_release "vue-salt-rim" "karlomikus/vue-salt-rim" "tarball" "latest" "/opt/vue-salt-rim" + restore_backup - msg_info "Updating Vue Salt Rim" - cp /opt/vue-salt-rim-backup/public/config.js /opt/vue-salt-rim/public/config.js + msg_info "Configuring Vue Salt Rim" cd /opt/vue-salt-rim $STD npm install $STD npm run build - rm -rf /opt/vue-salt-rim-backup - msg_ok "Updated Vue Salt Rim" + msg_ok "Configured Vue Salt Rim" msg_info "Starting nginx" systemctl start nginx diff --git a/ct/baserow.sh b/ct/baserow.sh index 34ce68ccf..fa0d044db 100644 --- a/ct/baserow.sh +++ b/ct/baserow.sh @@ -35,27 +35,20 @@ function update_script() { systemctl stop baserow-backend baserow-celery baserow-celery-beat baserow-celery-export baserow-frontend msg_ok "Stopped Services" - msg_info "Backing up Data" - cp /opt/baserow/.env /opt/baserow.env.bak - msg_ok "Backed up Data" - + create_backup /opt/baserow/.env CLEAN_INSTALL=1 fetch_and_deploy_gh_release "baserow" "baserow/baserow" "tarball" + restore_backup - msg_info "Restoring Configuration" - cp /opt/baserow.env.bak /opt/baserow/.env - rm -f /opt/baserow.env.bak - msg_ok "Restored Configuration" - - msg_info "Updating Backend Dependencies" + msg_info "Configuring Baserow" cd /opt/baserow/backend $STD uv sync --frozen --no-dev - msg_ok "Updated Backend Dependencies" + msg_ok "Configured Baserow" - msg_info "Updating Frontend" + msg_info "Rebuilding Frontend" cd /opt/baserow/web-frontend $STD npm install $STD npm run build - msg_ok "Updated Frontend" + msg_ok "Rebuilt Frontend" msg_info "Running Migrations" cd /opt/baserow/backend diff --git a/ct/bentopdf.sh b/ct/bentopdf.sh index eabbc1952..072a71db9 100644 --- a/ct/bentopdf.sh +++ b/ct/bentopdf.sh @@ -36,18 +36,13 @@ function update_script() { systemctl stop bentopdf msg_ok "Stopped Service" - [[ -f /opt/bentopdf/.env.production ]] && cp /opt/bentopdf/.env.production /opt/production.env - + create_backup /opt/bentopdf/.env.production CLEAN_INSTALL=1 fetch_and_deploy_gh_release "bentopdf" "alam00000/bentopdf" "tarball" "latest" "/opt/bentopdf" + restore_backup - msg_info "Updating BentoPDF" + msg_info "Configuring BentoPDF" cd /opt/bentopdf $STD npm ci --no-audit --no-fund - if [[ -f /opt/production.env ]]; then - mv /opt/production.env ./.env.production - else - cp ./.env.example ./.env.production - fi export NODE_OPTIONS="--max-old-space-size=3072" export SIMPLE_MODE=true export VITE_USE_CDN=true @@ -64,9 +59,9 @@ EOF if [[ ! -f /etc/ssl/private/bentopdf-selfsigned.key || ! -f /etc/ssl/certs/bentopdf-selfsigned.crt ]]; then CERT_CN="$(hostname -I | awk '{print $1}')" $STD openssl req -x509 -nodes -newkey rsa:2048 -days 3650 \ - -keyout /etc/ssl/private/bentopdf-selfsigned.key \ - -out /etc/ssl/certs/bentopdf-selfsigned.crt \ - -subj "/CN=${CERT_CN}" + -keyout /etc/ssl/private/bentopdf-selfsigned.key \ + -out /etc/ssl/certs/bentopdf-selfsigned.crt \ + -subj "/CN=${CERT_CN}" fi cat <<'EOF' >/etc/nginx/sites-available/bentopdf server { diff --git a/ct/bichon.sh b/ct/bichon.sh index 00f7dd77b..94bcf71a7 100644 --- a/ct/bichon.sh +++ b/ct/bichon.sh @@ -35,14 +35,14 @@ function update_script() { fi MIGRATE_V1=0 - if [[ "$CURRENT_VERSION" == 0.* ]]; then + if [[ $CURRENT_VERSION == 0.* ]]; then MIGRATE_V1=1 DISK_USAGE=$(df / | awk 'NR==2 {print $5}' | sed 's/%//') if [ "$DISK_USAGE" -gt 50 ]; then echo -e "\n${RD}Warning: Less than 50% free storage remaining on the root disk.${CL}" echo -e "${RD}Bichon v1 data migration temporarily duplicates data and requires free space for it.${CL}" read -r -p "Are you sure you want to proceed with the update? (y/N): " proceed - if [[ ! "$proceed" =~ ^[Yy]$ ]]; then + if [[ ! $proceed =~ ^[Yy]$ ]]; then msg_error "Update cancelled by user." exit fi @@ -53,7 +53,7 @@ function update_script() { echo -e "\n${RD}Warning: LXC has less than 2GB of RAM allocated (${RAM_TOTAL}MB).${CL}" echo -e "${RD}Bichon v1 data migration consumes significant memory and may crash if insufficient.${CL}" read -r -p "Are you sure you want to proceed with the update? (y/N): " proceed_ram - if [[ ! "$proceed_ram" =~ ^[Yy]$ ]]; then + if [[ ! $proceed_ram =~ ^[Yy]$ ]]; then msg_error "Update cancelled by user." exit fi @@ -65,12 +65,12 @@ function update_script() { systemctl stop bichon msg_ok "Stopped service" - cp /opt/bichon/bichon.env /tmp/bichon.env.backup + create_backup /opt/bichon/bichon.env if [ "$MIGRATE_V1" -eq 1 ] && [ "$CURRENT_VERSION" != "0.3.7" ]; then - msg_info "Updating to intermediate version v0.3.7" CLEAN_INSTALL=1 fetch_and_deploy_gh_release "bichon" "rustmailer/bichon" "prebuild" "v0.3.7" "/opt/bichon" "bichon-*-x86_64-unknown-linux-gnu.tar.gz" - cp /tmp/bichon.env.backup /opt/bichon/bichon.env + restore_backup + msg_info "Updating to intermediate version v0.3.7" systemctl start bichon sleep 30 systemctl stop bichon @@ -78,7 +78,7 @@ function update_script() { fi CLEAN_INSTALL=1 fetch_and_deploy_gh_release "bichon" "rustmailer/bichon" "prebuild" "latest" "/opt/bichon" "bichon-*-x86_64-unknown-linux-gnu.tar.gz" - cp /tmp/bichon.env.backup /opt/bichon/bichon.env + restore_backup if [ "$MIGRATE_V1" -eq 1 ]; then msg_info "Running Bichon v1 Data Migration (patience)" diff --git a/ct/bitmagnet.sh b/ct/bitmagnet.sh index ab4d534d1..8d8d5b875 100644 --- a/ct/bitmagnet.sh +++ b/ct/bitmagnet.sh @@ -56,21 +56,19 @@ function update_script() { bitmagnet \ >/tmp/backup.sql mv /tmp/backup.sql /opt/ - [ -f /opt/bitmagnet/.env ] && cp /opt/bitmagnet/.env /opt/ - [ -f /opt/bitmagnet/config.yml ] && cp /opt/bitmagnet/config.yml /opt/ + create_backup /opt/bitmagnet/.env \ + /opt/bitmagnet/config.yml msg_ok "Data backed up" - rm -rf /opt/bitmagnet - fetch_and_deploy_gh_release "bitmagnet" "bitmagnet-io/bitmagnet" "tarball" + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "bitmagnet" "bitmagnet-io/bitmagnet" "tarball" + restore_backup - msg_info "Updating Bitmagnet" + msg_info "Configuring Bitmagnet" cd /opt/bitmagnet VREL=v$(curl -fsSL https://api.github.com/repos/bitmagnet-io/bitmagnet/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') $STD go build -ldflags "-s -w -X github.com/bitmagnet-io/bitmagnet/internal/version.GitTag=$VREL" chmod +x bitmagnet - [ -f "/opt/.env" ] && cp "/opt/.env" /opt/bitmagnet/ - [ -f "/opt/config.yml" ] && cp "/opt/config.yml" /opt/bitmagnet/ - msg_ok "Updated Bitmagnet" + msg_ok "Configured Bitmagnet" msg_info "Starting Service" systemctl start bitmagnet-web diff --git a/ct/blocky.sh b/ct/blocky.sh index d8b57c24d..b26890622 100644 --- a/ct/blocky.sh +++ b/ct/blocky.sh @@ -33,15 +33,9 @@ function update_script() { systemctl stop blocky msg_ok "Stopped Service" - msg_info "Backup Config" - mv /opt/blocky/config.yml /opt/config.yml - msg_ok "Backed Up Config" - + create_backup /opt/blocky/config.yml CLEAN_INSTALL=1 fetch_and_deploy_gh_release "blocky" "0xERR0R/blocky" "prebuild" "latest" "/opt/blocky" "blocky_*_Linux_x86_64.tar.gz" - - msg_info "Restore Config" - mv /opt/config.yml /opt/blocky/config.yml - msg_ok "Restored Config" + restore_backup msg_info "Starting Service" systemctl start blocky diff --git a/ct/bookstack.sh b/ct/bookstack.sh index eafc91657..caa720d4b 100644 --- a/ct/bookstack.sh +++ b/ct/bookstack.sh @@ -36,20 +36,14 @@ function update_script() { systemctl stop apache2 msg_ok "Services Stopped" - msg_info "Backing up data" - mv /opt/bookstack /opt/bookstack-backup - msg_ok "Backup finished" - + create_backup /opt/bookstack/.env \ + /opt/bookstack/public/uploads \ + /opt/bookstack/storage/uploads \ + /opt/bookstack/themes fetch_and_deploy_gh_release "bookstack" "BookStackApp/BookStack" "tarball" PHP_VERSION="8.3" PHP_APACHE="YES" PHP_FPM="YES" PHP_MODULE="ldap,tidy,mysqli" setup_php setup_composer - - msg_info "Restoring backup" - cp /opt/bookstack-backup/.env /opt/bookstack/.env - [[ -d /opt/bookstack-backup/public/uploads ]] && cp -a /opt/bookstack-backup/public/uploads/. /opt/bookstack/public/uploads/ - [[ -d /opt/bookstack-backup/storage/uploads ]] && cp -a /opt/bookstack-backup/storage/uploads/. /opt/bookstack/storage/uploads/ - [[ -d /opt/bookstack-backup/themes ]] && cp -a /opt/bookstack-backup/themes/. /opt/bookstack/themes/ - msg_ok "Backup restored" + restore_backup msg_info "Configuring BookStack" cd /opt/bookstack @@ -60,7 +54,6 @@ function update_script() { chmod -R 755 /opt/bookstack /opt/bookstack/bootstrap/cache /opt/bookstack/public/uploads /opt/bookstack/storage chmod -R 775 /opt/bookstack/storage /opt/bookstack/bootstrap/cache /opt/bookstack/public/uploads chmod -R 640 /opt/bookstack/.env - rm -rf /opt/bookstack-backup msg_ok "Configured BookStack" msg_info "Starting Apache2" diff --git a/ct/bytestash.sh b/ct/bytestash.sh index 5a65a9b76..c71e100ae 100644 --- a/ct/bytestash.sh +++ b/ct/bytestash.sh @@ -34,25 +34,10 @@ function update_script() { systemctl stop bytestash-backend bytestash-frontend msg_ok "Services Stopped" - msg_info "Backing up data" - tmp_dir="/opt/bytestash-data-backup" - mkdir -p "$tmp_dir" - if [[ -d /opt/bytestash/data ]]; then - cp -r /opt/bytestash/data "$tmp_dir"/data - elif [[ -d /opt/data ]]; then - cp -r /opt/data "$tmp_dir"/data - fi - msg_ok "Data backed up" - + [[ -d /opt/bytestash/data ]] && create_backup /opt/bytestash/data + [[ -d /opt/data ]] && create_backup /opt/data CLEAN_INSTALL=1 fetch_and_deploy_gh_release "bytestash" "jordan-dalby/ByteStash" "tarball" - - msg_info "Restoring data" - if [[ -d "$tmp_dir"/data ]]; then - mkdir -p /opt/bytestash/data - cp -r "$tmp_dir"/data/* /opt/bytestash/data/ - rm -rf "$tmp_dir" - fi - msg_ok "Data restored" + restore_backup msg_info "Configuring ByteStash" cd /opt/bytestash/server From 9c88ef84a0af5ac4ce80f45b839167a5792157a3 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sat, 13 Jun 2026 16:43:39 +0000 Subject: [PATCH 05/78] Update CHANGELOG.md (#15089) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4f87b6ad9..00431d8ca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -486,6 +486,12 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit - BookOrbit ([#15080](https://github.com/community-scripts/ProxmoxVE/pull/15080)) +### 🚀 Updated Scripts + + - #### 🔧 Refactor + + - Refactor: Implement backup functions for scripts A-B [@tremor021](https://github.com/tremor021) ([#15075](https://github.com/community-scripts/ProxmoxVE/pull/15075)) + ## 2026-06-12 ### 🆕 New Scripts From d9b7255a0b60a3f5831587d0bfa50deeaafe226b Mon Sep 17 00:00:00 2001 From: Tom Frenzel <40773830+tomfrenzel@users.noreply.github.com> Date: Sat, 13 Jun 2026 20:40:19 +0200 Subject: [PATCH 06/78] HomeBox: Support v0.26.0 (#15086) --- ct/homebox.sh | 10 ++++++---- install/homebox-install.sh | 2 ++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/ct/homebox.sh b/ct/homebox.sh index c87879060..bc36c2547 100644 --- a/ct/homebox.sh +++ b/ct/homebox.sh @@ -39,14 +39,16 @@ function update_script() { systemctl stop homebox msg_ok "Stopped Service" - if [ -f /opt/homebox ] && [ -x /opt/homebox ]; then - rm -f /opt/homebox - fi - fetch_and_deploy_gh_release "homebox" "sysadminsmedia/homebox" "prebuild" "latest" "/opt/homebox" "homebox_Linux_x86_64.tar.gz" + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "homebox" "sysadminsmedia/homebox" "prebuild" "latest" "/opt/homebox" "homebox_Linux_x86_64.tar.gz" chmod +x /opt/homebox/homebox [ -f /opt/.env ] && mv /opt/.env /opt/homebox/.env [ -d /opt/.data ] && mv /opt/.data /opt/homebox/.data + if ! grep -q "HBOX_AUTH_API_KEY_PEPPER" /opt/homebox/.env; then + AUTH_KEY=$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32) + echo "HBOX_AUTH_API_KEY_PEPPER=${AUTH_KEY}" >>/opt/homebox/.env + fi + msg_info "Starting Service" systemctl start homebox msg_ok "Started Service" diff --git a/install/homebox-install.sh b/install/homebox-install.sh index 70d370249..065a16874 100644 --- a/install/homebox-install.sh +++ b/install/homebox-install.sh @@ -18,11 +18,13 @@ fetch_and_deploy_gh_release "homebox" "sysadminsmedia/homebox" "prebuild" "lates msg_info "Configuring Homebox" chmod +x /opt/homebox/homebox +AUTH_KEY="$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | cut -c1-32)" cat </opt/homebox/.env # For possible environment variables check here: https://homebox.software/en/configure-homebox HBOX_MODE=production HBOX_WEB_PORT=7745 HBOX_WEB_HOST=0.0.0.0 +HBOX_AUTH_API_KEY_PEPPER=${AUTH_KEY} EOF msg_ok "Configured Homebox" From d214627ca9a49f5355dbe500848cb4874924e0cc Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sat, 13 Jun 2026 18:40:40 +0000 Subject: [PATCH 07/78] Update CHANGELOG.md (#15091) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 00431d8ca..91d898858 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -488,6 +488,10 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit ### 🚀 Updated Scripts + - #### 🐞 Bug Fixes + + - HomeBox: Support v0.26.0 [@tomfrenzel](https://github.com/tomfrenzel) ([#15086](https://github.com/community-scripts/ProxmoxVE/pull/15086)) + - #### 🔧 Refactor - Refactor: Implement backup functions for scripts A-B [@tremor021](https://github.com/tremor021) ([#15075](https://github.com/community-scripts/ProxmoxVE/pull/15075)) From 6c1024776dd2c07e3f0d92e3105dcef62176e45c Mon Sep 17 00:00:00 2001 From: Chris Date: Sat, 13 Jun 2026 14:43:35 -0400 Subject: [PATCH 08/78] Immich: Update image-processing libraries (#15082) --- ct/immich.sh | 8 ++++---- install/immich-install.sh | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/ct/immich.sh b/ct/immich.sh index c3ba5dff9..f0362c2df 100644 --- a/ct/immich.sh +++ b/ct/immich.sh @@ -310,7 +310,7 @@ function compile_libjxl() { SOURCE=${SOURCE_DIR}/libjxl JPEGLI_LIBJPEG_LIBRARY_SOVERSION="62" JPEGLI_LIBJPEG_LIBRARY_VERSION="62.3.0" - LIBJXL_REVISION="794a5dcf0d54f9f0b20d288a12e87afb91d20dfc" + LIBJXL_REVISION="332feb17d17311c748445f7ee75c4fb55cc38530" # : "${LIBJXL_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libjxl.json)}" if [[ "$LIBJXL_REVISION" != "$(grep 'libjxl' ~/.immich_library_revisions | awk '{print $2}')" ]]; then msg_info "Recompiling libjxl" @@ -355,7 +355,7 @@ function compile_libjxl() { function compile_libheif() { SOURCE=${SOURCE_DIR}/libheif ensure_dependencies libaom-dev - LIBHEIF_REVISION="35dad50a9145332a7bfdf1ff6aef6801fb613d68" + LIBHEIF_REVISION="62f1b8c76ed4d8305071fdacbe74ef9717bacac5" # : "${LIBHEIF_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libheif.json)}" if [[ "${update:-}" ]] || [[ "$LIBHEIF_REVISION" != "$(grep 'libheif' ~/.immich_library_revisions | awk '{print $2}')" ]]; then msg_info "Recompiling libheif" @@ -387,7 +387,7 @@ function compile_libheif() { function compile_libraw() { SOURCE=${SOURCE_DIR}/libraw - LIBRAW_REVISION="0b56545a4f828743f28a4345cdfdd4c49f9f9a2a" + LIBRAW_REVISION="b860248a89d9082b8e0a1e202e516f46af9adb29" # : "${LIBRAW_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libraw.json)}" if [[ "$LIBRAW_REVISION" != "$(grep 'libraw' ~/.immich_library_revisions | awk '{print $2}')" ]]; then msg_info "Recompiling libraw" @@ -430,7 +430,7 @@ function compile_imagemagick() { function compile_libvips() { SOURCE=$SOURCE_DIR/libvips - LIBVIPS_REVISION="0c9151a4f416d2f8ae20a755db218f6637050eec" + LIBVIPS_REVISION="17ad2f62dda7e39985955da189183e594683d45e" if [[ "$LIBVIPS_REVISION" != "$(grep 'libvips' ~/.immich_library_revisions | awk '{print $2}')" ]]; then msg_info "Recompiling libvips" [[ -d "$SOURCE" ]] && rm -rf "$SOURCE" diff --git a/install/immich-install.sh b/install/immich-install.sh index a31ad9e45..378dd0642 100644 --- a/install/immich-install.sh +++ b/install/immich-install.sh @@ -178,7 +178,7 @@ cd "$STAGING_DIR" SOURCE=${SOURCE_DIR}/libjxl JPEGLI_LIBJPEG_LIBRARY_SOVERSION="62" JPEGLI_LIBJPEG_LIBRARY_VERSION="62.3.0" -LIBJXL_REVISION="794a5dcf0d54f9f0b20d288a12e87afb91d20dfc" +LIBJXL_REVISION="332feb17d17311c748445f7ee75c4fb55cc38530" # : "${LIBJXL_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libjxl.json)}" $STD git clone https://github.com/libjxl/libjxl.git "$SOURCE" cd "$SOURCE" @@ -216,7 +216,7 @@ msg_ok "(1/5) Compiled libjxl" msg_info "(2/5) Compiling libheif" SOURCE=${SOURCE_DIR}/libheif -LIBHEIF_REVISION="35dad50a9145332a7bfdf1ff6aef6801fb613d68" +LIBHEIF_REVISION="62f1b8c76ed4d8305071fdacbe74ef9717bacac5" # : "${LIBHEIF_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libheif.json)}" $STD git clone https://github.com/strukturag/libheif.git "$SOURCE" cd "$SOURCE" @@ -242,7 +242,7 @@ msg_ok "(2/5) Compiled libheif" msg_info "(3/5) Compiling libraw" SOURCE=${SOURCE_DIR}/libraw -LIBRAW_REVISION="0b56545a4f828743f28a4345cdfdd4c49f9f9a2a" +LIBRAW_REVISION="b860248a89d9082b8e0a1e202e516f46af9adb29" # : "${LIBRAW_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libraw.json)}" $STD git clone https://github.com/LibRaw/LibRaw.git "$SOURCE" cd "$SOURCE" @@ -272,7 +272,7 @@ msg_ok "(4/5) Compiled imagemagick" msg_info "(5/5) Compiling libvips" SOURCE=$SOURCE_DIR/libvips -LIBVIPS_REVISION="0c9151a4f416d2f8ae20a755db218f6637050eec" +LIBVIPS_REVISION="17ad2f62dda7e39985955da189183e594683d45e" $STD git clone https://github.com/libvips/libvips.git "$SOURCE" cd "$SOURCE" $STD git reset --hard "$LIBVIPS_REVISION" From 054dd68c15b4e725fd017ff2624b74e0946f4207 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sat, 13 Jun 2026 18:44:03 +0000 Subject: [PATCH 09/78] Update CHANGELOG.md (#15092) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 91d898858..7301e1036 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -490,6 +490,7 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit - #### 🐞 Bug Fixes + - Immich: Update image-processing libraries [@vhsdream](https://github.com/vhsdream) ([#15082](https://github.com/community-scripts/ProxmoxVE/pull/15082)) - HomeBox: Support v0.26.0 [@tomfrenzel](https://github.com/tomfrenzel) ([#15086](https://github.com/community-scripts/ProxmoxVE/pull/15086)) - #### 🔧 Refactor From 4f97ac2090aec14df57476bccc23ec229ecc5f97 Mon Sep 17 00:00:00 2001 From: thieneret <123479547+thieneret@users.noreply.github.com> Date: Sun, 14 Jun 2026 00:38:59 +0200 Subject: [PATCH 10/78] Update authentik version to 2026.5.3 (#15093) --- ct/authentik.sh | 2 +- install/authentik-install.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ct/authentik.sh b/ct/authentik.sh index 53fe25132..ab9451596 100644 --- a/ct/authentik.sh +++ b/ct/authentik.sh @@ -42,7 +42,7 @@ function update_script() { RUST_PROFILE="minimal" RUST_TOOLCHAIN="stable" setup_rust setup_yq - AUTHENTIK_VERSION="version/2026.5.2" + AUTHENTIK_VERSION="version/2026.5.3" # Source: https://github.com/goauthentik/fips/blob/main/Makefile#L26 XMLSEC_VERSION="1.3.11" diff --git a/install/authentik-install.sh b/install/authentik-install.sh index f959493dd..23a1adc17 100644 --- a/install/authentik-install.sh +++ b/install/authentik-install.sh @@ -59,7 +59,7 @@ PG_VERSION="17" setup_postgresql PG_DB_NAME="authentik" PG_DB_USER="authentik" PG_DB_GRANT_SUPERUSER="true" setup_postgresql_db XMLSEC_VERSION="1.3.11" -AUTHENTIK_VERSION="version/2026.5.2" +AUTHENTIK_VERSION="version/2026.5.3" fetch_and_deploy_gh_release "xmlsec" "lsh123/xmlsec" "tarball" "${XMLSEC_VERSION}" "/opt/xmlsec" fetch_and_deploy_gh_release "authentik" "goauthentik/authentik" "tarball" "${AUTHENTIK_VERSION}" "/opt/authentik" fetch_and_deploy_gh_release "geoipupdate" "maxmind/geoipupdate" "binary" From 7dbee6cd839545237915446ab30b704d0f2b08b5 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sat, 13 Jun 2026 22:39:22 +0000 Subject: [PATCH 11/78] Update CHANGELOG.md (#15095) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7301e1036..03596b7b0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -488,6 +488,8 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit ### 🚀 Updated Scripts + - Update authentik version to 2026.5.3 [@thieneret](https://github.com/thieneret) ([#15093](https://github.com/community-scripts/ProxmoxVE/pull/15093)) + - #### 🐞 Bug Fixes - Immich: Update image-processing libraries [@vhsdream](https://github.com/vhsdream) ([#15082](https://github.com/community-scripts/ProxmoxVE/pull/15082)) From 46f163c50ce2e77bfc54a0975c9b4ed839a0c249 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sun, 14 Jun 2026 00:25:15 +0000 Subject: [PATCH 12/78] Archive old changelog entries (#15097) Co-authored-by: github-actions[bot] --- .github/changelogs/2026/06.md | 127 ++++++++++++++++++++++++++++++++++ CHANGELOG.md | 127 ++-------------------------------- 2 files changed, 132 insertions(+), 122 deletions(-) diff --git a/.github/changelogs/2026/06.md b/.github/changelogs/2026/06.md index 93b3f0602..ddd1c030d 100644 --- a/.github/changelogs/2026/06.md +++ b/.github/changelogs/2026/06.md @@ -1,3 +1,130 @@ +## 2026-06-13 + +### 🆕 New Scripts + + - BookOrbit ([#15080](https://github.com/community-scripts/ProxmoxVE/pull/15080)) + +### 🚀 Updated Scripts + + - Update authentik version to 2026.5.3 [@thieneret](https://github.com/thieneret) ([#15093](https://github.com/community-scripts/ProxmoxVE/pull/15093)) + + - #### 🐞 Bug Fixes + + - Immich: Update image-processing libraries [@vhsdream](https://github.com/vhsdream) ([#15082](https://github.com/community-scripts/ProxmoxVE/pull/15082)) + - HomeBox: Support v0.26.0 [@tomfrenzel](https://github.com/tomfrenzel) ([#15086](https://github.com/community-scripts/ProxmoxVE/pull/15086)) + + - #### 🔧 Refactor + + - Refactor: Implement backup functions for scripts A-B [@tremor021](https://github.com/tremor021) ([#15075](https://github.com/community-scripts/ProxmoxVE/pull/15075)) + +## 2026-06-12 + +### 🆕 New Scripts + + - Twenty ([#15047](https://github.com/community-scripts/ProxmoxVE/pull/15047)) +- Alpine-Cinny ([#15044](https://github.com/community-scripts/ProxmoxVE/pull/15044)) + +### 💾 Core + + - #### ✨ New Features + + - [core] Implement backup and restore functions [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15067](https://github.com/community-scripts/ProxmoxVE/pull/15067)) + +## 2026-06-11 + +### 🆕 New Scripts + + - Clickhouse ([#15045](https://github.com/community-scripts/ProxmoxVE/pull/15045)) + +### 🚀 Updated Scripts + + - #### 🐞 Bug Fixes + + - Manyfold: add new dependency [@MickLesk](https://github.com/MickLesk) ([#15040](https://github.com/community-scripts/ProxmoxVE/pull/15040)) + - OpenArchiver: switch Rebuild Function [@MickLesk](https://github.com/MickLesk) ([#15042](https://github.com/community-scripts/ProxmoxVE/pull/15042)) + - CLIProxyAPI: Save management password to creds file [@tremor021](https://github.com/tremor021) ([#15051](https://github.com/community-scripts/ProxmoxVE/pull/15051)) + - Jotty: Fix wrong path test in config restore [@vhsdream](https://github.com/vhsdream) ([#15038](https://github.com/community-scripts/ProxmoxVE/pull/15038)) + - Fix for cross-seed after node upgrade [@TorinFrancis](https://github.com/TorinFrancis) ([#15025](https://github.com/community-scripts/ProxmoxVE/pull/15025)) + + - #### 🔧 Refactor + + - Alpine-Nextcloud: Upgrade PHP and dependencies in installation script [@MickLesk](https://github.com/MickLesk) ([#15039](https://github.com/community-scripts/ProxmoxVE/pull/15039)) + - [arm64] porting stage 1: set script arm64 statuses to yes [@asylumexp](https://github.com/asylumexp) ([#15052](https://github.com/community-scripts/ProxmoxVE/pull/15052)) + +### 💾 Core + + - #### ✨ New Features + + - misc scripts: add support for arm64 [@asylumexp](https://github.com/asylumexp) ([#12639](https://github.com/community-scripts/ProxmoxVE/pull/12639)) + + - #### 🔧 Refactor + + - [arm64] remove logic for custom debian arm64 template [@asylumexp](https://github.com/asylumexp) ([#15050](https://github.com/community-scripts/ProxmoxVE/pull/15050)) + +### 📚 Documentation + + - (github): Revise script request template [@MickLesk](https://github.com/MickLesk) ([#15058](https://github.com/community-scripts/ProxmoxVE/pull/15058)) + +## 2026-06-10 + +### 🆕 New Scripts + + - Baserow ([#14968](https://github.com/community-scripts/ProxmoxVE/pull/14968)) + +### 🚀 Updated Scripts + + - #### 🐞 Bug Fixes + + - Koillection: Fix update procedure [@tremor021](https://github.com/tremor021) ([#15033](https://github.com/community-scripts/ProxmoxVE/pull/15033)) + +## 2026-06-09 + +### 🆕 New Scripts + + - paperclip ([#14990](https://github.com/community-scripts/ProxmoxVE/pull/14990)) + +### 🚀 Updated Scripts + + - #### 🐞 Bug Fixes + + - endurain: Install pytz package during backend setup [@MickLesk](https://github.com/MickLesk) ([#15014](https://github.com/community-scripts/ProxmoxVE/pull/15014)) + + - #### 🔧 Refactor + + - Refactor: Proxmox Backup Server - use deb822 [@MickLesk](https://github.com/MickLesk) ([#15013](https://github.com/community-scripts/ProxmoxVE/pull/15013)) + +## 2026-06-08 + +### 🚀 Updated Scripts + + - #### 🐞 Bug Fixes + + - security: Fix HTTP to HTTPS for all package and repository downloads [@MickLesk](https://github.com/MickLesk) ([#15009](https://github.com/community-scripts/ProxmoxVE/pull/15009)) + - homelable: preserve MCP server config across updates [@ferr079](https://github.com/ferr079) ([#14996](https://github.com/community-scripts/ProxmoxVE/pull/14996)) + - changedetection: migrate Python install to uv venv [@ferr079](https://github.com/ferr079) ([#14995](https://github.com/community-scripts/ProxmoxVE/pull/14995)) + + - #### 🔧 Refactor + + - Update Flowwiseai to node 24 [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#14999](https://github.com/community-scripts/ProxmoxVE/pull/14999)) + +### 🧰 Tools + + - #### 🐞 Bug Fixes + + - security: Fix MITM RCE vulnerability in microcode scripts (CVE) [@MickLesk](https://github.com/MickLesk) ([#15007](https://github.com/community-scripts/ProxmoxVE/pull/15007)) + +## 2026-06-07 + +### 🚀 Updated Scripts + + - #### 🐞 Bug Fixes + + - Immich: use actual installed PostgreSQL version for vchord package [@MickLesk](https://github.com/MickLesk) ([#14989](https://github.com/community-scripts/ProxmoxVE/pull/14989)) + + - #### 🔧 Refactor + + - Navidrome: remove genereic filebrowser addon setup [@MickLesk](https://github.com/MickLesk) ([#14991](https://github.com/community-scripts/ProxmoxVE/pull/14991)) + ## 2026-06-06 ### 🆕 New Scripts diff --git a/CHANGELOG.md b/CHANGELOG.md index 03596b7b0..ca4d2b565 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -62,6 +62,9 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit + + + @@ -75,7 +78,7 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
-

June (6 entries)

+

June (13 entries)

[View June 2026 Changelog](.github/changelogs/2026/06.md) @@ -1049,124 +1052,4 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit - #### 🐞 Bug Fixes - - core: fall back to silent mode when no TTY or whiptail unavailable [@MickLesk](https://github.com/MickLesk) ([#14497](https://github.com/community-scripts/ProxmoxVE/pull/14497)) - -## 2026-05-14 - -### 🆕 New Scripts - - - CLIProxyAPI ([#14443](https://github.com/community-scripts/ProxmoxVE/pull/14443)) - -## 2026-05-13 - -### 🚀 Updated Scripts - - - #### 🐞 Bug Fixes - - - Fix: Broken Manifold update [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#14468](https://github.com/community-scripts/ProxmoxVE/pull/14468)) - - SoulSync: Fix update function [@tremor021](https://github.com/tremor021) ([#14465](https://github.com/community-scripts/ProxmoxVE/pull/14465)) - - Reactive-Resume: fix PDF generation timeout in LXC containers [@MickLesk](https://github.com/MickLesk) ([#14416](https://github.com/community-scripts/ProxmoxVE/pull/14416)) - - (calibre-web) Add --no-sandbox for PDF conversion [@jamesmyatt](https://github.com/jamesmyatt) ([#14461](https://github.com/community-scripts/ProxmoxVE/pull/14461)) - -### 💾 Core - - - #### 🔧 Refactor - - - tools.func: encode GitHub tag, refine pin logic, add Codeberg [@MickLesk](https://github.com/MickLesk) ([#14473](https://github.com/community-scripts/ProxmoxVE/pull/14473)) - -## 2026-05-12 - -### 🆕 New Scripts - - - DocuSeal ([#14445](https://github.com/community-scripts/ProxmoxVE/pull/14445)) -- Authentik ([#14440](https://github.com/community-scripts/ProxmoxVE/pull/14440)) - -### 🚀 Updated Scripts - - - #### 🐞 Bug Fixes - - - Save Omada version [@lucacome](https://github.com/lucacome) ([#14433](https://github.com/community-scripts/ProxmoxVE/pull/14433)) - - - #### ✨ New Features - - - OpenCloud: bump version to 6.2.0 [@vhsdream](https://github.com/vhsdream) ([#14451](https://github.com/community-scripts/ProxmoxVE/pull/14451)) - - - #### 🔧 Refactor - - - misc: bump node versions [@CrazyWolf13](https://github.com/CrazyWolf13) ([#14447](https://github.com/community-scripts/ProxmoxVE/pull/14447)) - -## 2026-05-11 - -### 🆕 New Scripts - - - Lychee ([#14424](https://github.com/community-scripts/ProxmoxVE/pull/14424)) - -### 🚀 Updated Scripts - - - #### 🐞 Bug Fixes - - - Termix: fix nginx pid path and log paths on update (#) [@MickLesk](https://github.com/MickLesk) ([#14419](https://github.com/community-scripts/ProxmoxVE/pull/14419)) - - Nginxproxymanager: restore NPM nginx.conf after OpenResty rebuid [@MickLesk](https://github.com/MickLesk) ([#14421](https://github.com/community-scripts/ProxmoxVE/pull/14421)) - - - #### 🔧 Refactor - - - InvestBrain: add commented reverse proxy config hints to .env [@MickLesk](https://github.com/MickLesk) ([#14422](https://github.com/community-scripts/ProxmoxVE/pull/14422)) - -### 🧰 Tools - - - #### 🐞 Bug Fixes - - - Cronmaster: fix unexpected EOF in update_cronmaster script [@MickLesk](https://github.com/MickLesk) ([#14420](https://github.com/community-scripts/ProxmoxVE/pull/14420)) - -## 2026-05-10 - -### 🚀 Updated Scripts - - - #### 🐞 Bug Fixes - - - Save Beszel version [@lucacome](https://github.com/lucacome) ([#14389](https://github.com/community-scripts/ProxmoxVE/pull/14389)) - - karakeep: Fix SERVER_VERSION update [@MickLesk](https://github.com/MickLesk) ([#14378](https://github.com/community-scripts/ProxmoxVE/pull/14378)) - - inspIRCd: Fix service not autostarting [@tremor021](https://github.com/tremor021) ([#14368](https://github.com/community-scripts/ProxmoxVE/pull/14368)) - - - #### 🔧 Refactor - - - refactor: webcheck [@CrazyWolf13](https://github.com/CrazyWolf13) ([#14391](https://github.com/community-scripts/ProxmoxVE/pull/14391)) - -### 💾 Core - - - #### 🐞 Bug Fixes - - - [tools.func]: Pin `pnpm` version [@tremor021](https://github.com/tremor021) ([#14386](https://github.com/community-scripts/ProxmoxVE/pull/14386)) - -## 2026-05-09 - -### 🚀 Updated Scripts - - - #### 🐞 Bug Fixes - - - FlowiseAI: Migrate to pnpm [@MickLesk](https://github.com/MickLesk) ([#14344](https://github.com/community-scripts/ProxmoxVE/pull/14344)) - - Purge openresty [@lucacome](https://github.com/lucacome) ([#14353](https://github.com/community-scripts/ProxmoxVE/pull/14353)) - - Check for release for Sonarr [@lucacome](https://github.com/lucacome) ([#14354](https://github.com/community-scripts/ProxmoxVE/pull/14354)) - - fix(termix-install.sh): add tmpfiles.d persistence and systemd PIDFile path [@runnylogan](https://github.com/runnylogan) ([#14350](https://github.com/community-scripts/ProxmoxVE/pull/14350)) - - ERPNext: start bench Redis services before bench new-site [@MickLesk](https://github.com/MickLesk) ([#14343](https://github.com/community-scripts/ProxmoxVE/pull/14343)) - - [Hotfix]Jotty: use absolute path when creating data dir [@vhsdream](https://github.com/vhsdream) ([#14355](https://github.com/community-scripts/ProxmoxVE/pull/14355)) - -## 2026-05-08 - -### 🚀 Updated Scripts - - - #### 🐞 Bug Fixes - - - wishlist: pin pnpm to v10 to match engine requirements [@MickLesk](https://github.com/MickLesk) ([#14342](https://github.com/community-scripts/ProxmoxVE/pull/14342)) - - [pelican] fix env copy regression [@LetterN](https://github.com/LetterN) ([#14328](https://github.com/community-scripts/ProxmoxVE/pull/14328)) - - fix(homepage): fix ERR_PNPM_IGNORED_BUILDS error [@Sergih28](https://github.com/Sergih28) ([#14315](https://github.com/community-scripts/ProxmoxVE/pull/14315)) - - - #### ✨ New Features - - - tools.func: add setup_nltk as new function [@MickLesk](https://github.com/MickLesk) ([#14314](https://github.com/community-scripts/ProxmoxVE/pull/14314)) - -### 💾 Core - - - #### 🐞 Bug Fixes - - - tools.func: fix meilisearch import-dump background process handling [@MickLesk](https://github.com/MickLesk) ([#14341](https://github.com/community-scripts/ProxmoxVE/pull/14341)) \ No newline at end of file + - core: fall back to silent mode when no TTY or whiptail unavailable [@MickLesk](https://github.com/MickLesk) ([#14497](https://github.com/community-scripts/ProxmoxVE/pull/14497)) \ No newline at end of file From c48ece67f08a03e5b54a238ed2dbaab8614be14c Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sun, 14 Jun 2026 00:25:47 +0000 Subject: [PATCH 13/78] Update CHANGELOG.md (#15098) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ca4d2b565..2204ba9fc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -483,6 +483,8 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
+## 2026-06-14 + ## 2026-06-13 ### 🆕 New Scripts From d9e6e6ea3d3a823f908e887903eb2bd30a06f811 Mon Sep 17 00:00:00 2001 From: "CanbiZ (MickLesk)" <47820557+MickLesk@users.noreply.github.com> Date: Sun, 14 Jun 2026 14:00:10 +0200 Subject: [PATCH 14/78] fix(checkmk): remove stale backup site before creating new backup during update (#15088) --- ct/checkmk.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/ct/checkmk.sh b/ct/checkmk.sh index 43ccaf5e1..a9ea34d29 100644 --- a/ct/checkmk.sh +++ b/ct/checkmk.sh @@ -33,6 +33,7 @@ function update_script() { RELEASE="${RELEASE%%+*}" msg_info "Updating checkmk" $STD omd stop monitoring + $STD omd -f rm monitoringbackup 2>/dev/null || true $STD omd cp monitoring monitoringbackup curl_download "/opt/checkmk.deb" "https://download.checkmk.com/checkmk/${RELEASE}/check-mk-community-${RELEASE}_0.$(get_os_info codename)_amd64.deb" $STD apt install -y /opt/checkmk.deb From bcea631c30439716db4f68e5e50cfed2d614f11d Mon Sep 17 00:00:00 2001 From: "CanbiZ (MickLesk)" <47820557+MickLesk@users.noreply.github.com> Date: Sun, 14 Jun 2026 14:00:32 +0200 Subject: [PATCH 15/78] Iinvoiceninja: fix nginx setup assets port (#15090) --- install/invoiceninja-install.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/install/invoiceninja-install.sh b/install/invoiceninja-install.sh index 0cc5af74a..cfd2379cb 100644 --- a/install/invoiceninja-install.sh +++ b/install/invoiceninja-install.sh @@ -133,6 +133,8 @@ server { fastcgi_pass unix:/run/php/php8.4-fpm.sock; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; include fastcgi_params; + fastcgi_param HTTP_X_FORWARDED_HOST $http_host; + fastcgi_param HTTP_X_FORWARDED_PROTO $scheme; fastcgi_read_timeout 300; } From 5831cc246ab387c742f5c443cbe23565a51ac69f Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sun, 14 Jun 2026 12:00:36 +0000 Subject: [PATCH 16/78] Update CHANGELOG.md (#15099) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2204ba9fc..f1ca7aa63 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -485,6 +485,12 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit ## 2026-06-14 +### 🚀 Updated Scripts + + - #### 🐞 Bug Fixes + + - CheckMK: remove stale backup site before creating new backup during update [@MickLesk](https://github.com/MickLesk) ([#15088](https://github.com/community-scripts/ProxmoxVE/pull/15088)) + ## 2026-06-13 ### 🆕 New Scripts From 4a09cac50626b02d5f38173292c94c3f48d3c95c Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sun, 14 Jun 2026 12:00:59 +0000 Subject: [PATCH 17/78] Update CHANGELOG.md (#15100) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f1ca7aa63..ca706ab02 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -489,6 +489,7 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit - #### 🐞 Bug Fixes + - Iinvoiceninja: fix nginx setup assets port [@MickLesk](https://github.com/MickLesk) ([#15090](https://github.com/community-scripts/ProxmoxVE/pull/15090)) - CheckMK: remove stale backup site before creating new backup during update [@MickLesk](https://github.com/MickLesk) ([#15088](https://github.com/community-scripts/ProxmoxVE/pull/15088)) ## 2026-06-13 From f37bf50a4733e44b88603c125e689034ef594810 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?= <58952836+tremor021@users.noreply.github.com> Date: Sun, 14 Jun 2026 14:32:06 +0200 Subject: [PATCH 18/78] Refactor (#15096) --- ct/calibre-web.sh | 12 +++--------- ct/certimate.sh | 9 ++------- ct/checkmate.sh | 11 +++-------- ct/cleanuparr.sh | 9 ++------- ct/commafeed.sh | 13 ++----------- ct/configarr.sh | 10 ++++++---- ct/convertx.sh | 13 ++++--------- ct/crafty-controller.sh | 20 +++++++------------- ct/cryptpad.sh | 21 +++++++++------------ ct/dagu.sh | 10 ++-------- ct/dashy.sh | 10 ++-------- ct/databasus.sh | 13 ++----------- ct/dawarich.sh | 15 ++++----------- ct/ddns-updater.sh | 9 ++------- ct/degoog.sh | 10 +++------- ct/discopanel.sh | 11 ++--------- ct/docmost.sh | 16 +++++----------- ct/docuseal.sh | 13 ++++--------- ct/domain-monitor.sh | 8 ++------ ct/donetick.sh | 10 +++------- ct/dynacat.sh | 14 ++++---------- 21 files changed, 73 insertions(+), 184 deletions(-) diff --git a/ct/calibre-web.sh b/ct/calibre-web.sh index 1733a29bf..3c8568d06 100644 --- a/ct/calibre-web.sh +++ b/ct/calibre-web.sh @@ -35,10 +35,8 @@ function update_script() { systemctl stop calibre-web msg_ok "Stopped Service" - msg_info "Backing up Data" - cp -r /opt/calibre-web/app.db /opt/app.db_backup - cp -r /opt/calibre-web/data /opt/data_backup - msg_ok "Backed up Data" + create_backup /opt/calibre-web/app.db \ + /opt/calibre-web/data CLEAN_INSTALL=1 fetch_and_deploy_gh_release "Calibre-Web" "janeczku/calibre-web" "prebuild" "latest" "/opt/calibre-web" "calibre-web*.tar.gz" setup_uv @@ -50,11 +48,7 @@ function update_script() { $STD uv pip install --python /opt/calibre-web/.venv/bin/python --no-cache-dir -r requirements.txt msg_ok "Installed Dependencies" - msg_info "Restoring Data" - cp /opt/app.db_backup /opt/calibre-web/app.db 2>/dev/null - cp -r /opt/data_backup /opt/calibre-web/data 2>/dev/null - rm -rf /opt/app.db_backup /opt/data_backup - msg_ok "Restored Data" + restore_backup msg_info "Starting Service" systemctl start calibre-web diff --git a/ct/certimate.sh b/ct/certimate.sh index 414fe96b1..bb321aa20 100644 --- a/ct/certimate.sh +++ b/ct/certimate.sh @@ -35,16 +35,11 @@ function update_script() { systemctl stop certimate msg_ok "Stopped Service" - msg_info "Backing up Data" - cp -r /opt/certimate/pb_data /opt/certimate_pb_data_backup - msg_ok "Backed up Data" + create_backup /opt/certimate/pb_data fetch_and_deploy_gh_release "certimate" "certimate-go/certimate" "prebuild" "latest" "/opt/certimate" "certimate_*_linux_amd64.zip" - msg_info "Restoring Data" - cp -r /opt/certimate_pb_data_backup/. /opt/certimate/pb_data - rm -rf /opt/certimate_pb_data_backup - msg_ok "Restored Data" + restore_backup msg_info "Starting Service" systemctl start certimate diff --git a/ct/checkmate.sh b/ct/checkmate.sh index 14fa8420d..471b7e4f7 100644 --- a/ct/checkmate.sh +++ b/ct/checkmate.sh @@ -35,10 +35,8 @@ function update_script() { systemctl stop checkmate-server checkmate-client nginx msg_ok "Stopped Services" - msg_info "Backing up Data" - cp /opt/checkmate/server/.env /opt/checkmate_server.env.bak - [ -f /opt/checkmate/client/.env.local ] && cp /opt/checkmate/client/.env.local /opt/checkmate_client.env.local.bak - msg_ok "Backed up Data" + create_backup /opt/checkmate/server/.env \ + /opt/checkmate/client/.env.local CLEAN_INSTALL=1 fetch_and_deploy_gh_release "checkmate" "bluewave-labs/Checkmate" "tarball" @@ -56,10 +54,7 @@ function update_script() { VITE_APP_API_BASE_URL="/api/v1" UPTIME_APP_API_BASE_URL="/api/v1" VITE_APP_LOG_LEVEL="warn" $STD npm run build msg_ok "Updated Checkmate Client" - msg_info "Restoring Data" - mv /opt/checkmate_server.env.bak /opt/checkmate/server/.env - [ -f /opt/checkmate_client.env.local.bak ] && mv /opt/checkmate_client.env.local.bak /opt/checkmate/client/.env.local - msg_ok "Restored Data" + restore_backup msg_info "Starting Services" systemctl start checkmate-server checkmate-client nginx diff --git a/ct/cleanuparr.sh b/ct/cleanuparr.sh index a97d8726c..f554e2048 100755 --- a/ct/cleanuparr.sh +++ b/ct/cleanuparr.sh @@ -33,16 +33,11 @@ function update_script() { systemctl stop cleanuparr msg_ok "Stopped Service" - msg_info "Backing up config" - cp -r /opt/cleanuparr/config /opt/cleanuparr_config_backup - msg_ok "Backed up config" + create_backup /opt/cleanuparr/config CLEAN_INSTALL=1 fetch_and_deploy_gh_release "Cleanuparr" "Cleanuparr/Cleanuparr" "prebuild" "latest" "/opt/cleanuparr" "*linux-amd64.zip" - msg_info "Restoring config" - [[ -d /opt/cleanuparr/config ]] && rm -rf /opt/cleanuparr/config - mv /opt/cleanuparr_config_backup /opt/cleanuparr/config - msg_ok "Restored config" + restore_backup msg_info "Starting Service" systemctl start cleanuparr diff --git a/ct/commafeed.sh b/ct/commafeed.sh index 2a6411e46..d842c3c7f 100644 --- a/ct/commafeed.sh +++ b/ct/commafeed.sh @@ -36,20 +36,11 @@ function update_script() { msg_ok "Stopped Service" ensure_dependencies rsync - - if [ -d /opt/commafeed/data ] && [ "$(ls -A /opt/commafeed/data)" ]; then - msg_info "Backing up existing data" - mv /opt/commafeed/data /opt/data.bak - msg_ok "Backed up existing data" - fi + create_backup /opt/commafeed/data CLEAN_INSTALL=1 fetch_and_deploy_gh_release "commafeed" "Athou/commafeed" "prebuild" "latest" "/opt/commafeed" "commafeed-*-h2-jvm.zip" - if [ -d /opt/data.bak ] && [ "$(ls -A /opt/data.bak)" ]; then - msg_info "Restoring data" - mv /opt/data.bak /opt/commafeed/data - msg_ok "Restored data" - fi + restore_backup msg_info "Starting Service" systemctl start commafeed diff --git a/ct/configarr.sh b/ct/configarr.sh index f13bf18bf..d8fdcfb32 100644 --- a/ct/configarr.sh +++ b/ct/configarr.sh @@ -33,11 +33,13 @@ function update_script() { systemctl stop configarr-task.timer msg_ok "Stopped Service" - mkdir -p /opt/backup/ - mv /opt/configarr/{config.yml,secrets.yml,.env} /opt/backup/ + create_backup /opt/configarr/config.yml \ + /opt/configarr/secrets.yml \ + /opt/configarr/.env + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "configarr" "raydak-labs/configarr" "prebuild" "latest" "/opt/configarr" "configarr-linux-x64.tar.xz" - mv /opt/backup/{config.yml,secrets.yml,.env} /opt/configarr/ - rm -rf /opt/backup + + restore_backup msg_info "Starting Service" systemctl start configarr-task.timer diff --git a/ct/convertx.sh b/ct/convertx.sh index 96f40fa84..2ec368dc4 100644 --- a/ct/convertx.sh +++ b/ct/convertx.sh @@ -36,19 +36,14 @@ function update_script() { ensure_dependencies libreoffice-writer - msg_info "Move data-Folder" - if [[ -d /opt/convertx/data ]]; then - mv /opt/convertx/data /opt/data - fi - msg_ok "Moved data-Folder" + create_backup /opt/convertx/data fetch_and_deploy_gh_release "ConvertX" "C4illin/ConvertX" "tarball" "latest" "/opt/convertx" + restore_backup + msg_info "Updating ConvertX" - if [[ -d /opt/data ]]; then - mv /opt/data /opt/convertx/data - fi - cd /opt/convertx + cd /opt/convertx $STD bun install msg_ok "Updated ConvertX" diff --git a/ct/crafty-controller.sh b/ct/crafty-controller.sh index 6661cb5ef..7e1118640 100644 --- a/ct/crafty-controller.sh +++ b/ct/crafty-controller.sh @@ -30,20 +30,17 @@ function update_script() { fi RELEASE=$(curl -fsSL "https://gitlab.com/api/v4/projects/20430749/releases" | grep -o '"tag_name":"v[^"]*"' | head -n 1 | sed 's/"tag_name":"v//;s/"//') - if [[ ! -f /opt/crafty-controller_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/crafty-controller_version.txt)" ]]; then + if [[ ! -f /opt/crafty-controller_version.txt ]] || [[ ${RELEASE} != "$(cat /opt/crafty-controller_version.txt)" ]]; then msg_info "Stopping Crafty-Controller" systemctl stop crafty-controller msg_ok "Stopped Crafty-Controller" - msg_info "Creating Backup of config" - cp -a /opt/crafty-controller/crafty/crafty-4/app/config/. /opt/crafty-controller/backup - rm /opt/crafty-controller/backup/version.json - rm /opt/crafty-controller/backup/credits.json - rm /opt/crafty-controller/backup/logging.json - rm /opt/crafty-controller/backup/default.json.example - rm /opt/crafty-controller/backup/motd_format.json - msg_ok "Backup Created" + create_backup /opt/crafty-controller/crafty/crafty-4/app/config/version.json \ + /opt/crafty-controller/crafty/crafty-4/app/config/credits.json \ + /opt/crafty-controller/crafty/crafty-4/app/config/logging.json \ + /opt/crafty-controller/crafty/crafty-4/app/config/default.json.example \ + /opt/crafty-controller/crafty/crafty-4/app/config/motd_format.json msg_info "Updating Crafty-Controller to v${RELEASE}" curl -fsSL "https://gitlab.com/crafty-controller/crafty-4/-/archive/v${RELEASE}/crafty-4-v${RELEASE}.zip" -o $(basename "https://gitlab.com/crafty-controller/crafty-4/-/archive/v${RELEASE}/crafty-4-v${RELEASE}.zip") @@ -58,11 +55,8 @@ function update_script() { echo "${RELEASE}" >"/opt/crafty-controller_version.txt" msg_ok "Updated Crafty-Controller to v${RELEASE}" - msg_info "Restoring Backup of config" - cp -a /opt/crafty-controller/backup/. /opt/crafty-controller/crafty/crafty-4/app/config - rm -rf /opt/crafty-controller/backup + restore_backup chown -R crafty:crafty /opt/crafty-controller/ - msg_ok "Backup Restored" msg_info "Starting Crafty-Controller" systemctl start crafty-controller diff --git a/ct/cryptpad.sh b/ct/cryptpad.sh index abb180246..0480c0b66 100644 --- a/ct/cryptpad.sh +++ b/ct/cryptpad.sh @@ -34,21 +34,18 @@ function update_script() { systemctl stop cryptpad msg_info "Stopped Service" - msg_info "Creating backup" - [ -f /opt/cryptpad/config/config.js ] && mv /opt/cryptpad/config/config.js /opt/ - for dir in blob block customize data datastore www/common/onlyoffice/dist onlyoffice-conf; do - [ -d "/opt/cryptpad/${dir}" ] && mv "/opt/cryptpad/${dir}" "/tmp/cryptpad_${dir//\//_}" - done - msg_ok "Created backup" + create_backup /opt/cryptpad/config/config.js \ + /opt/cryptpad/blob \ + /opt/cryptpad/block \ + /opt/cryptpad/customize \ + /opt/cryptpad/data \ + /opt/cryptpad/datastore \ + /opt/cryptpad/www/common/onlyoffice/dist \ + /opt/cryptpad/onlyoffice-conf CLEAN_INSTALL=1 fetch_and_deploy_gh_release "cryptpad" "cryptpad/cryptpad" "tarball" - msg_info "Restoring backup" - mv /opt/config.js /opt/cryptpad/config/ - for dir in blob block customize data datastore www/common/onlyoffice/dist onlyoffice-conf; do - [ -d "/tmp/cryptpad_${dir//\//_}" ] && mv "/tmp/cryptpad_${dir//\//_}" "/opt/cryptpad/${dir}" - done - msg_ok "Restored backup" + restore_backup msg_info "Updating CryptPad" cd /opt/cryptpad diff --git a/ct/dagu.sh b/ct/dagu.sh index 225242b10..10dd3f067 100644 --- a/ct/dagu.sh +++ b/ct/dagu.sh @@ -35,17 +35,11 @@ function update_script() { systemctl stop dagu msg_ok "Stopped Service" - msg_info "Backing up Data" - cp -r /opt/dagu/data /opt/dagu_data_backup - msg_ok "Backed up Data" + create_backup /opt/dagu/data fetch_and_deploy_gh_release "dagu" "dagucloud/dagu" "prebuild" "latest" "/opt/dagu" "dagu_*_linux_amd64.tar.gz" - msg_info "Restoring Data" - mkdir -p /opt/dagu/data - cp -r /opt/dagu_data_backup/. /opt/dagu/data - rm -rf /opt/dagu_data_backup - msg_ok "Restored Data" + restore_backup msg_info "Starting Service" systemctl start dagu diff --git a/ct/dashy.sh b/ct/dashy.sh index 35e066fad..8d3e53402 100644 --- a/ct/dashy.sh +++ b/ct/dashy.sh @@ -36,10 +36,7 @@ function update_script() { systemctl stop dashy msg_ok "Stopped Service" - msg_info "Backing up user-data" - rm -rf /opt/dashy_user_data_backup - cp -r /opt/dashy/user-data /opt/dashy_user_data_backup - msg_ok "Backed up user-data" + create_backup /opt/dashy/user-data CLEAN_INSTALL=1 fetch_and_deploy_gh_release "dashy" "lissy93/dashy" "prebuild" "latest" "/opt/dashy" "dashy-*.tar.gz" @@ -48,10 +45,7 @@ function update_script() { $STD yarn install --ignore-engines --network-timeout 300000 msg_ok "Updated Dashy" - msg_info "Restoring user-data" - cp -r /opt/dashy_user_data_backup/. /opt/dashy/user-data/ - rm -rf /opt/dashy_user_data_backup - msg_ok "Restored user-data" + restore_backup msg_info "Starting Dashy" systemctl start dashy diff --git a/ct/databasus.sh b/ct/databasus.sh index f45f62386..88f4fb643 100644 --- a/ct/databasus.sh +++ b/ct/databasus.sh @@ -35,12 +35,7 @@ function update_script() { $STD systemctl stop databasus msg_ok "Stopped Databasus" - msg_info "Backing up Configuration" - [[ ! -f /.env && -f /opt/databasus/.env ]] && cp /opt/databasus/.env /.env - chmod 600 /.env - cp /.env /opt/databasus.env.bak - chmod 600 /opt/databasus.env.bak - msg_ok "Backed up Configuration" + create_backup /opt/databasus/.env msg_info "Ensuring Database Clients" # Create PostgreSQL version symlinks for compatibility @@ -87,11 +82,7 @@ function update_script() { chown -R postgres:postgres /opt/databasus msg_ok "Updated Databasus" - msg_info "Restoring Configuration" - cp /opt/databasus.env.bak /.env - rm -f /opt/databasus.env.bak - chmod 600 /.env - msg_ok "Restored Configuration" + restore_backup if ! grep -q "EnvironmentFile=/.env" /etc/systemd/system/databasus.service; then msg_info "Updating Service" diff --git a/ct/dawarich.sh b/ct/dawarich.sh index 86e6c95e1..c34de77e1 100644 --- a/ct/dawarich.sh +++ b/ct/dawarich.sh @@ -37,11 +37,9 @@ function update_script() { systemctl stop dawarich-web dawarich-worker msg_ok "Stopped Services" - msg_info "Backing up Data" - cp -r /opt/dawarich/app/storage /opt/dawarich_storage_backup 2>/dev/null || true - cp /opt/dawarich/app/config/master.key /opt/dawarich_master.key 2>/dev/null || true - cp /opt/dawarich/app/config/credentials.yml.enc /opt/dawarich_credentials.yml.enc 2>/dev/null || true - msg_ok "Backed up Data" + create_backup /opt/dawarich/app/storage \ + /opt/dawarich/app/config/master.key \ + /opt/dawarich/app/config/credentials.yml.enc CLEAN_INSTALL=1 fetch_and_deploy_gh_release "dawarich" "Freika/dawarich" "tarball" "latest" "/opt/dawarich/app" @@ -85,12 +83,7 @@ function update_script() { $STD bundle exec rake data:migrate msg_ok "Ran Migrations" - msg_info "Restoring Data" - cp -r /opt/dawarich_storage_backup/. /opt/dawarich/app/storage/ 2>/dev/null || true - cp /opt/dawarich_master.key /opt/dawarich/app/config/master.key 2>/dev/null || true - cp /opt/dawarich_credentials.yml.enc /opt/dawarich/app/config/credentials.yml.enc 2>/dev/null || true - rm -rf /opt/dawarich_storage_backup /opt/dawarich_master.key /opt/dawarich_credentials.yml.enc - msg_ok "Restored Data" + restore_backup msg_info "Starting Services" systemctl start dawarich-web dawarich-worker diff --git a/ct/ddns-updater.sh b/ct/ddns-updater.sh index aa2016a63..c5d6851aa 100644 --- a/ct/ddns-updater.sh +++ b/ct/ddns-updater.sh @@ -33,16 +33,11 @@ function update_script() { systemctl stop ddns-updater msg_ok "Stopped Service" - msg_info "Backing up Data" - cp -r /opt/ddns-updater/data /opt/ddns-updater_data_backup - msg_ok "Backed up Data" + create_backup /opt/ddns-updater/data CLEAN_INSTALL=1 fetch_and_deploy_gh_release "ddns-updater" "qdm12/ddns-updater" "singlefile" "latest" "/opt/ddns-updater" "ddns-updater_*_linux_amd64" - msg_info "Restoring Data" - cp -r /opt/ddns-updater_data_backup/. /opt/ddns-updater/data/ - rm -rf /opt/ddns-updater_data_backup - msg_ok "Restored Data" + restore_backup msg_info "Starting Service" systemctl start ddns-updater diff --git a/ct/degoog.sh b/ct/degoog.sh index 0dbe0c4d5..dbded5b95 100644 --- a/ct/degoog.sh +++ b/ct/degoog.sh @@ -35,10 +35,8 @@ function update_script() { systemctl stop degoog msg_ok "Stopped Service" - msg_info "Backing up Configuration & Data" - [[ -f /opt/degoog/.env ]] && cp /opt/degoog/.env /opt/degoog.env.bak - [[ -d /opt/degoog/data ]] && mv /opt/degoog/data /opt/degoog_data_backup - msg_ok "Backed up Configuration & Data" + create_backup /opt/degoog/.env \ + /opt/degoog/data if ! command -v bun >/dev/null 2>&1; then msg_info "Installing Bun" @@ -55,9 +53,7 @@ function update_script() { CLEAN_INSTALL=1 fetch_and_deploy_gh_release "degoog" "fccview/degoog" "prebuild" "latest" "/opt/degoog" "degoog_*_prebuild.tar.gz" - msg_info "Restoring Configuration & Data" - [[ -f /opt/degoog.env.bak ]] && mv /opt/degoog.env.bak /opt/degoog/.env - [[ -d /opt/degoog_data_backup ]] && mv /opt/degoog_data_backup /opt/degoog/data + restore_backup if [[ -f /opt/degoog/.env ]]; then grep -q "^DEGOOG_VALKEY_URL=" /opt/degoog/.env && sed -i "s|^DEGOOG_VALKEY_URL=.*|DEGOOG_VALKEY_URL=redis://valkey:6379|" /opt/degoog/.env || echo "DEGOOG_VALKEY_URL=redis://valkey:6379" >>/opt/degoog/.env diff --git a/ct/discopanel.sh b/ct/discopanel.sh index f71b64021..9521b2279 100644 --- a/ct/discopanel.sh +++ b/ct/discopanel.sh @@ -37,19 +37,12 @@ function update_script() { systemctl stop discopanel msg_ok "Stopped Service" - msg_info "Creating Backup" - mkdir -p /opt/discopanel_backup_temp - cp /opt/discopanel/data/discopanel.db /opt/discopanel_backup_temp/discopanel.db - msg_ok "Created Backup" + create_backup /opt/discopanel/data/discopanel.db 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 - mv /opt/discopanel_backup_temp/discopanel.db /opt/discopanel/data/discopanel.db - rm -rf /opt/discopanel_backup_temp - msg_ok "Restored Data" + restore_backup msg_info "Starting Service" systemctl start discopanel diff --git a/ct/docmost.sh b/ct/docmost.sh index c50f59c3d..c3392c585 100644 --- a/ct/docmost.sh +++ b/ct/docmost.sh @@ -37,25 +37,19 @@ function update_script() { systemctl stop docmost msg_ok "Stopped Service" - msg_info "Backing up data" - cp /opt/docmost/.env /opt/ - cp -r /opt/docmost/data /opt/ - rm -rf /opt/docmost - msg_ok "Data backed up" + create_backup /opt/docmost/.env \ + /opt/docmost/data fetch_and_deploy_gh_release "docmost" "docmost/docmost" "tarball" - msg_info "Updating ${APP}" - cd /opt/docmost - mv /opt/.env /opt/docmost/.env - mv /opt/data /opt/docmost/data + restore_backup # Fix: Docmost EE (audit logs etc.) lives in a git submodule that is NOT # included in GitHub tarballs. The community NoopAuditService exists but # is only exported by CoreModule – child modules such as UserModule cannot # resolve it. Making CoreModule @Global() exposes the token app-wide. - if [[ ! -f /opt/docmost/apps/server/src/ee/ee.module.ts ]] \ - && ! grep -q '@Global()' /opt/docmost/apps/server/src/core/core.module.ts 2>/dev/null; then + if [[ ! -f /opt/docmost/apps/server/src/ee/ee.module.ts ]] && + ! grep -q '@Global()' /opt/docmost/apps/server/src/core/core.module.ts 2>/dev/null; then sed -i '/^ Module,$/a\ Global,' /opt/docmost/apps/server/src/core/core.module.ts sed -i '/^@Module({$/i @Global()' /opt/docmost/apps/server/src/core/core.module.ts fi diff --git a/ct/docuseal.sh b/ct/docuseal.sh index e33270257..ee2c6478f 100644 --- a/ct/docuseal.sh +++ b/ct/docuseal.sh @@ -35,24 +35,19 @@ function update_script() { systemctl stop docuseal docuseal-sidekiq msg_ok "Stopped Services" - msg_info "Backing up Data" - cp /opt/docuseal/.env /opt/docuseal.env.bak - [[ -d /opt/docuseal/data ]] && mv /opt/docuseal/data /opt/docuseal_data.bak - msg_ok "Backed up Data" + create_backup /opt/docuseal/.env \ + /opt/docuseal/data CLEAN_INSTALL=1 fetch_and_deploy_gh_release "docuseal" "docusealco/docuseal" "tarball" local required_ruby current_ruby required_ruby=$(grep -m1 '^ruby ' /opt/docuseal/Gemfile | grep -oP '[0-9]+\.[0-9]+\.[0-9]+') current_ruby=$(PATH="/root/.rbenv/bin:/root/.rbenv/shims:${PATH}" rbenv global 2>/dev/null || true) - if [[ -n "$required_ruby" && "$required_ruby" != "$current_ruby" ]]; then + if [[ -n $required_ruby && $required_ruby != "$current_ruby" ]]; then RUBY_VERSION="${required_ruby}" RUBY_INSTALL_RAILS="false" HOME=/root setup_ruby fi - msg_info "Restoring Data" - mv /opt/docuseal.env.bak /opt/docuseal/.env - [[ -d /opt/docuseal_data.bak ]] && mv /opt/docuseal_data.bak /opt/docuseal/data - msg_ok "Restored Data" + restore_backup msg_info "Building Application" cd /opt/docuseal diff --git a/ct/domain-monitor.sh b/ct/domain-monitor.sh index b5ced7a7e..110be28bf 100644 --- a/ct/domain-monitor.sh +++ b/ct/domain-monitor.sh @@ -43,9 +43,7 @@ function update_script() { systemctl stop apache2 msg_info "Service stopped" - msg_info "Creating backup" - mv /opt/domain-monitor/.env /opt - msg_ok "Created backup" + create_backup /opt/domain-monitor/.env setup_composer CLEAN_INSTALL=1 fetch_and_deploy_gh_release "domain-monitor" "Hosteroid/domain-monitor" "prebuild" "latest" "/opt/domain-monitor" "domain-monitor-v*.zip" @@ -56,9 +54,7 @@ function update_script() { chown -R www-data:www-data /opt/domain-monitor msg_ok "Updated Domain Monitor" - msg_info "Restoring backup" - mv /opt/.env /opt/domain-monitor - msg_ok "Restored backup" + restore_backup msg_info "Restarting Services" systemctl start apache2 diff --git a/ct/donetick.sh b/ct/donetick.sh index bb86e98b7..d1b8771a4 100644 --- a/ct/donetick.sh +++ b/ct/donetick.sh @@ -35,18 +35,14 @@ function update_script() { systemctl stop donetick msg_ok "Stopped Service" - msg_info "Backing Up Configurations" - mv /opt/donetick/config/selfhosted.yaml /opt/donetick/donetick.db /opt - msg_ok "Backed Up Configurations" + create_backup /opt/donetick/config/selfhosted.yaml \ + /opt/donetick/donetick.db CLEAN_INSTALL=1 fetch_and_deploy_gh_release "donetick" "donetick/donetick" "prebuild" "latest" "/opt/donetick" "donetick_Linux_x86_64.tar.gz" - msg_info "Restoring Configurations" - mv /opt/selfhosted.yaml /opt/donetick/config + restore_backup grep -q 'http://localhost"$' /opt/donetick/config/selfhosted.yaml || sed -i '/https:\/\/localhost"$/a\ - "http://localhost"' /opt/donetick/config/selfhosted.yaml grep -q 'capacitor://localhost' /opt/donetick/config/selfhosted.yaml || sed -i '/http:\/\/localhost"$/a\ - "capacitor://localhost"' /opt/donetick/config/selfhosted.yaml - mv /opt/donetick.db /opt/donetick - msg_ok "Restored Configurations" msg_info "Starting Service" systemctl start donetick diff --git a/ct/dynacat.sh b/ct/dynacat.sh index 5f7951bb6..19d14fda6 100644 --- a/ct/dynacat.sh +++ b/ct/dynacat.sh @@ -35,19 +35,13 @@ function update_script() { systemctl stop dynacat msg_ok "Stopped Service" - msg_info "Backing up Data" - cp -r /opt/dynacat/config /opt/dynacat_config_backup - cp -r /opt/dynacat/assets /opt/dynacat_assets_backup - cp -r /opt/dynacat/data /opt/dynacat_data_backup - msg_ok "Backed up Data" + create_backup /opt/dynacat/config \ + /opt/dynacat/assets \ + /opt/dynacat/data CLEAN_INSTALL=1 fetch_and_deploy_gh_release "dynacat" "Panonim/dynacat" "prebuild" "latest" "/opt/dynacat" "dynacat-linux-amd64.tar.gz" - msg_info "Restoring Data" - cp -r /opt/dynacat_config_backup/. /opt/dynacat/config - cp -r /opt/dynacat_assets_backup/. /opt/dynacat/assets - cp -r /opt/dynacat_data_backup/. /opt/dynacat/data - rm -rf /opt/dynacat_config_backup /opt/dynacat_assets_backup /opt/dynacat_data_backup + restore_backup chmod +x /opt/dynacat/dynacat msg_ok "Restored Data" From cfb84ae12d5e048905ce87e9b505747642cfc39f Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sun, 14 Jun 2026 12:32:32 +0000 Subject: [PATCH 19/78] Update CHANGELOG.md (#15101) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ca706ab02..08e104123 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -492,6 +492,10 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit - Iinvoiceninja: fix nginx setup assets port [@MickLesk](https://github.com/MickLesk) ([#15090](https://github.com/community-scripts/ProxmoxVE/pull/15090)) - CheckMK: remove stale backup site before creating new backup during update [@MickLesk](https://github.com/MickLesk) ([#15088](https://github.com/community-scripts/ProxmoxVE/pull/15088)) + - #### 🔧 Refactor + + - Refactor: Implement backup functions for scripts C-D [@tremor021](https://github.com/tremor021) ([#15096](https://github.com/community-scripts/ProxmoxVE/pull/15096)) + ## 2026-06-13 ### 🆕 New Scripts From 293d4b73a1ac96d0707b4c9f4856cd6da67847d1 Mon Sep 17 00:00:00 2001 From: "CanbiZ (MickLesk)" <47820557+MickLesk@users.noreply.github.com> Date: Mon, 15 Jun 2026 10:08:24 +0200 Subject: [PATCH 20/78] core: implement gateway validation for DHCP and static networks (#15107) --- misc/build.func | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/misc/build.func b/misc/build.func index c16d8a17f..2dc50db78 100644 --- a/misc/build.func +++ b/misc/build.func @@ -979,6 +979,20 @@ base_settings() { IPV6_METHOD=${var_ipv6_method:-"none"} GATE=${var_gateway:-""} + + # Guard against invalid gateway combinations from defaults/app vars: + # - DHCP must not force a static gateway + # - Static IPv4 must use a gateway in the same subnet + if [[ "$NET" == "dhcp" && -n "$GATE" ]]; then + msg_warn "Ignoring var_gateway '$GATE' because var_net is 'dhcp'" + GATE="" + elif [[ "$NET" != "dhcp" && -n "$GATE" ]]; then + if ! validate_gateway_in_subnet "$NET" "$GATE"; then + msg_warn "Ignoring var_gateway '$GATE' because it is not in subnet of var_net '$NET'" + GATE="" + fi + fi + APT_CACHER=${var_apt_cacher:-""} APT_CACHER_IP=${var_apt_cacher_ip:-""} From 96d828f379f7190ccdecd2be1744546f1c01ff04 Mon Sep 17 00:00:00 2001 From: "CanbiZ (MickLesk)" <47820557+MickLesk@users.noreply.github.com> Date: Mon, 15 Jun 2026 10:08:49 +0200 Subject: [PATCH 21/78] Vaultwarden: extend version check for VaultWarden update (#15105) --- ct/vaultwarden.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/ct/vaultwarden.sh b/ct/vaultwarden.sh index a33dd40a1..a7d6e598e 100644 --- a/ct/vaultwarden.sh +++ b/ct/vaultwarden.sh @@ -37,6 +37,11 @@ function update_script() { "2" "Set Admin Token") if [ "$UPD" == "1" ]; then + INSTALLED_VERSION="$(/opt/vaultwarden/bin/vaultwarden --version 2>/dev/null | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -n1)" + if [[ -n "$INSTALLED_VERSION" ]] && + ! grep -qxF "$INSTALLED_VERSION" "$HOME/.vaultwarden" 2>/dev/null; then + printf '%s\n' "$INSTALLED_VERSION" >"$HOME/.vaultwarden" + fi if check_for_gh_release "vaultwarden" "dani-garcia/vaultwarden"; then msg_info "Stopping Service" systemctl stop vaultwarden From a2f987f07b4bc2dc90f25937f0ed2dcadcc2c150 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Mon, 15 Jun 2026 08:08:57 +0000 Subject: [PATCH 22/78] Update CHANGELOG.md (#15109) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 08e104123..c30982ea4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -483,6 +483,14 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit +## 2026-06-15 + +### 💾 Core + + - #### 🔧 Refactor + + - core: implement gateway validation for DHCP and static networks [@MickLesk](https://github.com/MickLesk) ([#15107](https://github.com/community-scripts/ProxmoxVE/pull/15107)) + ## 2026-06-14 ### 🚀 Updated Scripts From 4b20b8dab5ecfd4fcc4fbdc49c005ee4de80ebef Mon Sep 17 00:00:00 2001 From: "CanbiZ (MickLesk)" <47820557+MickLesk@users.noreply.github.com> Date: Mon, 15 Jun 2026 10:09:14 +0200 Subject: [PATCH 23/78] tools.func: extend mesa-vulkan-drivers and vulkan-tools to installation for ARC GPU's (#15106) --- misc/tools.func | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/misc/tools.func b/misc/tools.func index cbeded9f8..7bc14e104 100644 --- a/misc/tools.func +++ b/misc/tools.func @@ -5267,6 +5267,8 @@ _setup_intel_arc() { intel-media-va-driver-non-free \ intel-opencl-icd \ libmfx-gen1.2 \ + mesa-vulkan-drivers \ + vulkan-tools \ vainfo \ intel-gpu-tools 2>/dev/null || msg_warn "Some Intel Arc packages failed" @@ -5301,6 +5303,8 @@ _setup_intel_arc() { ocl-icd-libopencl1 \ libvpl2 \ libmfx-gen1.2 \ + mesa-vulkan-drivers \ + vulkan-tools \ vainfo \ intel-gpu-tools 2>/dev/null || msg_warn "Some Intel Arc packages failed" @@ -5324,6 +5328,8 @@ _setup_intel_modern() { va-driver-all \ intel-media-va-driver \ ocl-icd-libopencl1 \ + mesa-vulkan-drivers \ + vulkan-tools \ vainfo \ intel-gpu-tools 2>/dev/null || msg_warn "Some Intel packages failed" @@ -5358,6 +5364,8 @@ _setup_intel_modern() { $STD apt -y install \ intel-media-va-driver-non-free \ ocl-icd-libopencl1 \ + mesa-vulkan-drivers \ + vulkan-tools \ vainfo \ libmfx-gen1.2 \ intel-gpu-tools 2>/dev/null || msg_warn "Some Intel packages failed" From dee66b996e64d51c1d0f763b0791911714e8fb8b Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Mon, 15 Jun 2026 08:09:30 +0000 Subject: [PATCH 24/78] Update CHANGELOG.md (#15110) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c30982ea4..ed4a43cf2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -485,8 +485,18 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit ## 2026-06-15 +### 🚀 Updated Scripts + + - #### 🐞 Bug Fixes + + - Vaultwarden: extend version check for VaultWarden update [@MickLesk](https://github.com/MickLesk) ([#15105](https://github.com/community-scripts/ProxmoxVE/pull/15105)) + ### 💾 Core + - #### ✨ New Features + + - tools.func: extend mesa-vulkan-drivers and vulkan-tools to installation for ARC GPU's [@MickLesk](https://github.com/MickLesk) ([#15106](https://github.com/community-scripts/ProxmoxVE/pull/15106)) + - #### 🔧 Refactor - core: implement gateway validation for DHCP and static networks [@MickLesk](https://github.com/MickLesk) ([#15107](https://github.com/community-scripts/ProxmoxVE/pull/15107)) From 6762208d6666f65e84bf881a9e1cbd4f321755a6 Mon Sep 17 00:00:00 2001 From: "CanbiZ (MickLesk)" <47820557+MickLesk@users.noreply.github.com> Date: Mon, 15 Jun 2026 10:09:38 +0200 Subject: [PATCH 25/78] core: improve mirror selection and error handling (#15108) --- misc/build.func | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/misc/build.func b/misc/build.func index 2dc50db78..dea1e3d51 100644 --- a/misc/build.func +++ b/misc/build.func @@ -4393,10 +4393,12 @@ EOF pct exec "$CTID" -- bash -c "apt-get update 2>&1 && apt-get install -y ${_base_pkgs} 2>&1" >>"$BUILD_LOG" 2>&1 || { local failed_mirror failed_mirror=$(pct exec "$CTID" -- bash -c "grep -m1 -oP '(?<=URIs: https?://)[^/]+' /etc/apt/sources.list.d/debian.sources 2>/dev/null || grep -m1 -oP '(?<=deb https?://)[^/]+' /etc/apt/sources.list 2>/dev/null" 2>/dev/null || echo "unknown") - msg_warn "apt-get update failed (${failed_mirror}), trying alternate mirrors..." + msg_warn "apt-get update failed (${failed_mirror})." + msg_custom "ℹ️" "${YW}" "Probing alternate mirrors (this can take 1-2 minutes on network issues)" local mirror_exit=0 pct exec "$CTID" -- env APT_BASE="$_base_pkgs" bash -c ' DISTRO=$(. /etc/os-release 2>/dev/null && echo "$ID" || echo "debian") + echo " Mirror fallback for distro: $DISTRO" if [ "$DISTRO" = "ubuntu" ]; then EU_MIRRORS="de.archive.ubuntu.com fr.archive.ubuntu.com se.archive.ubuntu.com nl.archive.ubuntu.com it.archive.ubuntu.com ch.archive.ubuntu.com mirrors.xtom.de" @@ -4454,15 +4456,21 @@ EOF } # Phase 1: Scan global mirrors first (independent of local CDN issues) + echo " Phase 1/3: Scanning global mirrors for reachability..." OTHERS_OK=$(scan_reachable "$OTHERS") OTHERS_PICK=$(printf "%s\n" $OTHERS_OK | shuf | head -3 | xargs) + if [ -z "$OTHERS_PICK" ]; then + echo " No reachable global mirrors found" + fi + for mirror in $OTHERS_PICK; do echo " Attempting mirror: $mirror" try_mirrors "$mirror" && exit 0 done # Phase 2: Try primary mirror + echo " Phase 2/3: Trying primary mirror..." if [ "$DISTRO" = "ubuntu" ]; then PRIMARY="archive.ubuntu.com" else @@ -4474,9 +4482,14 @@ EOF fi # Phase 3: Fall back to regional mirrors + echo " Phase 3/3: Scanning regional mirrors..." REGIONAL_OK=$(scan_reachable "$REGIONAL") REGIONAL_PICK=$(printf "%s\n" $REGIONAL_OK | shuf | head -3 | xargs) + if [ -z "$REGIONAL_PICK" ]; then + echo " No reachable regional mirrors found" + fi + for mirror in $REGIONAL_PICK; do echo " Attempting mirror: $mirror" try_mirrors "$mirror" && exit 0 @@ -4510,12 +4523,14 @@ EOF msg_warn "Mirror '${custom_mirror}' also failed. Try another or type 'skip'." done if [[ "$custom_mirror" == "skip" ]]; then - msg_error "apt-get base packages installation failed" - install_exit_code=1 + msg_warn "Mirror selection aborted by user ('skip')" + msg_warn "Aborting installation before base package bootstrap" + post_update_to_api "aborted" "130" "force" + install_exit_code=130 fi elif [[ $mirror_exit -ne 0 ]]; then msg_error "apt-get base packages installation failed" - install_exit_code=1 + install_exit_code=100 fi } fi From 3c42589ff048c6105c4cc57e1c49b91cbafd76a2 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Mon, 15 Jun 2026 08:10:04 +0000 Subject: [PATCH 27/78] Update CHANGELOG.md (#15112) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ed4a43cf2..f000234c6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -499,6 +499,7 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit - #### 🔧 Refactor + - core: improve mirror selection and error handling [@MickLesk](https://github.com/MickLesk) ([#15108](https://github.com/community-scripts/ProxmoxVE/pull/15108)) - core: implement gateway validation for DHCP and static networks [@MickLesk](https://github.com/MickLesk) ([#15107](https://github.com/community-scripts/ProxmoxVE/pull/15107)) ## 2026-06-14 From 55703ab0ecb5dcacd930f201f32b3349f45b5dc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?= <58952836+tremor021@users.noreply.github.com> Date: Mon, 15 Jun 2026 21:33:12 +0200 Subject: [PATCH 28/78] Watcharr: Clean install on update (#15119) * Clean install * Update --- ct/watcharr.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ct/watcharr.sh b/ct/watcharr.sh index 3dd3b1106..149841389 100644 --- a/ct/watcharr.sh +++ b/ct/watcharr.sh @@ -34,9 +34,9 @@ function update_script() { systemctl stop watcharr msg_ok "Stopped Service" - rm -f /opt/watcharr/server/watcharr - rm -rf /opt/watcharr/server/ui - fetch_and_deploy_gh_release "watcharr" "sbondCo/Watcharr" "tarball" + create_backup /opt/watcharr/server/data + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "watcharr" "sbondCo/Watcharr" "tarball" + restore_backup msg_info "Updating Watcharr" cd /opt/watcharr From 77eb109927d817d442d7d057400835e74461457d Mon Sep 17 00:00:00 2001 From: "CanbiZ (MickLesk)" <47820557+MickLesk@users.noreply.github.com> Date: Mon, 15 Jun 2026 21:33:23 +0200 Subject: [PATCH 29/78] degoog: add curl-impersonate to script (#15117) * jotty: add curl-impersonate to script * Ensure clean install for curl-impersonate deployment --- ct/degoog.sh | 1 + install/degoog-install.sh | 1 + 2 files changed, 2 insertions(+) diff --git a/ct/degoog.sh b/ct/degoog.sh index dbded5b95..fa98bbf99 100644 --- a/ct/degoog.sh +++ b/ct/degoog.sh @@ -52,6 +52,7 @@ function update_script() { msg_ok "Updated Valkey" CLEAN_INSTALL=1 fetch_and_deploy_gh_release "degoog" "fccview/degoog" "prebuild" "latest" "/opt/degoog" "degoog_*_prebuild.tar.gz" + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "curl-impersonate" "lexiforest/curl-impersonate" "prebuild" "latest" "/usr/local/bin" "curl-impersonate-v*.$(uname -m)-linux-gnu.tar.gz" restore_backup diff --git a/install/degoog-install.sh b/install/degoog-install.sh index 4411b2789..2135c809d 100644 --- a/install/degoog-install.sh +++ b/install/degoog-install.sh @@ -27,6 +27,7 @@ ln -sf /root/.bun/bin/bun /usr/local/bin/bun ln -sf /root/.bun/bin/bunx /usr/local/bin/bunx msg_ok "Installed Bun" +fetch_and_deploy_gh_release "curl-impersonate" "lexiforest/curl-impersonate" "prebuild" "latest" "/usr/local/bin" "curl-impersonate-v*.$(uname -m)-linux-gnu.tar.gz" fetch_and_deploy_gh_release "degoog" "fccview/degoog" "prebuild" "latest" "/opt/degoog" "degoog_*_prebuild.tar.gz" msg_info "Setting up degoog" From 16bd4f473b0716d1f37af464c6b87751fd813231 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Mon, 15 Jun 2026 19:33:43 +0000 Subject: [PATCH 30/78] Update CHANGELOG.md (#15120) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f000234c6..ef722504e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -489,8 +489,13 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit - #### 🐞 Bug Fixes + - Watcharr: Clean install on update [@tremor021](https://github.com/tremor021) ([#15119](https://github.com/community-scripts/ProxmoxVE/pull/15119)) - Vaultwarden: extend version check for VaultWarden update [@MickLesk](https://github.com/MickLesk) ([#15105](https://github.com/community-scripts/ProxmoxVE/pull/15105)) + - #### ✨ New Features + + - degoog: add curl-impersonate to script [@MickLesk](https://github.com/MickLesk) ([#15117](https://github.com/community-scripts/ProxmoxVE/pull/15117)) + ### 💾 Core - #### ✨ New Features From 7ee47be43692fe654f8e13ed28f228499b03dd09 Mon Sep 17 00:00:00 2001 From: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> Date: Tue, 16 Jun 2026 10:56:29 +0200 Subject: [PATCH 32/78] Add runtime status guard and deleted script stubs (#15125) * Add runtime script status guard and deleted-script stubs. Prevent disabled/deleted scripts from running updates with clear user messages, and ensure deleted ct scripts are stubbed automatically so legacy update commands no longer fail with 404. * Delete ct/ente.sh * Update booklore.sh --- .../delete-pocketbase-entry-on-removal.yml | 143 ++++++++++++++++++ ct/booklore.sh | 15 ++ ct/litellm.sh | 15 ++ ct/minio.sh | 73 +-------- install/minio-install.sh | 95 ------------ misc/build.func | 52 +++++++ 6 files changed, 229 insertions(+), 164 deletions(-) create mode 100644 ct/booklore.sh create mode 100644 ct/litellm.sh delete mode 100644 install/minio-install.sh diff --git a/.github/workflows/delete-pocketbase-entry-on-removal.yml b/.github/workflows/delete-pocketbase-entry-on-removal.yml index 5e6fcee61..c01f47c27 100644 --- a/.github/workflows/delete-pocketbase-entry-on-removal.yml +++ b/.github/workflows/delete-pocketbase-entry-on-removal.yml @@ -27,6 +27,7 @@ jobs: BEFORE="${{ github.event.before }}" AFTER="${{ github.event.after }}" slugs="" + ct_slugs="" # Deleted JSON files: get slug from previous commit deleted_json=$(git diff --name-only --diff-filter=D "$BEFORE" "$AFTER" -- json/ | grep '\.json$' || true) @@ -37,6 +38,14 @@ jobs: done # Deleted script files: derive slug from path + deleted_ct=$(git diff --name-only --diff-filter=D "$BEFORE" "$AFTER" -- ct/ | grep '\.sh$' || true) + for f in $deleted_ct; do + [[ -z "$f" ]] && continue + base="${f##*/}" + base="${base%.sh}" + [[ -n "$base" ]] && ct_slugs="$ct_slugs $base" + done + deleted_sh=$(git diff --name-only --diff-filter=D "$BEFORE" "$AFTER" -- ct/ install/ tools/ turnkey/ vm/ | grep '\.sh$' || true) for f in $deleted_sh; do [[ -z "$f" ]] && continue @@ -51,14 +60,17 @@ jobs: done slugs=$(echo $slugs | xargs -n1 | sort -u | tr '\n' ' ') + ct_slugs=$(echo $ct_slugs | xargs -n1 2>/dev/null | sort -u | tr '\n' ' ') if [[ -z "$slugs" ]]; then echo "No deleted JSON or script files to mark as deleted in PocketBase." echo "count=0" >> "$GITHUB_OUTPUT" exit 0 fi echo "$slugs" > slugs_to_delete.txt + echo "$ct_slugs" > ct_slugs_to_stub.txt echo "count=$(echo $slugs | wc -w)" >> "$GITHUB_OUTPUT" echo "Slugs to mark as deleted: $slugs" + [[ -n "$ct_slugs" ]] && echo "CT stubs to generate: $ct_slugs" - name: Mark as deleted in PocketBase if: steps.slugs.outputs.count != '0' @@ -159,3 +171,134 @@ jobs: })().catch(e => { console.error(e); process.exit(1); }); ENDSCRIPT shell: bash + + - name: Generate CT stubs for deleted scripts + if: steps.slugs.outputs.count != '0' + env: + POCKETBASE_URL: ${{ secrets.POCKETBASE_URL }} + POCKETBASE_COLLECTION: ${{ secrets.POCKETBASE_COLLECTION }} + POCKETBASE_ADMIN_EMAIL: ${{ secrets.POCKETBASE_ADMIN_EMAIL }} + POCKETBASE_ADMIN_PASSWORD: ${{ secrets.POCKETBASE_ADMIN_PASSWORD }} + run: | + if [[ ! -s ct_slugs_to_stub.txt ]]; then + echo "No deleted ct/*.sh files; skipping stub generation." + exit 0 + fi + node << 'ENDSCRIPT' + (async function() { + const fs = require('fs'); + const https = require('https'); + const http = require('http'); + const path = require('path'); + const url = require('url'); + + function request(fullUrl, opts, redirectCount) { + redirectCount = redirectCount || 0; + return new Promise(function(resolve, reject) { + const u = url.parse(fullUrl); + const isHttps = u.protocol === 'https:'; + const body = opts.body; + const options = { + hostname: u.hostname, + port: u.port || (isHttps ? 443 : 80), + path: u.path, + method: opts.method || 'GET', + headers: opts.headers || {} + }; + if (body) options.headers['Content-Length'] = Buffer.byteLength(body); + const lib = isHttps ? https : http; + const req = lib.request(options, function(res) { + if (res.statusCode >= 300 && res.statusCode < 400 && res.headers.location) { + if (redirectCount >= 5) return reject(new Error('Too many redirects from ' + fullUrl)); + const redirectUrl = url.resolve(fullUrl, res.headers.location); + res.resume(); + resolve(request(redirectUrl, opts, redirectCount + 1)); + return; + } + let data = ''; + res.on('data', function(chunk) { data += chunk; }); + res.on('end', function() { + resolve({ ok: res.statusCode >= 200 && res.statusCode < 300, statusCode: res.statusCode, body: data }); + }); + }); + req.on('error', reject); + if (body) req.write(body); + req.end(); + }); + } + + const raw = process.env.POCKETBASE_URL.replace(/\/$/, ''); + const apiBase = /\/api$/i.test(raw) ? raw : raw + '/api'; + const coll = process.env.POCKETBASE_COLLECTION; + const ctSlugs = fs.readFileSync('ct_slugs_to_stub.txt', 'utf8').trim().split(/\s+/).filter(Boolean); + if (!ctSlugs.length) { + console.log('No ct slugs to process.'); + return; + } + + const authRes = await request(apiBase + '/collections/users/auth-with-password', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + identity: process.env.POCKETBASE_ADMIN_EMAIL, + password: process.env.POCKETBASE_ADMIN_PASSWORD + }) + }); + if (!authRes.ok) throw new Error('Auth failed: ' + authRes.body); + const token = JSON.parse(authRes.body).token; + const recordsUrl = apiBase + '/collections/' + encodeURIComponent(coll) + '/records'; + + for (const slug of ctSlugs) { + const filter = "(slug='" + slug + "')"; + const listRes = await request(recordsUrl + '?filter=' + encodeURIComponent(filter) + '&perPage=1&fields=slug,name,deleted_message', { + headers: { 'Authorization': token } + }); + if (!listRes.ok) { + console.warn('Failed to fetch record for slug "' + slug + '"'); + continue; + } + const list = JSON.parse(listRes.body); + const rec = list.items && list.items[0]; + const appName = (rec && rec.name) ? rec.name : slug; + const deletedMessage = (rec && rec.deleted_message && rec.deleted_message.trim()) + ? rec.deleted_message.trim() + : 'This script was removed and cannot be installed or updated.'; + + const stubPath = path.join('ct', slug + '.sh'); + const content = +`#!/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 +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE + +APP="${appName.replace(/"/g, '\\"')}" + +header_info "$APP" +variables +color + +msg_error "This script is no longer available in community-scripts." +msg_error "${deletedMessage.replace(/"/g, '\\"')}" +msg_info "More info: https://community-scripts.org/scripts/${slug}" +exit 1 +`; + fs.writeFileSync(stubPath, content); + console.log('Generated stub: ' + stubPath); + } + })().catch(e => { console.error(e); process.exit(1); }); + ENDSCRIPT + shell: bash + + - name: Commit generated stubs + if: steps.slugs.outputs.count != '0' + run: | + if git diff --quiet -- ct; then + echo "No generated ct stubs to commit." + exit 0 + fi + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + git add ct/*.sh + git commit -m "chore: add deleted script stubs" + git push + shell: bash diff --git a/ct/booklore.sh b/ct/booklore.sh new file mode 100644 index 000000000..ebf96783e --- /dev/null +++ b/ct/booklore.sh @@ -0,0 +1,15 @@ +#!/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 +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE + +APP="BookLore" + +header_info "$APP" +variables +color + +msg_error "This script is no longer available in community-scripts." +msg_error "The Booklore or the Grimmory Fork will for now not return to community-scripts. Due to the unstable nature of these projects we decided to remove them and will decide at later point if they come back, which will most likley not happen. Plese do not create Issues for this." +msg_info "More info: https://community-scripts.org/scripts/booklore" +exit 1 diff --git a/ct/litellm.sh b/ct/litellm.sh new file mode 100644 index 000000000..a88fefec8 --- /dev/null +++ b/ct/litellm.sh @@ -0,0 +1,15 @@ +#!/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 +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE + +APP="LiteLLM" + +header_info "$APP" +variables +color + +msg_error "This script is no longer available in community-scripts." +msg_error "This script was removed and cannot be installed or updated." +msg_info "More info: https://community-scripts.org/scripts/litellm" +exit 1 diff --git a/ct/minio.sh b/ct/minio.sh index 95b9facbc..cd5e80bd1 100644 --- a/ct/minio.sh +++ b/ct/minio.sh @@ -1,80 +1,15 @@ #!/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: MickLesk (CanbiZ) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://github.com/minio/minio APP="MinIO" -var_tags="${var_tags:-object-storage}" -var_cpu="${var_cpu:-1}" -var_ram="${var_ram:-1024}" -var_disk="${var_disk:-5}" -var_os="${var_os:-debian}" -var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" -var_unprivileged="${var_unprivileged:-1}" header_info "$APP" variables color -catch_errors -function update_script() { - header_info - check_container_storage - check_container_resources - if [[ ! -f /usr/local/bin/minio ]]; then - msg_error "No ${APP} Installation Found!" - exit - fi - FEATURE_RICH_VERSION="2025-04-22T22-12-26Z" - RELEASE=$(curl -fsSL https://api.github.com/repos/minio/minio/releases/latest | grep '"tag_name"' | awk -F '"' '{print $4}') - CURRENT_VERSION="" - [[ -f /opt/${APP}_version.txt ]] && CURRENT_VERSION=$(cat /opt/${APP}_version.txt) - RELEASE=$(curl -fsSL https://api.github.com/repos/minio/minio/releases/latest | grep '"tag_name"' | awk -F '"' '{print $4}') - - if [[ "${CURRENT_VERSION}" == "${FEATURE_RICH_VERSION}" && "${RELEASE}" != "${FEATURE_RICH_VERSION}" ]]; then - echo - echo "You are currently running the last feature-rich community version: ${FEATURE_RICH_VERSION}" - echo "WARNING: Updating to the latest version will REMOVE most management features from the Console UI." - echo "Do you still want to upgrade to the latest version? [y/N]: " - read -n 1 -r - echo - if [[ ! $REPLY =~ ^[Yy]$ ]]; then - msg_ok "No update performed. Staying on the feature-rich version." - exit - fi - fi - - if [[ "${CURRENT_VERSION}" != "${RELEASE}" ]]; then - msg_info "Stopping Service" - systemctl stop minio - msg_ok "Stopped Service" - - msg_info "Updating ${APP} to ${RELEASE}" - mv /usr/local/bin/minio /usr/local/bin/minio_bak - curl -fsSL "https://dl.min.io/server/minio/release/linux-amd64/minio" -o /usr/local/bin/minio - chmod +x /usr/local/bin/minio - rm -f /usr/local/bin/minio_bak - echo "${RELEASE}" >/opt/${APP}_version.txt - msg_ok "Updated ${APP}" - - msg_info "Starting Service" - systemctl start minio - msg_ok "Started Service" - msg_ok "Updated successfully!" - else - msg_ok "No update required. ${APP} is already at ${RELEASE}" - fi - exit -} - -start -build_container -description - -msg_ok "Completed successfully!\n" -echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" -echo -e "${INFO}${YW}Access it using the following URL:${CL}" -echo -e "${GATEWAY}${BGN}http://${IP}:9000${CL}" +msg_error "This script is no longer available in community-scripts." +msg_error "Repository is archived. Minio is gone" +msg_info "More info: https://community-scripts.org/scripts/minio" +exit 1 diff --git a/install/minio-install.sh b/install/minio-install.sh deleted file mode 100644 index 4596fa9ad..000000000 --- a/install/minio-install.sh +++ /dev/null @@ -1,95 +0,0 @@ -#!/usr/bin/env bash - -# Copyright (c) 2021-2026 community-scripts ORG -# Author: MickLesk (CanbiZ) -# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://github.com/minio/minio - -source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" -color -verb_ip6 -catch_errors -setting_up_container -network_check -update_os - -FEATURE_RICH_VERSION="2025-04-22T22-12-26Z" - -echo -echo "MinIO recently removed many management features from the Console UI." -echo "The last feature-complete version is: $FEATURE_RICH_VERSION" -echo "Latest versions require the paid edition for full UI functionality." -echo -echo "Choose which version to install:" -echo " [N] Feature-rich community version ($FEATURE_RICH_VERSION) [Recommended]" -echo " [Y] Latest version (may lack UI features)" -echo -read -p "Install latest MinIO version? [y/N]: " -n 1 -r -echo -if [[ $REPLY =~ ^[Yy]$ ]]; then - USE_LATEST=true -else - USE_LATEST=false -fi - -msg_info "Setting up MinIO" -if [[ "$USE_LATEST" == "true" ]]; then - RELEASE=$(curl -fsSL https://api.github.com/repos/minio/minio/releases/latest | grep '"tag_name"' | awk -F '"' '{print $4}') - DOWNLOAD_URL="https://dl.min.io/server/minio/release/linux-amd64/minio" -else - RELEASE="$FEATURE_RICH_VERSION" - DOWNLOAD_URL="https://dl.min.io/server/minio/release/linux-amd64/archive/minio.RELEASE.${FEATURE_RICH_VERSION}" -fi - -curl -fsSL "$DOWNLOAD_URL" -o /usr/local/bin/minio -chmod +x /usr/local/bin/minio -useradd -r minio-user -s /sbin/nologin -mkdir -p /home/minio-user -chown minio-user:minio-user /home/minio-user -mkdir -p /data -chown minio-user:minio-user /data - -MINIO_ADMIN_USER="minioadmin" -MINIO_ADMIN_PASSWORD="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)" - -cat </etc/default/minio -MINIO_ROOT_USER=${MINIO_ADMIN_USER} -MINIO_ROOT_PASSWORD=${MINIO_ADMIN_PASSWORD} -EOF - -{ - echo "" - echo "MinIO Credentials" - echo "MinIO Admin User: $MINIO_ADMIN_USER" - echo "MinIO Admin Password: $MINIO_ADMIN_PASSWORD" -} >>~/minio.creds -echo "${RELEASE}" >/opt/${APPLICATION,,}_version.txt -msg_ok "Setup MinIO" - -msg_info "Creating service" -cat </etc/systemd/system/minio.service -[Unit] -Description=MinIO -Documentation=https://docs.min.io -Wants=network-online.target -After=network-online.target - -[Service] -User=minio-user -Group=minio-user -EnvironmentFile=-/etc/default/minio -ExecStart=/usr/local/bin/minio server --console-address ":9001" /data -Restart=always -RestartSec=5 -LimitNOFILE=65536 - -[Install] -WantedBy=multi-user.target -EOF - -systemctl enable -q --now minio -msg_ok "Service created" - -motd_ssh -customize -cleanup_lxc diff --git a/misc/build.func b/misc/build.func index dea1e3d51..5947cb944 100644 --- a/misc/build.func +++ b/misc/build.func @@ -3645,6 +3645,53 @@ run_addon_updates() { done } + +runtime_script_status_guard() { + local script_slug="${SCRIPT_SLUG:-${NSAPP:-}}" + script_slug="$(echo "$script_slug" | tr '[:upper:]' '[:lower:]' | tr ' ' '-')" + [[ -z "$script_slug" ]] && return 0 + + local api_url="https://db.community-scripts.org/api/collections/script_scripts/records?filter=(slug='${script_slug}')&perPage=1&fields=slug,is_disabled,is_deleted,disable_message,deleted_message" + local response + if ! response=$(curl -fsSL --connect-timeout 2 --max-time 3 "$api_url" 2>/dev/null); then + msg_warn "Script status check is unavailable. Continuing without status verification." + return 0 + fi + + if ! command -v jq >/dev/null 2>&1; then + msg_warn "Missing jq for script status check. Continuing without status verification." + return 0 + fi + + local has_record is_deleted is_disabled deleted_message disable_message info_url + has_record=$(printf '%s' "$response" | jq -r '.items | length') + [[ "$has_record" == "0" ]] && return 0 + + is_deleted=$(printf '%s' "$response" | jq -r '.items[0].is_deleted // false') + is_disabled=$(printf '%s' "$response" | jq -r '.items[0].is_disabled // false') + deleted_message=$(printf '%s' "$response" | jq -r '.items[0].deleted_message // ""') + disable_message=$(printf '%s' "$response" | jq -r '.items[0].disable_message // ""') + info_url="https://community-scripts.org/scripts/${script_slug}" + + if [[ "$is_deleted" == "true" ]]; then + msg_error "This script is no longer available in community-scripts." + [[ -n "$deleted_message" ]] && msg_error "$deleted_message" + [[ -z "$deleted_message" ]] && msg_error "This script was removed and cannot be installed or updated." + msg_info "More info: ${info_url}" + return 1 + fi + + if [[ "$is_disabled" == "true" ]]; then + msg_error "This script is currently disabled in community-scripts." + [[ -n "$disable_message" ]] && msg_error "$disable_message" + [[ -z "$disable_message" ]] && msg_error "Updates and installs are temporarily disabled for this script." + msg_info "More info: ${info_url}" + return 1 + fi + + return 0 +} + # ------------------------------------------------------------------------------ # start() # @@ -3653,9 +3700,11 @@ run_addon_updates() { # - In silent mode: runs update_script with automatic cleanup # - Otherwise: shows update/setting menu and runs update_script with cleanup # ------------------------------------------------------------------------------ + start() { source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/tools.func) if command -v pveversion >/dev/null 2>&1; then + runtime_script_status_guard || return 0 install_script || return 0 return 0 elif [ ! -z ${PHS_SILENT+x} ] && [[ "${PHS_SILENT}" == "1" ]]; then @@ -3663,6 +3712,7 @@ start() { set_std_mode ensure_profile_loaded get_lxc_ip + runtime_script_status_guard || return 0 update_script run_addon_updates update_motd_ip @@ -3673,6 +3723,7 @@ start() { set_std_mode ensure_profile_loaded get_lxc_ip + runtime_script_status_guard || return 0 update_script run_addon_updates update_motd_ip @@ -3702,6 +3753,7 @@ start() { esac ensure_profile_loaded get_lxc_ip + runtime_script_status_guard || return 0 update_script run_addon_updates update_motd_ip From f13782704e64f1819f1ddafcc063cedcfb3011ea Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Tue, 16 Jun 2026 08:57:08 +0000 Subject: [PATCH 33/78] Update CHANGELOG.md (#15128) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ef722504e..0c28f33a4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -483,6 +483,12 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit +## 2026-06-16 + +### 🆕 New Scripts + + - Add runtime status guard and deleted script stubs [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15125](https://github.com/community-scripts/ProxmoxVE/pull/15125)) + ## 2026-06-15 ### 🚀 Updated Scripts From e60c1f31c2548c6c66ab9cfc83678ddd13061c05 Mon Sep 17 00:00:00 2001 From: Michel Roegl-Brunner Date: Tue, 16 Jun 2026 11:07:23 +0200 Subject: [PATCH 34/78] Stop spinner for deleted/disabled info messages Co-authored-by: Cursor --- .github/workflows/delete-pocketbase-entry-on-removal.yml | 2 +- ct/booklore.sh | 2 +- ct/litellm.sh | 2 +- ct/minio.sh | 2 +- misc/build.func | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/delete-pocketbase-entry-on-removal.yml b/.github/workflows/delete-pocketbase-entry-on-removal.yml index c01f47c27..03056dc1e 100644 --- a/.github/workflows/delete-pocketbase-entry-on-removal.yml +++ b/.github/workflows/delete-pocketbase-entry-on-removal.yml @@ -279,7 +279,7 @@ color msg_error "This script is no longer available in community-scripts." msg_error "${deletedMessage.replace(/"/g, '\\"')}" -msg_info "More info: https://community-scripts.org/scripts/${slug}" +msg_warn "More info: https://community-scripts.org/scripts/${slug}" exit 1 `; fs.writeFileSync(stubPath, content); diff --git a/ct/booklore.sh b/ct/booklore.sh index ebf96783e..349bb2796 100644 --- a/ct/booklore.sh +++ b/ct/booklore.sh @@ -11,5 +11,5 @@ color msg_error "This script is no longer available in community-scripts." msg_error "The Booklore or the Grimmory Fork will for now not return to community-scripts. Due to the unstable nature of these projects we decided to remove them and will decide at later point if they come back, which will most likley not happen. Plese do not create Issues for this." -msg_info "More info: https://community-scripts.org/scripts/booklore" +msg_warn "More info: https://community-scripts.org/scripts/booklore" exit 1 diff --git a/ct/litellm.sh b/ct/litellm.sh index a88fefec8..16d078f40 100644 --- a/ct/litellm.sh +++ b/ct/litellm.sh @@ -11,5 +11,5 @@ color msg_error "This script is no longer available in community-scripts." msg_error "This script was removed and cannot be installed or updated." -msg_info "More info: https://community-scripts.org/scripts/litellm" +msg_warn "More info: https://community-scripts.org/scripts/litellm" exit 1 diff --git a/ct/minio.sh b/ct/minio.sh index cd5e80bd1..a9ee5c0b1 100644 --- a/ct/minio.sh +++ b/ct/minio.sh @@ -11,5 +11,5 @@ color msg_error "This script is no longer available in community-scripts." msg_error "Repository is archived. Minio is gone" -msg_info "More info: https://community-scripts.org/scripts/minio" +msg_warn "More info: https://community-scripts.org/scripts/minio" exit 1 diff --git a/misc/build.func b/misc/build.func index 5947cb944..8ebda5cbc 100644 --- a/misc/build.func +++ b/misc/build.func @@ -3677,7 +3677,7 @@ runtime_script_status_guard() { msg_error "This script is no longer available in community-scripts." [[ -n "$deleted_message" ]] && msg_error "$deleted_message" [[ -z "$deleted_message" ]] && msg_error "This script was removed and cannot be installed or updated." - msg_info "More info: ${info_url}" + msg_warn "More info: ${info_url}" return 1 fi @@ -3685,7 +3685,7 @@ runtime_script_status_guard() { msg_error "This script is currently disabled in community-scripts." [[ -n "$disable_message" ]] && msg_error "$disable_message" [[ -z "$disable_message" ]] && msg_error "Updates and installs are temporarily disabled for this script." - msg_info "More info: ${info_url}" + msg_warn "More info: ${info_url}" return 1 fi From 29c25a0ab8abc5068ec429c05571e48533ec4456 Mon Sep 17 00:00:00 2001 From: Michel Roegl-Brunner Date: Tue, 16 Jun 2026 13:01:26 +0200 Subject: [PATCH 35/78] bot blacklist --- .github/workflows/close-new-script-prs.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/close-new-script-prs.yml b/.github/workflows/close-new-script-prs.yml index d3541e21b..d7b6d2458 100644 --- a/.github/workflows/close-new-script-prs.yml +++ b/.github/workflows/close-new-script-prs.yml @@ -28,6 +28,7 @@ jobs: const allowedBots = [ "push-app-to-main[bot]", "push-app-to-main", + "community-scripts-pr-app" ]; if (allowedBots.includes(author)) { From af7e83300f177ac3b5d7748999c8c9e4ba7fbc81 Mon Sep 17 00:00:00 2001 From: "push-app-to-main[bot]" <203845782+push-app-to-main[bot]@users.noreply.github.com> Date: Tue, 16 Jun 2026 13:26:24 +0200 Subject: [PATCH 36/78] Add kiwix (ct) (#15131) Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com> --- ct/headers/kiwix | 6 +++ ct/kiwix.sh | 75 +++++++++++++++++++++++++++++++++++++ install/kiwix-install.sh | 80 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 161 insertions(+) create mode 100644 ct/headers/kiwix create mode 100644 ct/kiwix.sh create mode 100644 install/kiwix-install.sh diff --git a/ct/headers/kiwix b/ct/headers/kiwix new file mode 100644 index 000000000..743f3c30d --- /dev/null +++ b/ct/headers/kiwix @@ -0,0 +1,6 @@ + __ __ _ _ + / //_/(_) __(_) __ + / ,< / / | /| / / / |/_/ + / /| |/ /| |/ |/ / /> < +/_/ |_/_/ |__/|__/_/_/|_| + diff --git a/ct/kiwix.sh b/ct/kiwix.sh new file mode 100644 index 000000000..88016ef4e --- /dev/null +++ b/ct/kiwix.sh @@ -0,0 +1,75 @@ +#!/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: MickLesk +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/kiwix/kiwix-tools + +APP="Kiwix" +var_tags="${var_tags:-documentation;offline}" +var_cpu="${var_cpu:-1}" +var_ram="${var_ram:-512}" +var_disk="${var_disk:-4}" +var_os="${var_os:-ubuntu}" +var_version="${var_version:-24.04}" +var_arm64="${var_arm64:-no}" +var_unprivileged="${var_unprivileged:-1}" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + + if ! dpkg -s kiwix-tools &>/dev/null; then + msg_error "No ${APP} Installation Found!" + exit + fi + + CURRENT=$(dpkg-query -W -f='${Version}' kiwix-tools 2>/dev/null) + + msg_info "Updating Package Index" + $STD apt update + msg_ok "Updated Package Index" + + CANDIDATE=$(apt-cache policy kiwix-tools | awk '/Candidate:/{print $2}') + if [[ -z "$CANDIDATE" || "$CANDIDATE" == "(none)" ]]; then + msg_error "No Candidate Version Found for kiwix-tools" + exit + fi + + if [[ "$CURRENT" == "$CANDIDATE" ]]; then + echo "${CURRENT}" >/root/.kiwix + msg_ok "Already on latest version: ${CURRENT}" + exit + fi + + msg_info "Stopping Service" + systemctl stop kiwix-serve + msg_ok "Stopped Service" + + msg_info "Updating Kiwix-Tools" + $STD apt install -y --only-upgrade kiwix-tools + RELEASE=$(dpkg-query -W -f='${Version}' kiwix-tools 2>/dev/null) + echo "${RELEASE}" >/root/.kiwix + msg_ok "Updated Kiwix-Tools" + msg_ok "Updated successfully from ${CURRENT} to ${RELEASE}!" + + msg_info "Starting Service" + systemctl start kiwix-serve + msg_ok "Started Service" + exit +} + +start +build_container +description + +msg_ok "Completed successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}" diff --git a/install/kiwix-install.sh b/install/kiwix-install.sh new file mode 100644 index 000000000..9208c6998 --- /dev/null +++ b/install/kiwix-install.sh @@ -0,0 +1,80 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2026 community-scripts ORG +# Author: MickLesk (CanbiZ) | tewalds +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/kiwix/kiwix-tools + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt install -y software-properties-common +msg_ok "Installed Dependencies" + +msg_info "Adding Kiwix PPA" +add-apt-repository -y ppa:kiwixteam/release >>"$(get_active_logfile)" 2>&1 +$STD apt update +msg_ok "Added Kiwix PPA" + +msg_info "Installing Kiwix-Tools" +$STD apt install -y kiwix-tools +RELEASE=$(dpkg -s kiwix-tools 2>/dev/null | awk '/^Version:/{print $2}') +mkdir -p /data +echo "${RELEASE}" >/root/.kiwix +msg_ok "Installed Kiwix-Tools" + +msg_info "Downloading Kiwix Test Archive" +ZIM_BASE_URL="https://download.kiwix.org/zim/wikipedia" +ZIM_FILE="$(CURL_TIMEOUT=60 CURL_CONNECT_TO=15 curl_with_retry "${ZIM_BASE_URL}/" "-" | + grep -oE 'href="speedtest_en_blob_[0-9]{4}-[0-9]{2}\.zim"' | + sed -E 's/^href="|"$//g' | + sort -V | + tail -n 1)" || true + +if [[ -z "${ZIM_FILE}" ]]; then + msg_warn "No Kiwix speedtest ZIM archive found - skipping optional download" +else + ZIM_URL="${ZIM_BASE_URL}/${ZIM_FILE}" + ZIM_TEMP="/data/.${ZIM_FILE}.tmp" + ZIM_TARGET="/data/${ZIM_FILE}" + if ! CURL_TIMEOUT=120 CURL_CONNECT_TO=15 curl_with_retry "${ZIM_URL}" "${ZIM_TEMP}"; then + rm -f "${ZIM_TEMP}" + msg_warn "Failed to download Kiwix ZIM archive - skipping optional download" + ZIM_FILE="" + elif [[ ! -s "${ZIM_TEMP}" ]]; then + rm -f "${ZIM_TEMP}" + msg_warn "Downloaded Kiwix ZIM archive is empty - skipping optional download" + ZIM_FILE="" + else + mv "${ZIM_TEMP}" "${ZIM_TARGET}" + msg_ok "Downloaded Kiwix Test Archive (${ZIM_FILE})" + fi +fi + +msg_info "Creating Service" +cat <<'EOF' >/etc/systemd/system/kiwix-serve.service +[Unit] +Description=Kiwix ZIM Server +After=network.target + +[Service] +Type=simple +ExecStart=/bin/sh -c 'exec /usr/bin/kiwix-serve --port 8080 /data/*.zim' +Restart=on-failure +RestartSec=5 + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now kiwix-serve +msg_ok "Created Service" + +motd_ssh +customize +cleanup_lxc From 5f5881c757cdad6d612d3f17f1163e9324c7028c Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Tue, 16 Jun 2026 11:26:58 +0000 Subject: [PATCH 37/78] Update CHANGELOG.md (#15132) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0c28f33a4..433a7a9b9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -487,7 +487,8 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit ### 🆕 New Scripts - - Add runtime status guard and deleted script stubs [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15125](https://github.com/community-scripts/ProxmoxVE/pull/15125)) + - Kiwix ([#15131](https://github.com/community-scripts/ProxmoxVE/pull/15131)) +- Add runtime status guard and deleted script stubs [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15125](https://github.com/community-scripts/ProxmoxVE/pull/15125)) ## 2026-06-15 From 691ce33090d16999b09b738768dc5a0933984aa1 Mon Sep 17 00:00:00 2001 From: "push-app-to-main[bot]" <203845782+push-app-to-main[bot]@users.noreply.github.com> Date: Tue, 16 Jun 2026 14:28:15 +0200 Subject: [PATCH 38/78] Add feishin (ct) (#15130) Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com> --- ct/feishin.sh | 77 ++++++++++++++++++++++++++++++++++++++ ct/headers/feishin | 6 +++ install/feishin-install.sh | 68 +++++++++++++++++++++++++++++++++ 3 files changed, 151 insertions(+) create mode 100644 ct/feishin.sh create mode 100644 ct/headers/feishin create mode 100644 install/feishin-install.sh diff --git a/ct/feishin.sh b/ct/feishin.sh new file mode 100644 index 000000000..b13b280e5 --- /dev/null +++ b/ct/feishin.sh @@ -0,0 +1,77 @@ +#!/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: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/jeffvli/feishin + +APP="Feishin" +var_tags="${var_tags:-music;player;streaming}" +var_cpu="${var_cpu:-2}" +var_ram="${var_ram:-4096}" +var_disk="${var_disk:-8}" +var_os="${var_os:-debian}" +var_version="${var_version:-13}" +var_arm64="${var_arm64:-no}" +var_unprivileged="${var_unprivileged:-1}" + +header_info "$APP" +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + + if [[ ! -d /opt/feishin ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + if check_for_gh_release "feishin" "jeffvli/feishin"; then + create_backup /opt/feishin/.env + + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "feishin" "jeffvli/feishin" "tarball" + + msg_info "Rebuilding Feishin Web" + cd /opt/feishin + #PNPM_VERSION=$(jq -r '.packageManager | ltrimstr("pnpm@")' /opt/feishin/package.json) + $STD corepack enable + $STD corepack prepare "pnpm@10" --activate + $STD pnpm install + $STD pnpm run build:web + msg_ok "Rebuilt Feishin Web" + + restore_backup + + msg_info "Publishing Web Assets" + rm -rf /usr/share/nginx/html + mkdir -p /usr/share/nginx/html + cp -r /opt/feishin/out/web/. /usr/share/nginx/html/ + + set -a + source /opt/feishin/.env + set +a + + envsubst /etc/nginx/conf.d/settings.js + envsubst '${PUBLIC_PATH}' /etc/nginx/sites-available/feishin + ln -sf /etc/nginx/sites-available/feishin /etc/nginx/sites-enabled/feishin + rm -f /etc/nginx/sites-enabled/default + systemctl restart nginx + msg_ok "Published Web Assets" + + msg_ok "Updated successfully!" + fi + exit +} + +start +build_container +description + +msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9180${CL}" diff --git a/ct/headers/feishin b/ct/headers/feishin new file mode 100644 index 000000000..d8d1ad3f5 --- /dev/null +++ b/ct/headers/feishin @@ -0,0 +1,6 @@ + ______ _ __ _ + / ____/__ (_)____/ /_ (_)___ + / /_ / _ \/ / ___/ __ \/ / __ \ + / __/ / __/ (__ ) / / / / / / / +/_/ \___/_/____/_/ /_/_/_/ /_/ + diff --git a/install/feishin-install.sh b/install/feishin-install.sh new file mode 100644 index 000000000..68669db7d --- /dev/null +++ b/install/feishin-install.sh @@ -0,0 +1,68 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2026 community-scripts ORG +# Author: MickLesk (CanbiZ) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/jeffvli/feishin + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt install -y \ + nginx \ + gettext-base +msg_ok "Installed Dependencies" + +NODE_VERSION="24" setup_nodejs + +fetch_and_deploy_gh_release "feishin" "jeffvli/feishin" "tarball" + +msg_info "Building Feishin Web" +cd /opt/feishin +#PNPM_VERSION=$(jq -r '.packageManager | ltrimstr("pnpm@")' /opt/feishin/package.json) +$STD corepack enable +$STD corepack prepare "pnpm@10" --activate +$STD pnpm install +$STD pnpm run build:web +msg_ok "Built Feishin Web" + +msg_info "Configuring Environment" +cat </opt/feishin/.env +SERVER_NAME=jellyfin +SERVER_LOCK=false +SERVER_TYPE=jellyfin +SERVER_URL=http://localhost:8096 +REMOTE_URL= +LEGACY_AUTHENTICATION=false +ANALYTICS_DISABLED=false +PUBLIC_PATH=/ +EOF +msg_ok "Configured Environment" + +msg_info "Publishing Web Assets" +rm -rf /usr/share/nginx/html +mkdir -p /usr/share/nginx/html +cp -r /opt/feishin/out/web/. /usr/share/nginx/html/ + +set -a +source /opt/feishin/.env +set +a + +envsubst /etc/nginx/conf.d/settings.js +envsubst '${PUBLIC_PATH}' /etc/nginx/sites-available/feishin + +ln -sf /etc/nginx/sites-available/feishin /etc/nginx/sites-enabled/feishin +rm -f /etc/nginx/sites-enabled/default +systemctl enable -q --now nginx +systemctl reload nginx +msg_ok "Published Web Assets" + +motd_ssh +customize +cleanup_lxc From f1ee2a2b91046adac32bf358570d6bbab05ed38b Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Tue, 16 Jun 2026 12:28:50 +0000 Subject: [PATCH 39/78] Update CHANGELOG.md (#15138) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 433a7a9b9..d90d8fa66 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -487,7 +487,8 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit ### 🆕 New Scripts - - Kiwix ([#15131](https://github.com/community-scripts/ProxmoxVE/pull/15131)) + - Feishin ([#15130](https://github.com/community-scripts/ProxmoxVE/pull/15130)) +- Kiwix ([#15131](https://github.com/community-scripts/ProxmoxVE/pull/15131)) - Add runtime status guard and deleted script stubs [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15125](https://github.com/community-scripts/ProxmoxVE/pull/15125)) ## 2026-06-15 From b0896dbdeb0f12b5679e41b24fd02f1b8b7be1c9 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Tue, 16 Jun 2026 14:52:29 +0200 Subject: [PATCH 40/78] Update .app files (#15139) Co-authored-by: GitHub Actions --- ct/headers/booklore | 6 ++++++ ct/headers/litellm | 6 ++++++ 2 files changed, 12 insertions(+) create mode 100644 ct/headers/booklore create mode 100644 ct/headers/litellm diff --git a/ct/headers/booklore b/ct/headers/booklore new file mode 100644 index 000000000..267b0346f --- /dev/null +++ b/ct/headers/booklore @@ -0,0 +1,6 @@ + ____ __ __ + / __ )____ ____ / /__/ / ____ ________ + / __ / __ \/ __ \/ //_/ / / __ \/ ___/ _ \ + / /_/ / /_/ / /_/ / ,< / /___/ /_/ / / / __/ +/_____/\____/\____/_/|_/_____/\____/_/ \___/ + diff --git a/ct/headers/litellm b/ct/headers/litellm new file mode 100644 index 000000000..1360a8ff9 --- /dev/null +++ b/ct/headers/litellm @@ -0,0 +1,6 @@ + __ _ __ __ __ __ ___ + / / (_) /____ / / / / / |/ / + / / / / __/ _ \/ / / / / /|_/ / + / /___/ / /_/ __/ /___/ /___/ / / / +/_____/_/\__/\___/_____/_____/_/ /_/ + From 0683d4942c86442540ff34aa499c8a2373add6de Mon Sep 17 00:00:00 2001 From: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> Date: Tue, 16 Jun 2026 15:22:06 +0200 Subject: [PATCH 41/78] fix openobserve root password policy failure (#15137) Generate a policy-compliant ZO_ROOT_USER_PASSWORD during install so OpenObserve can start reliably on versions that require lower/upper/digit/special character complexity. --- install/openobserve-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/openobserve-install.sh b/install/openobserve-install.sh index 651fcad52..1057ff629 100644 --- a/install/openobserve-install.sh +++ b/install/openobserve-install.sh @@ -17,7 +17,7 @@ msg_info "Installing OpenObserve" mkdir -p /opt/openobserve/data RELEASE=$(get_latest_github_release "openobserve/openobserve") tar zxf <(curl -fsSL https://downloads.openobserve.ai/releases/openobserve/v$RELEASE/openobserve-v$RELEASE-linux-amd64.tar.gz) -C /opt/openobserve -ROOT_PASS=$(openssl rand -base64 18 | cut -c1-13) +ROOT_PASS="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c9)Aa1!" cat </opt/openobserve/data/.env ZO_ROOT_USER_EMAIL = "admin@example.com" From e08719ac3f4790e3f81abc932e087fe20327cd72 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Tue, 16 Jun 2026 13:22:46 +0000 Subject: [PATCH 42/78] Update CHANGELOG.md (#15145) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d90d8fa66..a772e91cb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -491,6 +491,12 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit - Kiwix ([#15131](https://github.com/community-scripts/ProxmoxVE/pull/15131)) - Add runtime status guard and deleted script stubs [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15125](https://github.com/community-scripts/ProxmoxVE/pull/15125)) +### 🚀 Updated Scripts + + - #### 🐞 Bug Fixes + + - fix: generate policy-compliant OpenObserve root password [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15137](https://github.com/community-scripts/ProxmoxVE/pull/15137)) + ## 2026-06-15 ### 🚀 Updated Scripts From 6c23883d9429e96e5eb6995d4f62f1ad6a42c1a6 Mon Sep 17 00:00:00 2001 From: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> Date: Tue, 16 Jun 2026 16:04:22 +0200 Subject: [PATCH 43/78] Fix InvoiceShelf install/update package manager execution. (#15141) Use Corepack-managed Yarn when available so installs respect upstream packageManager metadata and avoid Yarn classic mismatch failures during both fresh installs and updates. --- ct/invoiceshelf.sh | 10 ++++++++-- install/invoiceshelf-install.sh | 10 ++++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/ct/invoiceshelf.sh b/ct/invoiceshelf.sh index e6dee2377..15fa2c368 100644 --- a/ct/invoiceshelf.sh +++ b/ct/invoiceshelf.sh @@ -52,8 +52,14 @@ function update_script() { msg_info "Updating Application" cd /opt/invoiceshelf $STD composer install --no-dev --optimize-autoloader - $STD yarn install - $STD yarn build + if command -v corepack >/dev/null 2>&1; then + $STD corepack enable + $STD corepack yarn install + $STD corepack yarn build + else + $STD yarn install + $STD yarn build + fi $STD php artisan migrate --force $STD php artisan optimize:clear chown -R www-data:www-data /opt/invoiceshelf diff --git a/install/invoiceshelf-install.sh b/install/invoiceshelf-install.sh index 6160c66f5..368fcf6e6 100644 --- a/install/invoiceshelf-install.sh +++ b/install/invoiceshelf-install.sh @@ -39,8 +39,14 @@ sed -i "s|^DB_USERNAME=.*|DB_USERNAME=${PG_DB_USER}|" .env sed -i "s|^DB_PASSWORD=.*|DB_PASSWORD=${PG_DB_PASS}|" .env COMPOSER_ALLOW_SUPERUSER=1 $STD composer install --no-dev --optimize-autoloader --no-interaction $STD php artisan key:generate -$STD yarn install -$STD yarn build +if command -v corepack >/dev/null 2>&1; then + $STD corepack enable + $STD corepack yarn install + $STD corepack yarn build +else + $STD yarn install + $STD yarn build +fi mkdir -p storage/framework/{cache,sessions,views} storage/logs bootstrap/cache chown -R www-data:www-data /opt/invoiceshelf chmod -R 775 storage bootstrap/cache From 6b25e35ecf9d1c95835457c7e01c467ff44ea7ce Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Tue, 16 Jun 2026 14:05:03 +0000 Subject: [PATCH 44/78] Update CHANGELOG.md (#15146) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a772e91cb..109752f7c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -495,6 +495,7 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit - #### 🐞 Bug Fixes + - Fix InvoiceShelf install/update Yarn package manager mismatch [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15141](https://github.com/community-scripts/ProxmoxVE/pull/15141)) - fix: generate policy-compliant OpenObserve root password [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15137](https://github.com/community-scripts/ProxmoxVE/pull/15137)) ## 2026-06-15 From 4d4e1d7654c07b6f3a8de3904213064e333d10b6 Mon Sep 17 00:00:00 2001 From: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> Date: Tue, 16 Jun 2026 16:43:27 +0200 Subject: [PATCH 45/78] fix storyteller Yarn 4 install mismatch (#15140) Enable Corepack and run Storyteller install/build commands through corepack yarn so the script honors upstream packageManager and avoids Yarn 1 failures. --- ct/storyteller.sh | 5 +++-- install/storyteller-install.sh | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/ct/storyteller.sh b/ct/storyteller.sh index 6ac3a38a3..a461a6d02 100644 --- a/ct/storyteller.sh +++ b/ct/storyteller.sh @@ -48,13 +48,14 @@ function update_script() { msg_info "Rebuilding Storyteller" cd /opt/storyteller export NODE_OPTIONS="--max-old-space-size=4096" - $STD yarn install --network-timeout 600000 + $STD corepack enable + $STD corepack yarn install --network-timeout 600000 $STD gcc -g -fPIC -rdynamic -shared web/sqlite/uuid.c -o web/sqlite/uuid.c.so export CI=1 export NODE_ENV=production export NEXT_TELEMETRY_DISABLED=1 export SQLITE_NATIVE_BINDING=/opt/storyteller/node_modules/better-sqlite3/build/Release/better_sqlite3.node - $STD yarn workspaces foreach -Rpt --from @storyteller-platform/web --exclude @storyteller-platform/eslint run build + $STD corepack yarn workspaces foreach -Rpt --from @storyteller-platform/web --exclude @storyteller-platform/eslint run build mkdir -p /opt/storyteller/web/.next/standalone/web/.next/static cp -rT /opt/storyteller/web/.next/static /opt/storyteller/web/.next/standalone/web/.next/static if [[ -d /opt/storyteller/web/public ]]; then diff --git a/install/storyteller-install.sh b/install/storyteller-install.sh index e02ee1a6b..3bf66cea6 100644 --- a/install/storyteller-install.sh +++ b/install/storyteller-install.sh @@ -32,7 +32,8 @@ fetch_and_deploy_gl_release "storyteller" "storyteller-platform/storyteller" "ta msg_info "Setting up Storyteller" cd /opt/storyteller -$STD yarn install --network-timeout 600000 +$STD corepack enable +$STD corepack yarn install --network-timeout 600000 $STD gcc -g -fPIC -rdynamic -shared web/sqlite/uuid.c -o web/sqlite/uuid.c.so STORYTELLER_SECRET_KEY=$(openssl rand -base64 32) cat </opt/storyteller/.env @@ -58,7 +59,7 @@ export CI=1 export NODE_ENV=production export NEXT_TELEMETRY_DISABLED=1 export SQLITE_NATIVE_BINDING=/opt/storyteller/node_modules/better-sqlite3/build/Release/better_sqlite3.node -$STD yarn workspaces foreach -Rpt --from @storyteller-platform/web --exclude @storyteller-platform/eslint run build +$STD corepack yarn workspaces foreach -Rpt --from @storyteller-platform/web --exclude @storyteller-platform/eslint run build mkdir -p /opt/storyteller/web/.next/standalone/web/.next/static cp -rT /opt/storyteller/web/.next/static /opt/storyteller/web/.next/standalone/web/.next/static if [[ -d /opt/storyteller/web/public ]]; then From 2e8ff7a6c5acfae1e58aa332c1b90086f47374ef Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Tue, 16 Jun 2026 14:44:00 +0000 Subject: [PATCH 46/78] Update CHANGELOG.md (#15147) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 109752f7c..a873188ad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -495,6 +495,7 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit - #### 🐞 Bug Fixes + - fix storyteller install failure with yarn 4 corepack [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15140](https://github.com/community-scripts/ProxmoxVE/pull/15140)) - Fix InvoiceShelf install/update Yarn package manager mismatch [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15141](https://github.com/community-scripts/ProxmoxVE/pull/15141)) - fix: generate policy-compliant OpenObserve root password [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15137](https://github.com/community-scripts/ProxmoxVE/pull/15137)) From 2112e2793e35accfcdd10d725b049647b86de240 Mon Sep 17 00:00:00 2001 From: "Ethan H." <62605642+ethan-hgwr@users.noreply.github.com> Date: Tue, 16 Jun 2026 21:12:02 +0200 Subject: [PATCH 47/78] fix(degoog): use localhost for valkey url (#15149) --- install/degoog-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/degoog-install.sh b/install/degoog-install.sh index 2135c809d..7e120eb2c 100644 --- a/install/degoog-install.sh +++ b/install/degoog-install.sh @@ -40,7 +40,7 @@ DEGOOG_PLUGINS_DIR=/opt/degoog/data/plugins DEGOOG_THEMES_DIR=/opt/degoog/data/themes DEGOOG_ALIASES_FILE=/opt/degoog/data/aliases.json DEGOOG_PLUGIN_SETTINGS_FILE=/opt/degoog/data/plugin-settings.json -DEGOOG_VALKEY_URL=redis://valkey:6379 +DEGOOG_VALKEY_URL=redis://127.0.0.1:6379 DEGOOG_CACHE_MAX_ENTRIES=1000 DEGOOG_CACHE_TTL_MS=43200000 # DEGOOG_SETTINGS_PASSWORDS=changeme From 49b7de22c3c8b1e79392dc2c1ab2009ff70358c3 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Tue, 16 Jun 2026 19:12:40 +0000 Subject: [PATCH 48/78] Update CHANGELOG.md (#15150) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a873188ad..dd9084336 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -495,8 +495,9 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit - #### 🐞 Bug Fixes - - fix storyteller install failure with yarn 4 corepack [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15140](https://github.com/community-scripts/ProxmoxVE/pull/15140)) + - fix(degoog): use localhost for valkey url [@ethan-hgwr](https://github.com/ethan-hgwr) ([#15149](https://github.com/community-scripts/ProxmoxVE/pull/15149)) - Fix InvoiceShelf install/update Yarn package manager mismatch [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15141](https://github.com/community-scripts/ProxmoxVE/pull/15141)) + - fix storyteller install failure with yarn 4 corepack [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15140](https://github.com/community-scripts/ProxmoxVE/pull/15140)) - fix: generate policy-compliant OpenObserve root password [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15137](https://github.com/community-scripts/ProxmoxVE/pull/15137)) ## 2026-06-15 From 4556d40b075005e0472115d8e347370b8ca4fae4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?= <58952836+tremor021@users.noreply.github.com> Date: Wed, 17 Jun 2026 09:00:40 +0200 Subject: [PATCH 49/78] Pin version (#15156) --- ct/trek.sh | 2 +- install/trek-install.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ct/trek.sh b/ct/trek.sh index 8ad25d7a3..50127e1be 100644 --- a/ct/trek.sh +++ b/ct/trek.sh @@ -32,7 +32,7 @@ function update_script() { NODE_VERSION="24" setup_nodejs - if check_for_gh_release "trek" "mauriceboe/TREK"; then + if check_for_gh_release "trek" "mauriceboe/TREK" "v3.0.22"; then msg_info "Stopping Service" systemctl stop trek msg_ok "Stopped Service" diff --git a/install/trek-install.sh b/install/trek-install.sh index 48656e935..43cb9b86a 100644 --- a/install/trek-install.sh +++ b/install/trek-install.sh @@ -18,7 +18,7 @@ $STD apt install -y build-essential msg_ok "Installed Dependencies" NODE_VERSION="24" setup_nodejs -fetch_and_deploy_gh_release "trek" "mauriceboe/TREK" "tarball" +fetch_and_deploy_gh_release "trek" "mauriceboe/TREK" "tarball" "v3.0.22" msg_info "Building Client" cd /opt/trek/client From d42fd9893ebfa656686fef8aa427e1b998c7729d Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Wed, 17 Jun 2026 07:01:06 +0000 Subject: [PATCH 50/78] Update CHANGELOG.md (#15157) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index dd9084336..7c5afa824 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -483,6 +483,14 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit +## 2026-06-17 + +### 🚀 Updated Scripts + + - #### 💥 Breaking Changes + + - TREK: Pin version [@tremor021](https://github.com/tremor021) ([#15156](https://github.com/community-scripts/ProxmoxVE/pull/15156)) + ## 2026-06-16 ### 🆕 New Scripts From 59a389fb2dad062c0c42dc362ce289f739a6de8d Mon Sep 17 00:00:00 2001 From: Tobias <96661824+CrazyWolf13@users.noreply.github.com> Date: Wed, 17 Jun 2026 10:12:39 +0200 Subject: [PATCH 51/78] kasm: fix release detection (#15151) --- ct/kasm.sh | 27 +++++++++++++-------------- install/kasm-install.sh | 25 ++++++++++++------------- 2 files changed, 25 insertions(+), 27 deletions(-) diff --git a/ct/kasm.sh b/ct/kasm.sh index 0b7a8f38e..930e0748f 100644 --- a/ct/kasm.sh +++ b/ct/kasm.sh @@ -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: Omar Minaya +# Author: CrazyWolf13 # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.kasmweb.com/docs/latest/index.html @@ -16,7 +16,7 @@ var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-0}" var_fuse="${var_fuse:-yes}" var_tun="${var_tun:-yes}" -var_kasm_version="${var_kasm_version:-}" +var_kasm_version="${var_kasm_version:-1.19.0}" header_info "$APP" variables @@ -34,19 +34,18 @@ function update_script() { msg_info "Checking for new version" CURRENT_VERSION=$(readlink -f /opt/kasm/current | awk -F'/' '{print $4}') - KASM_VERSION=$(curl -s https://kasm.com/downloads | grep -oP ']*>.*?' | sed -E 's/<\/?h1[^>]*>//g' | grep -oP '\d+\.\d+\.\d+') - KASM_URL="https://kasm-static-content.s3.amazonaws.com/kasm_release_${KASM_VERSION:-var_kasm_version}.tar.gz" + KASM_URL=$(curl -s https://kasm.com/downloads \ + | grep -oP 'https://kasm-static-content\.s3\.amazonaws\.com/kasm_release_\d+\.\d+\.\d+-latest\.tar\.gz' \ + | head -1) + KASM_VERSION=$(echo "$KASM_URL" | grep -oP '\d+\.\d+\.\d+(?=-latest)') - # KASM_URL=$(curl -fsSL "https://www.kasm.com/downloads" | tr '\n' ' ' | grep -oE 'https://kasm-static-content[^"]*kasm_release_[0-9]+\.[0-9]+\.[0-9]+\.[a-z0-9]+\.tar\.gz' | head -n 1) - # if [[ -z "$KASM_URL" ]]; then - # SERVICE_IMAGE_URL=$(curl -fsSL "https://www.kasm.com/downloads" | tr '\n' ' ' | grep -oE 'https://kasm-static-content[^"]*kasm_release_service_images_amd64_[0-9]+\.[0-9]+\.[0-9]+\.tar\.gz' | head -n 1) - # if [[ -n "$SERVICE_IMAGE_URL" ]]; then - # KASM_VERSION=$(echo "$SERVICE_IMAGE_URL" | sed -E 's/.*kasm_release_service_images_amd64_([0-9]+\.[0-9]+\.[0-9]+).*/\1/') - # KASM_URL="https://kasm-static-content.s3.amazonaws.com/kasm_release_${KASM_VERSION}.tar.gz" - # fi - # else - # KASM_VERSION=$(echo "$KASM_URL" | sed -E 's/.*kasm_release_([0-9]+\.[0-9]+\.[0-9]+).*/\1/') - # fi + # Fallback to predefined version if online lookup failed. + if [[ -z "$KASM_VERSION" ]] || [[ -z "$KASM_URL" ]]; then + msg_warn "Unable to fetch latest Kasm release online, falling back to v${var_kasm_version}" + fi + + KASM_VERSION="${KASM_VERSION:-$var_kasm_version}" + KASM_URL="${KASM_URL:-https://kasm-static-content.s3.amazonaws.com/kasm_release_${KASM_VERSION}-latest.tar.gz}" if [[ -z "$KASM_VERSION" ]] || [[ -z "$KASM_URL" ]]; then msg_error "Unable to detect latest Kasm release URL." diff --git a/install/kasm-install.sh b/install/kasm-install.sh index 3b9bafa10..f5dbd024f 100644 --- a/install/kasm-install.sh +++ b/install/kasm-install.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash # Copyright (c) 2021-2026 community-scripts ORG -# Author: Omar Minaya +# Author: CrazyWolf13 # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.kasmweb.com/docs/latest/index.html @@ -18,19 +18,18 @@ $STD sh <(curl -fsSL https://get.docker.com/) msg_ok "Installed Docker" msg_info "Detecting latest Kasm Workspaces release" -KASM_VERSION=$(curl -s https://kasm.com/downloads | grep -oP ']*>.*?' | sed -E 's/<\/?h1[^>]*>//g' | grep -oP '\d+\.\d+\.\d+') -KASM_URL="https://kasm-static-content.s3.amazonaws.com/kasm_release_${KASM_VERSION:-var_kasm_version}.tar.gz" +KASM_URL=$(curl -s https://kasm.com/downloads \ + | grep -oP 'https://kasm-static-content\.s3\.amazonaws\.com/kasm_release_\d+\.\d+\.\d+-latest\.tar\.gz' \ + | head -1) +KASM_VERSION=$(echo "$KASM_URL" | grep -oP '\d+\.\d+\.\d+(?=-latest)') -# KASM_URL=$(curl -fsSL "https://www.kasm.com/downloads" | tr '\n' ' ' | grep -oE 'https://kasm-static-content[^"]*kasm_release_[0-9]+\.[0-9]+\.[0-9]+\.[a-z0-9]+\.tar\.gz' | head -n 1) -# if [[ -z "$KASM_URL" ]]; then -# SERVICE_IMAGE_URL=$(curl -fsSL "https://www.kasm.com/downloads" | tr '\n' ' ' | grep -oE 'https://kasm-static-content[^"]*kasm_release_service_images_amd64_[0-9]+\.[0-9]+\.[0-9]+\.tar\.gz' | head -n 1) -# if [[ -n "$SERVICE_IMAGE_URL" ]]; then -# KASM_VERSION=$(echo "$SERVICE_IMAGE_URL" | sed -E 's/.*kasm_release_service_images_amd64_([0-9]+\.[0-9]+\.[0-9]+).*/\1/') -# KASM_URL="https://kasm-static-content.s3.amazonaws.com/kasm_release_${KASM_VERSION}.tar.gz" -# fi -# else -# KASM_VERSION=$(echo "$KASM_URL" | sed -E 's/.*kasm_release_([0-9]+\.[0-9]+\.[0-9]+).*/\1/') -# fi +# Fallback to predefined version if online lookup failed. +if [[ -z "$KASM_VERSION" ]] || [[ -z "$KASM_URL" ]]; then + msg_warn "Unable to fetch latest Kasm release online, falling back to v${var_kasm_version}" +fi + +KASM_VERSION="${KASM_VERSION:-$var_kasm_version}" +KASM_URL="${KASM_URL:-https://kasm-static-content.s3.amazonaws.com/kasm_release_${KASM_VERSION}-latest.tar.gz}" if [[ -z "$KASM_VERSION" ]] || [[ -z "$KASM_URL" ]]; then msg_error "Unable to detect latest Kasm release URL." From 00fe32dc3c7c5f91820fab165eedcaa077e3e9e1 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Wed, 17 Jun 2026 08:13:04 +0000 Subject: [PATCH 52/78] Update CHANGELOG.md (#15158) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7c5afa824..3f78da410 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -487,6 +487,10 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit ### 🚀 Updated Scripts + - #### 🐞 Bug Fixes + + - kasm: fix release detection [@CrazyWolf13](https://github.com/CrazyWolf13) ([#15151](https://github.com/community-scripts/ProxmoxVE/pull/15151)) + - #### 💥 Breaking Changes - TREK: Pin version [@tremor021](https://github.com/tremor021) ([#15156](https://github.com/community-scripts/ProxmoxVE/pull/15156)) From 04e6933b3b8a17e06b712696fe47e87f35eb6a33 Mon Sep 17 00:00:00 2001 From: "CanbiZ (MickLesk)" <47820557+MickLesk@users.noreply.github.com> Date: Wed, 17 Jun 2026 15:30:38 +0200 Subject: [PATCH 53/78] trek: update install and upgrade workflow for v3.1.0 (#15165) * trek: update install and upgrade workflow Remove the hardcoded release tag and fetch the latest TREK release. Consolidate builds to npm workspaces (shared, client, server), copy client dist into server/public, and install/prune server deps for production. Add libkitinerary dependency and ensure dependencies during upgrade. Implement backup/restore during upgrades and add migration logic that detects the old systemd ExecStart; when present, rewrite trek.service to run the compiled dist via node --require tsconfig-paths/register, add XDG_CACHE_HOME and QT_QPA_PLATFORM env vars, and switch to network-online.target. Installer changes also create data/uploads directories, set additional .env defaults (TZ, LOG_LEVEL, DEFAULT_LANGUAGE, ALLOWED_ORIGINS), and adjust workspace setup steps. * add proxy env --- ct/trek.sh | 79 +++++++++++++++++++++++++++++------------ install/trek-install.sh | 61 +++++++++++++++++++++---------- 2 files changed, 99 insertions(+), 41 deletions(-) diff --git a/ct/trek.sh b/ct/trek.sh index 50127e1be..9d411730d 100644 --- a/ct/trek.sh +++ b/ct/trek.sh @@ -32,48 +32,81 @@ function update_script() { NODE_VERSION="24" setup_nodejs - if check_for_gh_release "trek" "mauriceboe/TREK" "v3.0.22"; then + if check_for_gh_release "trek" "mauriceboe/TREK"; then + MIGRATION=0 + grep -qF "ExecStart=/usr/bin/node --import tsx src/index.ts" \ + /etc/systemd/system/trek.service && MIGRATION=1 + msg_info "Stopping Service" systemctl stop trek msg_ok "Stopped Service" - msg_info "Backing up Data" - cp /opt/trek/server/.env /opt/trek.env.bak - mv /opt/trek/data /opt/trek-data.bak - mv /opt/trek/uploads /opt/trek-uploads.bak - msg_ok "Backed up Data" + ensure_dependencies "libkitinerary-bin" + + create_backup /opt/trek/server/.env \ + /opt/trek/data \ + /opt/trek/uploads CLEAN_INSTALL=1 fetch_and_deploy_gh_release "trek" "mauriceboe/TREK" "tarball" - msg_info "Building Client" - cd /opt/trek/client + msg_info "Building TREK" + cd /opt/trek $STD npm ci - $STD npm run build - mkdir -p /opt/trek/server/public - cp -r /opt/trek/client/dist/* /opt/trek/server/public/ - cp -r /opt/trek/client/public/fonts /opt/trek/server/public/fonts 2>/dev/null || true - msg_ok "Built Client" + $STD npm run build --workspace=shared + $STD npm run build --workspace=client + $STD npm run build --workspace=server + msg_ok "Built TREK" - msg_info "Installing Server Dependencies" - cd /opt/trek/server - $STD npm ci - msg_ok "Installed Server Dependencies" + msg_info "Setting up TREK Workspace" + rm -rf /opt/trek/server/public + mkdir -p /opt/trek/server/public/fonts + cp -a /opt/trek/client/dist/. /opt/trek/server/public/ + cp -a /opt/trek/client/public/fonts/. /opt/trek/server/public/fonts/ + + restore_backup - msg_info "Restoring Data" - mv /opt/trek-data.bak /opt/trek/data - mv /opt/trek-uploads.bak /opt/trek/uploads rm -rf /opt/trek/server/data /opt/trek/server/uploads ln -s /opt/trek/data /opt/trek/server/data ln -s /opt/trek/uploads /opt/trek/server/uploads - cp /opt/trek.env.bak /opt/trek/server/.env - rm -f /opt/trek.env.bak - msg_ok "Restored Data" + + rm -rf /opt/trek/node_modules + cd /opt/trek + $STD npm ci --workspace=server --omit=dev + msg_ok "Set up TREK Workspace" + + if [[ "$MIGRATION" == "1" ]]; then + msg_info "Migrating TREK Service" + cat </etc/systemd/system/trek.service +[Unit] +Description=TREK Travel Planner +Documentation=https://github.com/mauriceboe/TREK +After=network-online.target +Wants=network-online.target + +[Service] +Type=simple +User=root +WorkingDirectory=/opt/trek/server +EnvironmentFile=/opt/trek/server/.env +Environment=XDG_CACHE_HOME=/tmp/trek-kf6-cache +Environment=QT_QPA_PLATFORM=offscreen +ExecStart=/usr/bin/node --require tsconfig-paths/register dist/index.js +Restart=on-failure +RestartSec=5 + +[Install] +WantedBy=multi-user.target +EOF + systemctl daemon-reload + msg_ok "Migrated TREK Service" + fi msg_info "Starting Service" systemctl start trek msg_ok "Started Service" msg_ok "Updated Successfully!" fi + exit } diff --git a/install/trek-install.sh b/install/trek-install.sh index 43cb9b86a..c189afc1b 100644 --- a/install/trek-install.sh +++ b/install/trek-install.sh @@ -14,57 +14,82 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt install -y build-essential +$STD apt install -y \ + build-essential \ + libkitinerary-bin msg_ok "Installed Dependencies" NODE_VERSION="24" setup_nodejs -fetch_and_deploy_gh_release "trek" "mauriceboe/TREK" "tarball" "v3.0.22" +fetch_and_deploy_gh_release "trek" "mauriceboe/TREK" "tarball" -msg_info "Building Client" -cd /opt/trek/client +msg_info "Setup TREK" +cd /opt/trek $STD npm ci -$STD npm run build -msg_ok "Built Client" +$STD npm run build --workspace=shared +$STD npm run build --workspace=client +$STD npm run build --workspace=server +msg_ok "Setup TREK" -msg_info "Setting up Server" -cd /opt/trek/server -$STD npm ci +msg_info "Setting up TREK Workspace" +rm -rf /opt/trek/server/public mkdir -p /opt/trek/server/public -cp -r /opt/trek/client/dist/* /opt/trek/server/public/ -cp -r /opt/trek/client/public/fonts /opt/trek/server/public/fonts 2>/dev/null || true -mkdir -p /opt/trek/{data/logs,uploads/{files,covers,avatars,photos}} -rm -rf /opt/trek/server/data /opt/trek/server/uploads +cp -a /opt/trek/client/dist/. /opt/trek/server/public/ +if [[ -d /opt/trek/client/public/fonts ]]; then + mkdir -p /opt/trek/server/public/fonts + cp -a /opt/trek/client/public/fonts/. /opt/trek/server/public/fonts/ +fi +mkdir -p \ + /opt/trek/data/logs \ + /opt/trek/uploads/files \ + /opt/trek/uploads/covers \ + /opt/trek/uploads/avatars \ + /opt/trek/uploads/photos +rm -rf /opt/trek/server/data +rm -rf /opt/trek/server/uploads ln -s /opt/trek/data /opt/trek/server/data ln -s /opt/trek/uploads /opt/trek/server/uploads +cd /opt/trek +$STD npm prune --omit=dev +msg_ok "Set up TREK Workspace" + +msg_info "Configuring TREK" ENCRYPTION_KEY=$(openssl rand -hex 32) ADMIN_EMAIL="admin@trek.local" ADMIN_PASSWORD=$(openssl rand -base64 18 | tr -dc 'A-Za-z0-9' | head -c 16) cat </opt/trek/server/.env NODE_ENV=production +HOST=0.0.0.0 PORT=3000 ENCRYPTION_KEY=${ENCRYPTION_KEY} ADMIN_EMAIL=${ADMIN_EMAIL} ADMIN_PASSWORD=${ADMIN_PASSWORD} +TZ=UTC +LOG_LEVEL=info +DEFAULT_LANGUAGE=en +ALLOWED_ORIGINS= COOKIE_SECURE=false FORCE_HTTPS=false -LOG_LEVEL=info -TZ=UTC +TRUST_PROXY=1 EOF chmod 600 /opt/trek/server/.env -msg_ok "Set up Server" +msg_ok "Configured TREK" msg_info "Creating Service" cat </etc/systemd/system/trek.service [Unit] Description=TREK Travel Planner -After=network.target +Documentation=https://github.com/mauriceboe/TREK +After=network-online.target +Wants=network-online.target [Service] Type=simple User=root WorkingDirectory=/opt/trek/server EnvironmentFile=/opt/trek/server/.env -ExecStart=/usr/bin/node --import tsx src/index.ts +Environment=XDG_CACHE_HOME=/tmp/trek-kf6-cache +Environment=QT_QPA_PLATFORM=offscreen +ExecStart=/usr/bin/node --require tsconfig-paths/register dist/index.js Restart=on-failure RestartSec=5 From 1d8518b305a38bce3df636382314b7988238cffc Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Wed, 17 Jun 2026 13:31:18 +0000 Subject: [PATCH 54/78] Update CHANGELOG.md (#15167) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f78da410..eb81118a6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -491,6 +491,10 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit - kasm: fix release detection [@CrazyWolf13](https://github.com/CrazyWolf13) ([#15151](https://github.com/community-scripts/ProxmoxVE/pull/15151)) + - #### ✨ New Features + + - trek: update install and upgrade workflow for v3.1.0 [@MickLesk](https://github.com/MickLesk) ([#15165](https://github.com/community-scripts/ProxmoxVE/pull/15165)) + - #### 💥 Breaking Changes - TREK: Pin version [@tremor021](https://github.com/tremor021) ([#15156](https://github.com/community-scripts/ProxmoxVE/pull/15156)) From 5169c61968998996c545d10bb3bd42947bc7e610 Mon Sep 17 00:00:00 2001 From: "CanbiZ (MickLesk)" <47820557+MickLesk@users.noreply.github.com> Date: Wed, 17 Jun 2026 15:34:27 +0200 Subject: [PATCH 55/78] immich public proxy: replace npm install with npm ci for consistent dependency installation (#15166) --- tools/addon/immich-public-proxy.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/addon/immich-public-proxy.sh b/tools/addon/immich-public-proxy.sh index e464382d5..f6d72fd51 100644 --- a/tools/addon/immich-public-proxy.sh +++ b/tools/addon/immich-public-proxy.sh @@ -99,7 +99,7 @@ function update() { msg_info "Installing dependencies" cd "$CONFIG_PATH" - $STD npm install + $STD npm ci msg_ok "Installed dependencies" msg_info "Building ${APP}" @@ -151,7 +151,7 @@ function install() { msg_info "Installing dependencies" cd "$CONFIG_PATH" - $STD npm install + $STD npm ci msg_ok "Installed dependencies" msg_info "Building ${APP}" From 4b80e0db29a845a9a910a2b0ef2219846d79f038 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Wed, 17 Jun 2026 13:35:06 +0000 Subject: [PATCH 56/78] Update CHANGELOG.md (#15168) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index eb81118a6..7660c22db 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -499,6 +499,12 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit - TREK: Pin version [@tremor021](https://github.com/tremor021) ([#15156](https://github.com/community-scripts/ProxmoxVE/pull/15156)) +### 🧰 Tools + + - #### 🐞 Bug Fixes + + - immich public proxy: replace npm install with npm ci for consistent dependency installation [@MickLesk](https://github.com/MickLesk) ([#15166](https://github.com/community-scripts/ProxmoxVE/pull/15166)) + ## 2026-06-16 ### 🆕 New Scripts From 3d7fd049fa4e832bd573ea940865354737b9caf1 Mon Sep 17 00:00:00 2001 From: Tom Frenzel <40773830+tomfrenzel@users.noreply.github.com> Date: Wed, 17 Jun 2026 18:11:08 +0200 Subject: [PATCH 57/78] chore(paperless-ngx): pin version to prevent v3 update (#15171) --- ct/paperless-ngx.sh | 7 ++++--- install/paperless-ngx-install.sh | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/ct/paperless-ngx.sh b/ct/paperless-ngx.sh index 9328c3522..da6dffd0d 100644 --- a/ct/paperless-ngx.sh +++ b/ct/paperless-ngx.sh @@ -49,7 +49,8 @@ function update_script() { fi fi - if check_for_gh_release "paperless" "paperless-ngx/paperless-ngx"; then + RELEASE="v2.20.15" + if check_for_gh_release "paperless" "paperless-ngx/paperless-ngx" "${RELEASE}" "v3 needs further testing"; then msg_info "Stopping all Paperless-ngx Services" systemctl stop paperless-consumer paperless-webserver paperless-scheduler paperless-task-queue msg_ok "Stopped all Paperless-ngx Services" @@ -63,7 +64,7 @@ function update_script() { msg_ok "Backup completed to $BACKUP_DIR" PYTHON_VERSION="3.13" setup_uv - CLEAN_INSTALL=1 fetch_and_deploy_gh_release "paperless" "paperless-ngx/paperless-ngx" "prebuild" "latest" "/opt/paperless" "paperless*tar.xz" + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "paperless" "paperless-ngx/paperless-ngx" "prebuild" "${RELEASE}" "/opt/paperless" "paperless*tar.xz" CLEAN_INSTALL=1 fetch_and_deploy_gh_release "jbig2enc" "ie13/jbig2enc" "tarball" "latest" "/opt/jbig2enc" . /etc/os-release @@ -138,7 +139,7 @@ function update_script() { msg_ok "Backup completed to $BACKUP_DIR" PYTHON_VERSION="3.13" setup_uv - CLEAN_INSTALL=1 fetch_and_deploy_gh_release "paperless" "paperless-ngx/paperless-ngx" "prebuild" "latest" "/opt/paperless" "paperless*tar.xz" + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "paperless" "paperless-ngx/paperless-ngx" "prebuild" "${RELEASE}" "/opt/paperless" "paperless*tar.xz" CLEAN_INSTALL=1 fetch_and_deploy_gh_release "jbig2enc" "ie13/jbig2enc" "tarball" "latest" "/opt/jbig2enc" . /etc/os-release diff --git a/install/paperless-ngx-install.sh b/install/paperless-ngx-install.sh index b7d1745a4..639783a89 100644 --- a/install/paperless-ngx-install.sh +++ b/install/paperless-ngx-install.sh @@ -46,7 +46,7 @@ msg_ok "Installed Dependencies" PG_VERSION="16" setup_postgresql PG_DB_NAME="paperlessdb" PG_DB_USER="paperless" setup_postgresql_db PYTHON_VERSION="3.13" setup_uv -fetch_and_deploy_gh_release "paperless" "paperless-ngx/paperless-ngx" "prebuild" "latest" "/opt/paperless" "paperless*tar.xz" +fetch_and_deploy_gh_release "paperless" "paperless-ngx/paperless-ngx" "prebuild" "v2.20.15" "/opt/paperless" "paperless*tar.xz" msg_info "Setup Paperless-ngx" cd /opt/paperless From a5398b742cc166b2fbc7626ddf62de159e3dfda1 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Wed, 17 Jun 2026 16:11:43 +0000 Subject: [PATCH 58/78] Update CHANGELOG.md (#15172) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7660c22db..4913b0b8d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -499,6 +499,10 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit - TREK: Pin version [@tremor021](https://github.com/tremor021) ([#15156](https://github.com/community-scripts/ProxmoxVE/pull/15156)) + - #### 🔧 Refactor + + - chore(paperless-ngx): pin version to prevent v3 update [@tomfrenzel](https://github.com/tomfrenzel) ([#15171](https://github.com/community-scripts/ProxmoxVE/pull/15171)) + ### 🧰 Tools - #### 🐞 Bug Fixes From 05823c3cb5cad99e1d7e8ca48eea0d76c565eeac Mon Sep 17 00:00:00 2001 From: "CanbiZ (MickLesk)" <47820557+MickLesk@users.noreply.github.com> Date: Thu, 18 Jun 2026 11:53:15 +0200 Subject: [PATCH 59/78] flowise: add deps / uv / python 3.11 (#15177) --- install/flowiseai-install.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/install/flowiseai-install.sh b/install/flowiseai-install.sh index 1af403d16..4291f42a1 100644 --- a/install/flowiseai-install.sh +++ b/install/flowiseai-install.sh @@ -14,12 +14,17 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt install -y build-essential python3-dev +$STD apt install -y \ + build-essential \ + pkg-config msg_ok "Installed Dependencies" +PYTHON_VERSION="3.11" setup_uv NODE_VERSION="24" setup_nodejs msg_info "Installing FlowiseAI (Patience)" +PYTHON_BIN="$(uv python find 3.11)" +export npm_config_python="$PYTHON_BIN" $STD npm install -g flowise \ @opentelemetry/exporter-trace-otlp-grpc \ @opentelemetry/exporter-trace-otlp-proto \ From ca95941cd9ab763ceea3eee6ed648d45db9dca7a Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Thu, 18 Jun 2026 09:53:40 +0000 Subject: [PATCH 60/78] Update CHANGELOG.md (#15179) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4913b0b8d..d85b825e6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -483,6 +483,14 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit +## 2026-06-18 + +### 🚀 Updated Scripts + + - #### 🐞 Bug Fixes + + - flowise: add deps / uv / python 3.11 [@MickLesk](https://github.com/MickLesk) ([#15177](https://github.com/community-scripts/ProxmoxVE/pull/15177)) + ## 2026-06-17 ### 🚀 Updated Scripts From e9b6af3531c8a64597e0edba7309002d11f9ff68 Mon Sep 17 00:00:00 2001 From: Tobias <96661824+CrazyWolf13@users.noreply.github.com> Date: Thu, 18 Jun 2026 11:55:28 +0200 Subject: [PATCH 61/78] refactor: crafty-controller (#15178) * refactor: crafty-controller * refactor: crafty-controller --- ct/crafty-controller.sh | 41 ++++++++++++---------------- install/crafty-controller-install.sh | 16 +++-------- 2 files changed, 22 insertions(+), 35 deletions(-) diff --git a/ct/crafty-controller.sh b/ct/crafty-controller.sh index 7e1118640..b783fbea2 100644 --- a/ct/crafty-controller.sh +++ b/ct/crafty-controller.sh @@ -29,42 +29,37 @@ function update_script() { exit fi - RELEASE=$(curl -fsSL "https://gitlab.com/api/v4/projects/20430749/releases" | grep -o '"tag_name":"v[^"]*"' | head -n 1 | sed 's/"tag_name":"v//;s/"//') - if [[ ! -f /opt/crafty-controller_version.txt ]] || [[ ${RELEASE} != "$(cat /opt/crafty-controller_version.txt)" ]]; then - + if check_for_gl_release "Crafty-Controller" "crafty-controller/crafty-4"; then msg_info "Stopping Crafty-Controller" systemctl stop crafty-controller msg_ok "Stopped Crafty-Controller" - create_backup /opt/crafty-controller/crafty/crafty-4/app/config/version.json \ - /opt/crafty-controller/crafty/crafty-4/app/config/credits.json \ - /opt/crafty-controller/crafty/crafty-4/app/config/logging.json \ - /opt/crafty-controller/crafty/crafty-4/app/config/default.json.example \ - /opt/crafty-controller/crafty/crafty-4/app/config/motd_format.json + create_backup \ + "/opt/crafty-controller/crafty/crafty-4/app/config/db" \ + "/opt/crafty-controller/crafty/crafty-4/app/config/config.json" \ + "/opt/crafty-controller/crafty/crafty-4/app/config/web" \ + "/opt/crafty-controller/crafty/crafty-4/servers" \ + "/opt/crafty-controller/crafty/crafty-4/backups" \ + "/opt/crafty-controller/crafty/crafty-4/import" - msg_info "Updating Crafty-Controller to v${RELEASE}" - curl -fsSL "https://gitlab.com/crafty-controller/crafty-4/-/archive/v${RELEASE}/crafty-4-v${RELEASE}.zip" -o $(basename "https://gitlab.com/crafty-controller/crafty-4/-/archive/v${RELEASE}/crafty-4-v${RELEASE}.zip") - $STD unzip crafty-4-v"${RELEASE}".zip - cp -a crafty-4-v"${RELEASE}"/. /opt/crafty-controller/crafty/crafty-4/ - rm -rf crafty-4-v"${RELEASE}" - cd /opt/crafty-controller/crafty/crafty-4 - sudo -u crafty bash -c ' - source /opt/crafty-controller/crafty/.venv/bin/activate - pip3 install --no-cache-dir -r requirements.txt - ' &>/dev/null - echo "${RELEASE}" >"/opt/crafty-controller_version.txt" - msg_ok "Updated Crafty-Controller to v${RELEASE}" + CLEAN_INSTALL=1 fetch_and_deploy_gl_release "Crafty-Controller" "crafty-controller/crafty-4" "tarball" "latest" "/opt/crafty-controller/crafty/crafty-4" restore_backup - chown -R crafty:crafty /opt/crafty-controller/ + + msg_info "Updating Python dependencies" + chown -R crafty:crafty /opt/crafty-controller + cd /opt/crafty-controller/crafty/crafty-4 + $STD sudo -u crafty bash -c ' + source /opt/crafty-controller/crafty/.venv/bin/activate + pip3 install --no-cache-dir -r requirements.txt + ' + msg_ok "Updated Python dependencies" msg_info "Starting Crafty-Controller" systemctl start crafty-controller msg_ok "Started Crafty-Controller" msg_ok "Updated successfully!" - else - msg_ok "No update required. ${APP} is already at v${RELEASE}" fi exit } diff --git a/install/crafty-controller-install.sh b/install/crafty-controller-install.sh index 904332147..d9223590f 100644 --- a/install/crafty-controller-install.sh +++ b/install/crafty-controller-install.sh @@ -16,29 +16,22 @@ update_os msg_info "Setting up TemurinJDK" setup_java $STD apt install -y temurin-{8,11,17,21,25}-jre -sudo update-alternatives --set java /usr/lib/jvm/temurin-25-jre-amd64/bin/java +$STD update-alternatives --set java /usr/lib/jvm/temurin-25-jre-amd64/bin/java msg_ok "Installed TemurinJDK" msg_info "Setup Python3" $STD apt install -y \ - python3 \ python3-dev \ python3-pip \ python3-venv rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED msg_ok "Setup Python3" -msg_info "Installing Crafty-Controller (Patience)" useradd crafty -m -s /bin/bash -cd /opt mkdir -p /opt/crafty-controller/crafty /opt/crafty-controller/server -RELEASE=$(curl -fsSL "https://gitlab.com/api/v4/projects/20430749/releases" | grep -o '"tag_name":"v[^"]*"' | head -n 1 | sed 's/"tag_name":"v//;s/"//') -echo "${RELEASE}" >"/opt/crafty-controller_version.txt" -curl -fsSL "https://gitlab.com/crafty-controller/crafty-4/-/archive/v${RELEASE}/crafty-4-v${RELEASE}.zip" -o "crafty-4-v${RELEASE}.zip" -$STD unzip crafty-4-v"${RELEASE}".zip -cp -a crafty-4-v"${RELEASE}"/. /opt/crafty-controller/crafty/crafty-4/ -rm -rf crafty-4-v"${RELEASE}" +fetch_and_deploy_gl_release "Crafty-Controller" "crafty-controller/crafty-4" "tarball" "latest" "/opt/crafty-controller/crafty/crafty-4" +msg_info "Installing Crafty-Controller dependencies (Patience)" cd /opt/crafty-controller/crafty python3 -m venv .venv chown -R crafty:crafty /opt/crafty-controller/ @@ -47,7 +40,7 @@ $STD sudo -u crafty bash -c ' cd /opt/crafty-controller/crafty/crafty-4 pip3 install --no-cache-dir -r requirements.txt ' -msg_ok "Installed Craft-Controller and dependencies" +msg_ok "Installed Crafty-Controller dependencies" msg_info "Setting up service" cat </etc/systemd/system/crafty-controller.service @@ -80,7 +73,6 @@ if [[ -f "$CREDS_FILE" ]]; then } >>~/crafty-controller.creds fi msg_ok "Service started" - motd_ssh customize cleanup_lxc From d8640aeb4c22c4261fb6c3e555d01813747afd28 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Thu, 18 Jun 2026 09:56:07 +0000 Subject: [PATCH 62/78] Update CHANGELOG.md (#15180) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d85b825e6..c2cdefe39 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -491,6 +491,10 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit - flowise: add deps / uv / python 3.11 [@MickLesk](https://github.com/MickLesk) ([#15177](https://github.com/community-scripts/ProxmoxVE/pull/15177)) + - #### 💥 Breaking Changes + + - refactor: crafty-controller [@CrazyWolf13](https://github.com/CrazyWolf13) ([#15178](https://github.com/community-scripts/ProxmoxVE/pull/15178)) + ## 2026-06-17 ### 🚀 Updated Scripts From 34651702342b0a2096337459acb4d27c8f558066 Mon Sep 17 00:00:00 2001 From: "CanbiZ (MickLesk)" <47820557+MickLesk@users.noreply.github.com> Date: Thu, 18 Jun 2026 12:51:44 +0200 Subject: [PATCH 63/78] Downgrade Node.js version to 22 for compatibility --- install/flowiseai-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/flowiseai-install.sh b/install/flowiseai-install.sh index 4291f42a1..769d734fd 100644 --- a/install/flowiseai-install.sh +++ b/install/flowiseai-install.sh @@ -20,7 +20,7 @@ $STD apt install -y \ msg_ok "Installed Dependencies" PYTHON_VERSION="3.11" setup_uv -NODE_VERSION="24" setup_nodejs +NODE_VERSION="22" setup_nodejs #needed because better-sql break msg_info "Installing FlowiseAI (Patience)" PYTHON_BIN="$(uv python find 3.11)" From 6275928a8179574399ea9c25efec5654a06ace4f Mon Sep 17 00:00:00 2001 From: "CanbiZ (MickLesk)" <47820557+MickLesk@users.noreply.github.com> Date: Thu, 18 Jun 2026 12:52:04 +0200 Subject: [PATCH 64/78] Downgrade Node.js version from 24 to 22 --- ct/flowiseai.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ct/flowiseai.sh b/ct/flowiseai.sh index 4e7e139dc..7d4c6468e 100644 --- a/ct/flowiseai.sh +++ b/ct/flowiseai.sh @@ -29,7 +29,7 @@ function update_script() { exit fi - NODE_VERSION="24" NODE_MODULE="pnpm" setup_nodejs + NODE_VERSION="22" NODE_MODULE="pnpm" setup_nodejs msg_info "Updating FlowiseAI (this may take some time)" systemctl stop flowise From d0caa762024a9e90809612c1f6aaadb491075a75 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 19 Jun 2026 14:07:47 +1000 Subject: [PATCH 65/78] chore(ct): sync bitmagnet defaults from PocketBase (#15183) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- ct/bitmagnet.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ct/bitmagnet.sh b/ct/bitmagnet.sh index 8d8d5b875..56966f954 100644 --- a/ct/bitmagnet.sh +++ b/ct/bitmagnet.sh @@ -8,7 +8,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV APP="Bitmagnet" var_tags="${var_tags:-os}" var_cpu="${var_cpu:-2}" -var_ram="${var_ram:-1024}" +var_ram="${var_ram:-2048}" var_disk="${var_disk:-4}" var_os="${var_os:-debian}" var_version="${var_version:-13}" From 6ef8608124be3f6cf8c09d8bfa4ca8f7bec956c8 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Fri, 19 Jun 2026 04:08:12 +0000 Subject: [PATCH 66/78] Update CHANGELOG.md (#15192) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c2cdefe39..6b2cd2f4b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -483,6 +483,12 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit +## 2026-06-19 + +### ❔ Uncategorized + + - chore(ct): sync bitmagnet defaults with PocketBase [@github-actions[bot]](https://github.com/github-actions[bot]) ([#15183](https://github.com/community-scripts/ProxmoxVE/pull/15183)) + ## 2026-06-18 ### 🚀 Updated Scripts From 02c5d1ef824db5b2e2c56b61a1a703d4c6e2dec9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 19 Jun 2026 14:08:21 +1000 Subject: [PATCH 67/78] chore(ct): sync gatus defaults from PocketBase (#15184) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- ct/gatus.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ct/gatus.sh b/ct/gatus.sh index a1117100c..726bcb652 100644 --- a/ct/gatus.sh +++ b/ct/gatus.sh @@ -8,7 +8,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV APP="gatus" var_tags="${var_tags:-monitoring}" var_cpu="${var_cpu:-1}" -var_ram="${var_ram:-1024}" +var_ram="${var_ram:-512}" var_disk="${var_disk:-4}" var_os="${var_os:-debian}" var_version="${var_version:-13}" From e0c05196d4935689a08ffb468ba092980e4f8f98 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Fri, 19 Jun 2026 04:08:34 +0000 Subject: [PATCH 68/78] Update CHANGELOG.md (#15193) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6b2cd2f4b..d3c532479 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -487,7 +487,8 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit ### ❔ Uncategorized - - chore(ct): sync bitmagnet defaults with PocketBase [@github-actions[bot]](https://github.com/github-actions[bot]) ([#15183](https://github.com/community-scripts/ProxmoxVE/pull/15183)) + - chore(ct): sync gatus defaults with PocketBase [@github-actions[bot]](https://github.com/github-actions[bot]) ([#15184](https://github.com/community-scripts/ProxmoxVE/pull/15184)) +- chore(ct): sync bitmagnet defaults with PocketBase [@github-actions[bot]](https://github.com/github-actions[bot]) ([#15183](https://github.com/community-scripts/ProxmoxVE/pull/15183)) ## 2026-06-18 From fb29b8f4e4b0185e9454495cbb9cf9efb542cc1c Mon Sep 17 00:00:00 2001 From: Sam Heinz Date: Fri, 19 Jun 2026 15:57:05 +1000 Subject: [PATCH 70/78] add myself to the contributor list (#15190) --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 9b58b6d9c..bc6511cf7 100644 --- a/README.md +++ b/README.md @@ -149,6 +149,12 @@ This project runs on community contributions. Whether you want to write new scri vhsdream + + + asylumexp
+ asylumexp +
+ From 1b07f6016320a7187495138c6141df73fb9633ea Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 19 Jun 2026 07:58:05 +0200 Subject: [PATCH 71/78] chore(ct): sync coredns defaults with PocketBase (#15182) --- ct/coredns.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ct/coredns.sh b/ct/coredns.sh index f7af6a1d3..d2b010d91 100644 --- a/ct/coredns.sh +++ b/ct/coredns.sh @@ -9,7 +9,7 @@ APP="CoreDNS" var_tags="${var_tags:-dns;network}" var_cpu="${var_cpu:-1}" var_ram="${var_ram:-256}" -var_disk="${var_disk:-1}" +var_disk="${var_disk:-2}" var_os="${var_os:-debian}" var_version="${var_version:-13}" var_arm64="${var_arm64:-no}" From 515122227aeb55ae2b2e9231c0baa171c8a2b9a9 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Fri, 19 Jun 2026 05:58:31 +0000 Subject: [PATCH 72/78] Update CHANGELOG.md (#15198) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d3c532479..1ac589531 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -487,7 +487,8 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit ### ❔ Uncategorized - - chore(ct): sync gatus defaults with PocketBase [@github-actions[bot]](https://github.com/github-actions[bot]) ([#15184](https://github.com/community-scripts/ProxmoxVE/pull/15184)) + - chore(ct): sync coredns defaults with PocketBase [@github-actions[bot]](https://github.com/github-actions[bot]) ([#15182](https://github.com/community-scripts/ProxmoxVE/pull/15182)) +- chore(ct): sync gatus defaults with PocketBase [@github-actions[bot]](https://github.com/github-actions[bot]) ([#15184](https://github.com/community-scripts/ProxmoxVE/pull/15184)) - chore(ct): sync bitmagnet defaults with PocketBase [@github-actions[bot]](https://github.com/github-actions[bot]) ([#15183](https://github.com/community-scripts/ProxmoxVE/pull/15183)) ## 2026-06-18 From 5dfabfbb9262c66c51caf98980838001512c2a2e Mon Sep 17 00:00:00 2001 From: Trollfjorden Date: Fri, 19 Jun 2026 06:42:12 +0000 Subject: [PATCH 73/78] fix (workflow): YAML syntax error in pocketbase stub generation (#15174) * fix (workflow): YAML syntax error in pocketbase stub generation * fix: remove leftover semicolon row, add string literals --- .../delete-pocketbase-entry-on-removal.yml | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/.github/workflows/delete-pocketbase-entry-on-removal.yml b/.github/workflows/delete-pocketbase-entry-on-removal.yml index 03056dc1e..2cf7b46b8 100644 --- a/.github/workflows/delete-pocketbase-entry-on-removal.yml +++ b/.github/workflows/delete-pocketbase-entry-on-removal.yml @@ -265,23 +265,23 @@ jobs: : 'This script was removed and cannot be installed or updated.'; const stubPath = path.join('ct', slug + '.sh'); - const content = -`#!/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 -# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE - -APP="${appName.replace(/"/g, '\\"')}" - -header_info "$APP" -variables -color - -msg_error "This script is no longer available in community-scripts." -msg_error "${deletedMessage.replace(/"/g, '\\"')}" -msg_warn "More info: https://community-scripts.org/scripts/${slug}" -exit 1 -`; + const content = [ + "#!/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", + "# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE", + "", + `APP="${appName.replace(/"/g, '\\"')}"`, + "", + 'header_info "$APP"', + 'variables', + 'color', + "", + 'msg_error "This script is no longer available in community-scripts."', + `msg_error "${deletedMessage.replace(/"/g, '\\"')}"`, + `msg_warn "More info: https://community-scripts.org/scripts/${slug}"`, + "exit 1" + ].join('\n') + '\n'; fs.writeFileSync(stubPath, content); console.log('Generated stub: ' + stubPath); } From 482a7a78f77c42376e6d87b2f9faa388faf654da Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Fri, 19 Jun 2026 06:42:39 +0000 Subject: [PATCH 74/78] Update CHANGELOG.md (#15200) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1ac589531..cee368dd2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -485,6 +485,10 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit ## 2026-06-19 +### 📂 Github + + - fix (workflow): YAML syntax error in pocketbase stub generation [@Trollfjorden](https://github.com/Trollfjorden) ([#15174](https://github.com/community-scripts/ProxmoxVE/pull/15174)) + ### ❔ Uncategorized - chore(ct): sync coredns defaults with PocketBase [@github-actions[bot]](https://github.com/github-actions[bot]) ([#15182](https://github.com/community-scripts/ProxmoxVE/pull/15182)) From 6ce9d8a39dc5a202a1a232dbfe75589fe1fbb68e Mon Sep 17 00:00:00 2001 From: Sam Heinz Date: Fri, 19 Jun 2026 17:53:08 +1000 Subject: [PATCH 75/78] [arm64] Port scripts titled between A-F to support arm64 (#15181) --- ct/adguard.sh | 2 +- ct/adventurelog.sh | 2 +- ct/agentdvr.sh | 2 +- ct/alpine-adguard.sh | 2 +- ct/alpine-bitmagnet.sh | 4 +-- ct/alpine-borgbackup-server.sh | 2 +- ct/alpine-caddy.sh | 2 +- ct/alpine-cinny.sh | 2 +- ct/alpine-docker.sh | 2 +- ct/alpine-forgejo.sh | 2 +- ct/alpine-garage.sh | 4 +-- ct/alpine-gatus.sh | 4 +-- ct/alpine-gitea.sh | 2 +- ct/alpine-grafana.sh | 4 +-- ct/alpine-ironclaw.sh | 2 +- ct/alpine-komodo.sh | 2 +- ct/alpine-loki.sh | 2 +- ct/alpine-mariadb.sh | 2 +- ct/alpine-nextcloud.sh | 2 +- ct/alpine-node-red.sh | 2 +- ct/alpine-ntfy.sh | 2 +- ct/alpine-postgresql.sh | 2 +- ct/alpine-prometheus.sh | 2 +- ct/alpine-rclone.sh | 4 +-- ct/alpine-redis.sh | 2 +- ct/alpine-redlib.sh | 4 +-- ct/alpine-rustdeskserver.sh | 11 ++++---- ct/alpine-rustypaste.sh | 2 +- ct/alpine-syncthing.sh | 2 +- ct/alpine-tinyauth.sh | 4 +-- ct/alpine-traefik.sh | 2 +- ct/alpine-transmission.sh | 2 +- ct/alpine-valkey.sh | 2 +- ct/alpine-vaultwarden.sh | 2 +- ct/alpine-wakapi.sh | 4 +-- ct/alpine-wireguard.sh | 2 +- ct/alpine-zigbee2mqtt.sh | 2 +- ct/ampache.sh | 2 +- ct/anchor.sh | 2 +- ct/anytype-server.sh | 4 +-- ct/apache-tika.sh | 2 +- ct/apache-tomcat.sh | 2 +- ct/argus.sh | 4 +-- ct/aria2.sh | 2 +- ct/authentik.sh | 3 +- ct/autobrr.sh | 4 +-- ct/backrest.sh | 4 +-- ct/bambuddy.sh | 2 +- ct/bazarr.sh | 2 +- ct/bentopdf.sh | 2 +- ct/beszel.sh | 2 +- ct/bichon.sh | 10 +++---- ct/birdnet-go.sh | 4 +-- ct/bitfocus-companion.sh | 2 +- ct/blocky.sh | 6 ++-- ct/calibre-web.sh | 2 +- ct/certimate.sh | 4 +-- ct/cleanuparr.sh | 4 +-- ct/clickhouse.sh | 2 +- ct/cliproxyapi.sh | 4 +-- ct/cloudreve.sh | 4 +-- ct/cockpit.sh | 2 +- ct/comfyui.sh | 2 +- ct/configarr.sh | 2 +- ct/coolify.sh | 2 +- ct/coredns.sh | 2 +- ct/cosmos.sh | 2 +- ct/crafty-controller.sh | 2 +- ct/cyberchef.sh | 2 +- ct/dagu.sh | 4 +-- ct/dashy.sh | 2 +- ct/databasus.sh | 9 ++++-- ct/dawarich.sh | 2 +- ct/ddclient.sh | 2 +- ct/ddns-updater.sh | 4 +-- ct/deconz.sh | 2 +- ct/discopanel.sh | 6 ++-- ct/docuseal.sh | 2 +- ct/dokploy.sh | 2 +- ct/donetick.sh | 4 +-- ct/drawdb.sh | 2 +- ct/drawio.sh | 2 +- ct/duplicati.sh | 2 +- ct/dynacat.sh | 4 +-- ct/ebusd.sh | 4 +-- ct/emqx.sh | 6 ++-- ct/erpnext.sh | 2 +- ct/ersatztv.sh | 6 ++-- ct/espconnect.sh | 2 +- ct/ezbookkeeping.sh | 4 +-- ct/fileflows.sh | 2 +- ct/fireshare.sh | 2 +- ct/fladder.sh | 2 +- ct/foldergram.sh | 2 +- ct/forgejo.sh | 4 +-- install/adguard-install.sh | 2 +- install/agentdvr-install.sh | 6 ++-- install/alpine-adguard-install.sh | 8 +++--- install/alpine-docker-install.sh | 2 +- install/alpine-garage-install.sh | 2 +- install/alpine-rclone-install.sh | 2 +- install/alpine-redlib-install.sh | 2 +- install/alpine-rustdeskserver-install.sh | 7 +++-- install/alpine-tinyauth-install.sh | 2 +- install/alpine-wakapi-install.sh | 2 +- install/anytype-server-install.sh | 2 +- install/apache-tomcat-install.sh | 2 +- install/argus-install.sh | 2 +- install/authentik-install.sh | 6 ++-- install/autobrr-install.sh | 2 +- install/autocaliweb-install.sh | 4 +-- install/backrest-install.sh | 2 +- install/beszel-install.sh | 2 +- install/bichon-install.sh | 2 +- install/birdnet-go-install.sh | 2 +- install/bitfocus-companion-install.sh | 8 ++++-- install/blocky-install.sh | 2 +- install/certimate-install.sh | 2 +- install/cleanuparr-install.sh | 2 +- install/cliproxyapi-install.sh | 2 +- install/cloudreve-install.sh | 2 +- install/cockpit-install.sh | 3 +- install/configarr-install.sh | 2 +- install/cosmos-install.sh | 2 +- install/crafty-controller-install.sh | 6 ++-- install/dagu-install.sh | 2 +- install/databasus-install.sh | 6 ++-- install/ddns-updater-install.sh | 2 +- install/deconz-install.sh | 5 ++-- install/discopanel-install.sh | 4 +-- install/donetick-install.sh | 2 +- install/duplicati-install.sh | 2 +- install/dynacat-install.sh | 2 +- install/ebusd-install.sh | 2 +- install/emqx-install.sh | 4 +-- install/erpnext-install.sh | 5 ++-- install/ersatztv-install.sh | 4 +-- install/ezbookkeeping-install.sh | 2 +- install/fileflows-install.sh | 20 ++++++++++---- install/forgejo-install.sh | 2 +- install/frigate-install.sh | 4 +-- misc/build.func | 35 ++++++++++++++++++++++-- misc/core.func | 21 ++++++++++++++ misc/tools.func | 22 +++++++++++---- 144 files changed, 300 insertions(+), 217 deletions(-) diff --git a/ct/adguard.sh b/ct/adguard.sh index 6d4cffb95..87c47f6ed 100644 --- a/ct/adguard.sh +++ b/ct/adguard.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-512}" var_disk="${var_disk:-2}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/adventurelog.sh b/ct/adventurelog.sh index e61c7f2da..0da4c09c0 100644 --- a/ct/adventurelog.sh +++ b/ct/adventurelog.sh @@ -12,7 +12,7 @@ var_cpu="${var_cpu:-2}" var_ram="${var_ram:-4096}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/agentdvr.sh b/ct/agentdvr.sh index 7e75e695d..7c0e486ee 100644 --- a/ct/agentdvr.sh +++ b/ct/agentdvr.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-2048}" var_disk="${var_disk:-8}" var_os="${var_os:-ubuntu}" var_version="${var_version:-24.04}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-0}" var_gpu="${var_gpu:-yes}" diff --git a/ct/alpine-adguard.sh b/ct/alpine-adguard.sh index e91ae8ce4..14474ef4e 100644 --- a/ct/alpine-adguard.sh +++ b/ct/alpine-adguard.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-256}" var_disk="${var_disk:-1}" var_os="${var_os:-alpine}" var_version="${var_version:-3.23}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/alpine-bitmagnet.sh b/ct/alpine-bitmagnet.sh index a39fa4b10..795ac2240 100644 --- a/ct/alpine-bitmagnet.sh +++ b/ct/alpine-bitmagnet.sh @@ -8,11 +8,11 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV APP="Alpine-bitmagnet" var_tags="${var_tags:-alpine;torrent}" var_cpu="${var_cpu:-2}" -var_ram="${var_ram:-1024}" +var_ram="${var_ram:-2048}" var_disk="${var_disk:-3}" var_os="${var_os:-alpine}" var_version="${var_version:-3.23}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/alpine-borgbackup-server.sh b/ct/alpine-borgbackup-server.sh index 07d88f68b..8df1a2e9d 100644 --- a/ct/alpine-borgbackup-server.sh +++ b/ct/alpine-borgbackup-server.sh @@ -13,7 +13,7 @@ var_ram="${var_ram:-1024}" var_disk="${var_disk:-20}" var_os="${var_os:-alpine}" var_version="${var_version:-3.23}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/alpine-caddy.sh b/ct/alpine-caddy.sh index 5cf5b9e4c..7b06fb6d9 100644 --- a/ct/alpine-caddy.sh +++ b/ct/alpine-caddy.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-256}" var_disk="${var_disk:-3}" var_os="${var_os:-alpine}" var_version="${var_version:-3.23}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/alpine-cinny.sh b/ct/alpine-cinny.sh index d49ec1e2b..72c93f3e6 100644 --- a/ct/alpine-cinny.sh +++ b/ct/alpine-cinny.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-256}" var_disk="${var_disk:-1}" var_os="${var_os:-alpine}" var_version="${var_version:-3.23}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" var_nesting="${var_nesting:-0}" diff --git a/ct/alpine-docker.sh b/ct/alpine-docker.sh index 159ab35c4..cc3a22698 100644 --- a/ct/alpine-docker.sh +++ b/ct/alpine-docker.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-1024}" var_disk="${var_disk:-2}" var_os="${var_os:-alpine}" var_version="${var_version:-3.23}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/alpine-forgejo.sh b/ct/alpine-forgejo.sh index 173585f5f..fff6155ef 100644 --- a/ct/alpine-forgejo.sh +++ b/ct/alpine-forgejo.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-256}" var_disk="${var_disk:-1}" var_os="${var_os:-alpine}" var_version="${var_version:-3.23}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/alpine-garage.sh b/ct/alpine-garage.sh index ca3b380f4..a132e9248 100644 --- a/ct/alpine-garage.sh +++ b/ct/alpine-garage.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-512}" var_disk="${var_disk:-5}" var_os="${var_os:-alpine}" var_version="${var_version:-3.23}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" @@ -39,7 +39,7 @@ function update_script() { msg_ok "Backed Up Data" msg_info "Updating Garage" - curl -fsSL "https://garagehq.deuxfleurs.fr/_releases/${GITEA_RELEASE}/x86_64-unknown-linux-musl/garage" -o /usr/local/bin/garage + curl -fsSL "https://garagehq.deuxfleurs.fr/_releases/${GITEA_RELEASE}/$(arch_resolve "x86_64" "aarch64")-unknown-linux-musl/garage" -o /usr/local/bin/garage chmod +x /usr/local/bin/garage echo "${GITEA_RELEASE}" >~/.garage msg_ok "Updated Garage" diff --git a/ct/alpine-gatus.sh b/ct/alpine-gatus.sh index 8e28608d2..9e331dce0 100644 --- a/ct/alpine-gatus.sh +++ b/ct/alpine-gatus.sh @@ -8,11 +8,11 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV APP="Alpine-gatus" var_tags="${var_tags:-alpine;monitoring}" var_cpu="${var_cpu:-1}" -var_ram="${var_ram:-256}" +var_ram="${var_ram:-512}" var_disk="${var_disk:-3}" var_os="${var_os:-alpine}" var_version="${var_version:-3.23}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/alpine-gitea.sh b/ct/alpine-gitea.sh index f16410586..2fd8630c2 100644 --- a/ct/alpine-gitea.sh +++ b/ct/alpine-gitea.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-256}" var_disk="${var_disk:-1}" var_os="${var_os:-alpine}" var_version="${var_version:-3.23}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/alpine-grafana.sh b/ct/alpine-grafana.sh index 6bef3c558..0f765e2f8 100644 --- a/ct/alpine-grafana.sh +++ b/ct/alpine-grafana.sh @@ -8,11 +8,11 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV APP="Alpine-Grafana" var_tags="${var_tags:-alpine;monitoring}" var_cpu="${var_cpu:-1}" -var_ram="${var_ram:-256}" +var_ram="${var_ram:-512}" var_disk="${var_disk:-2}" var_os="${var_os:-alpine}" var_version="${var_version:-3.23}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/alpine-ironclaw.sh b/ct/alpine-ironclaw.sh index f84e801e8..f21e59a61 100644 --- a/ct/alpine-ironclaw.sh +++ b/ct/alpine-ironclaw.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-1024}" var_disk="${var_disk:-8}" var_os="${var_os:-alpine}" var_version="${var_version:-3.23}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/alpine-komodo.sh b/ct/alpine-komodo.sh index 85c7acf2f..60fb79af6 100644 --- a/ct/alpine-komodo.sh +++ b/ct/alpine-komodo.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-1024}" var_disk="${var_disk:-10}" var_os="${var_os:-alpine}" var_version="${var_version:-3.23}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/alpine-loki.sh b/ct/alpine-loki.sh index 8a6b6a0e5..d0fb9c648 100644 --- a/ct/alpine-loki.sh +++ b/ct/alpine-loki.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-256}" var_disk="${var_disk:-1}" var_os="${var_os:-alpine}" var_version="${var_version:-3.23}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/alpine-mariadb.sh b/ct/alpine-mariadb.sh index 6217a2ea2..4840aa12d 100644 --- a/ct/alpine-mariadb.sh +++ b/ct/alpine-mariadb.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-256}" var_disk="${var_disk:-1}" var_os="${var_os:-alpine}" var_version="${var_version:-3.23}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/alpine-nextcloud.sh b/ct/alpine-nextcloud.sh index 85a948c49..cf0b8066e 100644 --- a/ct/alpine-nextcloud.sh +++ b/ct/alpine-nextcloud.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-1024}" var_disk="${var_disk:-2}" var_os="${var_os:-alpine}" var_version="${var_version:-3.23}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/alpine-node-red.sh b/ct/alpine-node-red.sh index a44ef9410..e757a5bf1 100644 --- a/ct/alpine-node-red.sh +++ b/ct/alpine-node-red.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-256}" var_disk="${var_disk:-1}" var_os="${var_os:-alpine}" var_version="${var_version:-3.23}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/alpine-ntfy.sh b/ct/alpine-ntfy.sh index 0014a49f8..5fc93e169 100644 --- a/ct/alpine-ntfy.sh +++ b/ct/alpine-ntfy.sh @@ -13,7 +13,7 @@ var_ram="${var_ram:-256}" var_disk="${var_disk:-2}" var_os="${var_os:-alpine}" var_version="${var_version:-3.23}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/alpine-postgresql.sh b/ct/alpine-postgresql.sh index d84b4368e..73555b6e0 100644 --- a/ct/alpine-postgresql.sh +++ b/ct/alpine-postgresql.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-256}" var_disk="${var_disk:-1}" var_os="${var_os:-alpine}" var_version="${var_version:-3.23}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/alpine-prometheus.sh b/ct/alpine-prometheus.sh index 3fc6fd0b7..6a2d19eab 100644 --- a/ct/alpine-prometheus.sh +++ b/ct/alpine-prometheus.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-256}" var_disk="${var_disk:-1}" var_os="${var_os:-alpine}" var_version="${var_version:-3.23}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/alpine-rclone.sh b/ct/alpine-rclone.sh index 121b5e67f..909d75dc5 100644 --- a/ct/alpine-rclone.sh +++ b/ct/alpine-rclone.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-256}" var_disk="${var_disk:-1}" var_os="${var_os:-alpine}" var_version="${var_version:-3.23}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" var_fuse="${var_fuse:-yes}" @@ -31,7 +31,7 @@ function update_script() { if [ "${RELEASE}" != "$(cat /opt/rclone_version.txt)" ] || [ ! -f /opt/rclone_version.txt ]; then msg_info "Updating ${APP} LXC" temp_file=$(mktemp) - curl -fsSL "https://github.com/rclone/rclone/releases/download/v${RELEASE}/rclone-v${RELEASE}-linux-amd64.zip" -o "$temp_file" + curl -fsSL "https://github.com/rclone/rclone/releases/download/v${RELEASE}/rclone-v${RELEASE}-linux-$(arch_resolve).zip" -o "$temp_file" $STD unzip -o "$temp_file" '*/**' -d /opt/rclone rm -f "$temp_file" echo "${RELEASE}" >/opt/rclone_version.txt diff --git a/ct/alpine-redis.sh b/ct/alpine-redis.sh index af75a3ee5..4dd0c0720 100644 --- a/ct/alpine-redis.sh +++ b/ct/alpine-redis.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-256}" var_disk="${var_disk:-1}" var_os="${var_os:-alpine}" var_version="${var_version:-3.23}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/alpine-redlib.sh b/ct/alpine-redlib.sh index db76b3496..0ee3d4f8b 100644 --- a/ct/alpine-redlib.sh +++ b/ct/alpine-redlib.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-512}" var_disk="${var_disk:-1}" var_os="${var_os:-alpine}" var_version="${var_version:-3.23}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" @@ -36,7 +36,7 @@ function update_script() { $STD rc-service redlib stop msg_ok "Stopped Service" - fetch_and_deploy_gh_release "redlib" "redlib-org/redlib" "prebuild" "latest" "/opt/redlib" "redlib-x86_64-unknown-linux-musl.tar.gz" + fetch_and_deploy_gh_release "redlib" "redlib-org/redlib" "prebuild" "latest" "/opt/redlib" "redlib-$(arch_resolve "x86_64" "aarch64")-unknown-linux-musl.tar.gz" msg_info "Starting Service" $STD rc-service redlib start diff --git a/ct/alpine-rustdeskserver.sh b/ct/alpine-rustdeskserver.sh index 844441e43..ee83fac3f 100644 --- a/ct/alpine-rustdeskserver.sh +++ b/ct/alpine-rustdeskserver.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-512}" var_disk="${var_disk:-3}" var_os="${var_os:-alpine}" var_version="${var_version:-3.23}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" @@ -35,13 +35,14 @@ function update_script() { $STD service rustdesk-server-hbbs stop $STD service rustdesk-server-hbbr stop temp_file1=$(mktemp) - curl -fsSL "https://github.com/lejianwen/rustdesk-server/releases/download/${RELEASE}/rustdesk-server-linux-amd64.zip" -o "$temp_file1" + ARCH=$(arch_resolve "amd64" "arm64v8") + curl -fsSL "https://github.com/lejianwen/rustdesk-server/releases/download/${RELEASE}/rustdesk-server-linux-${ARCH}.zip" -o "$temp_file1" $STD unzip "$temp_file1" - cp -r amd64/* /opt/rustdesk-server/ + cp -r "$ARCH"/* /opt/rustdesk-server/ echo "${RELEASE}" >~/.rustdesk-server $STD service rustdesk-server-hbbs start $STD service rustdesk-server-hbbr start - rm -rf amd64 + rm -rf "$ARCH" rm -f "$temp_file1" msg_ok "Updated RustDesk Server" else @@ -51,7 +52,7 @@ function update_script() { msg_info "Updating RustDesk API to v${APIRELEASE}" $STD service rustdesk-api stop temp_file2=$(mktemp) - curl -fsSL "https://github.com/lejianwen/rustdesk-api/releases/download/v${APIRELEASE}/linux-amd64.tar.gz" -o "$temp_file2" + curl -fsSL "https://github.com/lejianwen/rustdesk-api/releases/download/v${APIRELEASE}/linux-$(arch_resolve).tar.gz" -o "$temp_file2" $STD tar zxvf "$temp_file2" cp -r release/* /opt/rustdesk-api echo "${APIRELEASE}" >~/.rustdesk-api diff --git a/ct/alpine-rustypaste.sh b/ct/alpine-rustypaste.sh index 66b97e7e3..087c15105 100644 --- a/ct/alpine-rustypaste.sh +++ b/ct/alpine-rustypaste.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-256}" var_disk="${var_disk:-4}" var_os="${var_os:-alpine}" var_version="${var_version:-3.23}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/alpine-syncthing.sh b/ct/alpine-syncthing.sh index 88e0c2b76..502493021 100644 --- a/ct/alpine-syncthing.sh +++ b/ct/alpine-syncthing.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-256}" var_disk="${var_disk:-1}" var_os="${var_os:-alpine}" var_version="${var_version:-3.23}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/alpine-tinyauth.sh b/ct/alpine-tinyauth.sh index 085c0d9e9..8df6f2104 100644 --- a/ct/alpine-tinyauth.sh +++ b/ct/alpine-tinyauth.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-256}" var_disk="${var_disk:-2}" var_os="${var_os:-alpine}" var_version="${var_version:-3.23}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" @@ -52,7 +52,7 @@ function update_script() { msg_info "Updating Tinyauth" rm -f /opt/tinyauth/tinyauth - curl -fsSL "https://github.com/tinyauthapp/tinyauth/releases/download/v${RELEASE}/tinyauth-amd64" -o /opt/tinyauth/tinyauth + curl -fsSL "https://github.com/tinyauthapp/tinyauth/releases/download/v${RELEASE}/tinyauth-$(arch_resolve)" -o /opt/tinyauth/tinyauth chmod +x /opt/tinyauth/tinyauth echo "${RELEASE}" >~/.tinyauth msg_ok "Updated Tinyauth" diff --git a/ct/alpine-traefik.sh b/ct/alpine-traefik.sh index e886e59a9..943d77962 100644 --- a/ct/alpine-traefik.sh +++ b/ct/alpine-traefik.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-512}" var_disk="${var_disk:-1}" var_os="${var_os:-alpine}" var_version="${var_version:-3.23}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/alpine-transmission.sh b/ct/alpine-transmission.sh index 0b8e9177a..e4ad574b2 100644 --- a/ct/alpine-transmission.sh +++ b/ct/alpine-transmission.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-256}" var_disk="${var_disk:-1}" var_os="${var_os:-alpine}" var_version="${var_version:-3.23}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/alpine-valkey.sh b/ct/alpine-valkey.sh index fd7b02569..b1df77531 100644 --- a/ct/alpine-valkey.sh +++ b/ct/alpine-valkey.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-256}" var_disk="${var_disk:-1}" var_os="${var_os:-alpine}" var_version="${var_version:-3.23}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/alpine-vaultwarden.sh b/ct/alpine-vaultwarden.sh index 7c7983f2a..539e1c823 100644 --- a/ct/alpine-vaultwarden.sh +++ b/ct/alpine-vaultwarden.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-256}" var_disk="${var_disk:-1}" var_os="${var_os:-alpine}" var_version="${var_version:-3.23}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/alpine-wakapi.sh b/ct/alpine-wakapi.sh index 97c7f90be..136a21c1e 100644 --- a/ct/alpine-wakapi.sh +++ b/ct/alpine-wakapi.sh @@ -13,7 +13,7 @@ var_ram="${var_ram:-512}" var_disk="${var_disk:-4}" var_os="${var_os:-alpine}" var_version="${var_version:-3.23}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" @@ -43,7 +43,7 @@ function update_script() { cp /opt/wakapi/config.yml /opt/wakapi/wakapi_db.db /opt/wakapi-backup/ msg_ok "Created backup" - CLEAN_INSTALL=1 fetch_and_deploy_gh_release "wakapi" "muety/wakapi" "prebuild" "latest" "/opt/wakapi" "wakapi_linux_amd64.zip" + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "wakapi" "muety/wakapi" "prebuild" "latest" "/opt/wakapi" "wakapi_linux_$(arch_resolve).zip" msg_info "Configuring Wakapi" cd /opt/wakapi diff --git a/ct/alpine-wireguard.sh b/ct/alpine-wireguard.sh index c32a3d970..b040b4306 100644 --- a/ct/alpine-wireguard.sh +++ b/ct/alpine-wireguard.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-256}" var_disk="${var_disk:-1}" var_os="${var_os:-alpine}" var_version="${var_version:-3.23}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" var_tun="${var_tun:-1}" diff --git a/ct/alpine-zigbee2mqtt.sh b/ct/alpine-zigbee2mqtt.sh index 0c3348037..ddfac3e39 100644 --- a/ct/alpine-zigbee2mqtt.sh +++ b/ct/alpine-zigbee2mqtt.sh @@ -12,7 +12,7 @@ var_cpu="${var_cpu:-1}" var_ram="${var_ram:-256}" var_os="${var_os:-alpine}" var_version="${var_version:-3.23}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-0}" header_info "$APP" diff --git a/ct/ampache.sh b/ct/ampache.sh index 11798160e..92eb11a70 100644 --- a/ct/ampache.sh +++ b/ct/ampache.sh @@ -12,7 +12,7 @@ var_cpu="${var_cpu:-4}" var_ram="${var_ram:-2048}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/anchor.sh b/ct/anchor.sh index f0094c30c..45ae5aaf9 100644 --- a/ct/anchor.sh +++ b/ct/anchor.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-2048}" var_disk="${var_disk:-10}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/anytype-server.sh b/ct/anytype-server.sh index c54c8da6b..3147fc91f 100644 --- a/ct/anytype-server.sh +++ b/ct/anytype-server.sh @@ -13,7 +13,7 @@ var_ram="${var_ram:-4096}" var_disk="${var_disk:-16}" var_os="${var_os:-ubuntu}" var_version="${var_version:-24.04}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" @@ -38,7 +38,7 @@ function update_script() { create_backup /opt/anytype/data - CLEAN_INSTALL=1 fetch_and_deploy_gh_release "anytype" "grishy/any-sync-bundle" "prebuild" "latest" "/opt/anytype" "any-sync-bundle_*_linux_amd64.tar.gz" + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "anytype" "grishy/any-sync-bundle" "prebuild" "latest" "/opt/anytype" "any-sync-bundle_*_linux_$(arch_resolve).tar.gz" chmod +x /opt/anytype/any-sync-bundle restore_backup diff --git a/ct/apache-tika.sh b/ct/apache-tika.sh index 4bd48b5d5..d4dbe8647 100755 --- a/ct/apache-tika.sh +++ b/ct/apache-tika.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-2048}" var_disk="${var_disk:-10}" var_os="${var_os:-debian}" var_version="${var_version:-12}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/apache-tomcat.sh b/ct/apache-tomcat.sh index 734fe1bde..0b605c6b5 100644 --- a/ct/apache-tomcat.sh +++ b/ct/apache-tomcat.sh @@ -12,7 +12,7 @@ var_cpu="${var_cpu:-1}" var_ram="${var_ram:-1024}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/argus.sh b/ct/argus.sh index 5a270e2ed..94141b56a 100644 --- a/ct/argus.sh +++ b/ct/argus.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-512}" var_disk="${var_disk:-3}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" @@ -33,7 +33,7 @@ function update_script() { systemctl stop argus msg_ok "Service stopped" - fetch_and_deploy_gh_release "Argus" "release-argus/Argus" "singlefile" "latest" "/opt/argus" "Argus*linux-amd64" + fetch_and_deploy_gh_release "Argus" "release-argus/Argus" "singlefile" "latest" "/opt/argus" "Argus*linux-$(arch_resolve)" msg_info "Starting service" systemctl start argus diff --git a/ct/aria2.sh b/ct/aria2.sh index 8a13b21e0..e88c83446 100644 --- a/ct/aria2.sh +++ b/ct/aria2.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-1024}" var_disk="${var_disk:-8}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/authentik.sh b/ct/authentik.sh index ab9451596..b857bcff4 100644 --- a/ct/authentik.sh +++ b/ct/authentik.sh @@ -33,7 +33,7 @@ function update_script() { read -r MAJOR MINOR PATCH <<< "$(sed 's/^version\///; s/\./ /g' "$HOME/.authentik")" msg_info "Update dependencies" - ensure_dependencies crossbuild-essential-amd64 gcc-x86-64-linux-gnu cmake clang libunwind-18-dev + ensure_dependencies crossbuild-essential-$(arch_resolve) gcc-$(arch_resolve "x86-64" "aarch64")-linux-gnu cmake clang libunwind-18-dev msg_ok "Update dependencies" NODE_VERSION="24" setup_nodejs @@ -96,6 +96,7 @@ function update_script() { msg_info "Updating go proxy" cd /opt/authentik export CGO_ENABLED="1" + export CC="$(arch_resolve "x86_64" "aarch64")-linux-gnu-gcc" $STD go mod download $STD go build -o /opt/authentik/authentik-server ./cmd/server $STD go build -o /opt/authentik/ldap ./cmd/ldap diff --git a/ct/autobrr.sh b/ct/autobrr.sh index 08596450b..25b75798e 100644 --- a/ct/autobrr.sh +++ b/ct/autobrr.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-2048}" var_disk="${var_disk:-8}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" @@ -34,7 +34,7 @@ function update_script() { systemctl stop autobrr msg_ok "Stopped Service" - fetch_and_deploy_gh_release "autobrr" "autobrr/autobrr" "prebuild" "latest" "/usr/local/bin" "autobrr_*_linux_x86_64.tar.gz" + fetch_and_deploy_gh_release "autobrr" "autobrr/autobrr" "prebuild" "latest" "/usr/local/bin" "autobrr_*_linux_$(arch_resolve "x86_64" "arm64").tar.gz" msg_info "Starting Service" systemctl start autobrr diff --git a/ct/backrest.sh b/ct/backrest.sh index c475ae755..519ca215d 100644 --- a/ct/backrest.sh +++ b/ct/backrest.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-512}" var_disk="${var_disk:-8}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" @@ -34,7 +34,7 @@ function update_script() { systemctl stop backrest msg_ok "Stopped Service" - fetch_and_deploy_gh_release "backrest" "garethgeorge/backrest" "prebuild" "latest" "/opt/backrest/bin" "backrest_Linux_x86_64.tar.gz" + fetch_and_deploy_gh_release "backrest" "garethgeorge/backrest" "prebuild" "latest" "/opt/backrest/bin" "backrest_Linux_$(arch_resolve "x86_64" "arm64").tar.gz" msg_info "Starting Service" systemctl start backrest diff --git a/ct/bambuddy.sh b/ct/bambuddy.sh index 8f19a1015..470cd2055 100644 --- a/ct/bambuddy.sh +++ b/ct/bambuddy.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-2048}" var_disk="${var_disk:-10}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/bazarr.sh b/ct/bazarr.sh index 45d2506f5..dddd27d9e 100755 --- a/ct/bazarr.sh +++ b/ct/bazarr.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-1024}" var_disk="${var_disk:-4}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/bentopdf.sh b/ct/bentopdf.sh index 072a71db9..c4123cbcb 100644 --- a/ct/bentopdf.sh +++ b/ct/bentopdf.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-4096}" var_disk="${var_disk:-4}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/beszel.sh b/ct/beszel.sh index 7703e9144..d283eef87 100644 --- a/ct/beszel.sh +++ b/ct/beszel.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-512}" var_disk="${var_disk:-5}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/bichon.sh b/ct/bichon.sh index 94bcf71a7..55888aa28 100644 --- a/ct/bichon.sh +++ b/ct/bichon.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-1024}" var_disk="${var_disk:-4}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" @@ -68,16 +68,16 @@ function update_script() { create_backup /opt/bichon/bichon.env if [ "$MIGRATE_V1" -eq 1 ] && [ "$CURRENT_VERSION" != "0.3.7" ]; then - CLEAN_INSTALL=1 fetch_and_deploy_gh_release "bichon" "rustmailer/bichon" "prebuild" "v0.3.7" "/opt/bichon" "bichon-*-x86_64-unknown-linux-gnu.tar.gz" - restore_backup msg_info "Updating to intermediate version v0.3.7" + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "bichon" "rustmailer/bichon" "prebuild" "v0.3.7" "/opt/bichon" "bichon-*-$(arch_resolve "x86_64" "aarch64")-unknown-linux-gnu.tar.gz" + restore_backup systemctl start bichon sleep 30 systemctl stop bichon msg_ok "Intermediate update completed" fi - CLEAN_INSTALL=1 fetch_and_deploy_gh_release "bichon" "rustmailer/bichon" "prebuild" "latest" "/opt/bichon" "bichon-*-x86_64-unknown-linux-gnu.tar.gz" + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "bichon" "rustmailer/bichon" "prebuild" "latest" "/opt/bichon" "bichon-*-$(arch_resolve "x86_64" "aarch64")-unknown-linux-gnu.tar.gz" restore_backup if [ "$MIGRATE_V1" -eq 1 ]; then @@ -133,4 +133,4 @@ description msg_ok "Completed successfully!\n" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${INFO}${YW}Access it using the following URL:${CL}" -echo -e "${GATEWAY}${BGN}http://${IP}:15630${CL}" +echo -e "${GATEWAY}${BGN}http://${IP}:15630${CL}" \ No newline at end of file diff --git a/ct/birdnet-go.sh b/ct/birdnet-go.sh index 7c491a884..39db9ca1f 100644 --- a/ct/birdnet-go.sh +++ b/ct/birdnet-go.sh @@ -13,7 +13,7 @@ var_ram="${var_ram:-2048}" var_disk="${var_disk:-12}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" var_gpu="${var_gpu:-no}" @@ -37,7 +37,7 @@ function update_script() { systemctl stop birdnet msg_ok "Stopped Service" - fetch_and_deploy_gh_release "birdnet" "tphakala/birdnet-go" "prebuild" "latest" "/opt/birdnet" "birdnet-go-linux-amd64.tar.gz" + fetch_and_deploy_gh_release "birdnet" "tphakala/birdnet-go" "prebuild" "latest" "/opt/birdnet" "birdnet-go-linux-$(arch_resolve).tar.gz" msg_info "Deploying Binary" cp /opt/birdnet/birdnet-go /usr/local/bin/birdnet-go diff --git a/ct/bitfocus-companion.sh b/ct/bitfocus-companion.sh index dcb3a19c6..368548da1 100644 --- a/ct/bitfocus-companion.sh +++ b/ct/bitfocus-companion.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-512}" var_disk="${var_disk:-8}" var_os="${var_os:-debian}" var_version="${var_version:-12}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/blocky.sh b/ct/blocky.sh index b26890622..be0a01391 100644 --- a/ct/blocky.sh +++ b/ct/blocky.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-512}" var_disk="${var_disk:-2}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" @@ -34,7 +34,7 @@ function update_script() { msg_ok "Stopped Service" create_backup /opt/blocky/config.yml - CLEAN_INSTALL=1 fetch_and_deploy_gh_release "blocky" "0xERR0R/blocky" "prebuild" "latest" "/opt/blocky" "blocky_*_Linux_x86_64.tar.gz" + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "blocky" "0xERR0R/blocky" "prebuild" "latest" "/opt/blocky" "blocky_*_Linux_$(arch_resolve "x86_64" "arm64").tar.gz" restore_backup msg_info "Starting Service" @@ -52,4 +52,4 @@ description msg_ok "Completed successfully!\n" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${INFO}${YW}Access it using the following URL:${CL}" -echo -e "${GATEWAY}${BGN}http://${IP}${CL}" +echo -e "${GATEWAY}${BGN}http://${IP}${CL}" \ No newline at end of file diff --git a/ct/calibre-web.sh b/ct/calibre-web.sh index 3c8568d06..1138d1727 100644 --- a/ct/calibre-web.sh +++ b/ct/calibre-web.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-2048}" var_disk="${var_disk:-8}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/certimate.sh b/ct/certimate.sh index bb321aa20..24e948cca 100644 --- a/ct/certimate.sh +++ b/ct/certimate.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-256}" var_disk="${var_disk:-2}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" @@ -37,7 +37,7 @@ function update_script() { create_backup /opt/certimate/pb_data - fetch_and_deploy_gh_release "certimate" "certimate-go/certimate" "prebuild" "latest" "/opt/certimate" "certimate_*_linux_amd64.zip" + fetch_and_deploy_gh_release "certimate" "certimate-go/certimate" "prebuild" "latest" "/opt/certimate" "certimate_*_linux_$(arch_resolve).zip" restore_backup diff --git a/ct/cleanuparr.sh b/ct/cleanuparr.sh index f554e2048..f463e039c 100755 --- a/ct/cleanuparr.sh +++ b/ct/cleanuparr.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-1024}" var_disk="${var_disk:-4}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" @@ -35,7 +35,7 @@ function update_script() { create_backup /opt/cleanuparr/config - CLEAN_INSTALL=1 fetch_and_deploy_gh_release "Cleanuparr" "Cleanuparr/Cleanuparr" "prebuild" "latest" "/opt/cleanuparr" "*linux-amd64.zip" + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "Cleanuparr" "Cleanuparr/Cleanuparr" "prebuild" "latest" "/opt/cleanuparr" "*linux-$(arch_resolve).zip" restore_backup diff --git a/ct/clickhouse.sh b/ct/clickhouse.sh index 6d02e3bb0..a0e49e619 100644 --- a/ct/clickhouse.sh +++ b/ct/clickhouse.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-4096}" var_disk="${var_disk:-10}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/cliproxyapi.sh b/ct/cliproxyapi.sh index 20bda6448..cffa0fc17 100644 --- a/ct/cliproxyapi.sh +++ b/ct/cliproxyapi.sh @@ -13,7 +13,7 @@ var_ram="${var_ram:-512}" var_disk="${var_disk:-2}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" @@ -36,7 +36,7 @@ function update_script() { systemctl stop cliproxyapi msg_ok "Stopped CLIProxyAPI" - CLEAN_INSTALL=1 fetch_and_deploy_gh_release "cliproxyapi" "router-for-me/CLIProxyAPI" "prebuild" "latest" "/opt/cliproxyapi" "CLIProxyAPI_*_linux_amd64.tar.gz" + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "cliproxyapi" "router-for-me/CLIProxyAPI" "prebuild" "latest" "/opt/cliproxyapi" "CLIProxyAPI_*_linux_$(arch_resolve "amd64" "aarch64").tar.gz" msg_info "Starting CLIProxyAPI" systemctl start cliproxyapi diff --git a/ct/cloudreve.sh b/ct/cloudreve.sh index 62a1cab82..1492e9530 100644 --- a/ct/cloudreve.sh +++ b/ct/cloudreve.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-1024}" var_disk="${var_disk:-10}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" @@ -34,7 +34,7 @@ function update_script() { systemctl stop cloudreve msg_info "Stopped Service" - fetch_and_deploy_gh_release "cloudreve" "cloudreve/cloudreve" "prebuild" "latest" "/opt/cloudreve" "*linux_amd64.tar.gz" + fetch_and_deploy_gh_release "cloudreve" "cloudreve/cloudreve" "prebuild" "latest" "/opt/cloudreve" "*linux_$(arch_resolve).tar.gz" msg_info "Starting Service" systemctl start cloudreve diff --git a/ct/cockpit.sh b/ct/cockpit.sh index aeaa80dc2..78dba7b02 100644 --- a/ct/cockpit.sh +++ b/ct/cockpit.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-1024}" var_disk="${var_disk:-4}" var_os="${var_os:-debian}" var_version="${var_version:-12}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/comfyui.sh b/ct/comfyui.sh index 9fc1d02c5..f95b9b9de 100644 --- a/ct/comfyui.sh +++ b/ct/comfyui.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-8192}" var_disk="${var_disk:-25}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" var_gpu="${var_gpu:-yes}" diff --git a/ct/configarr.sh b/ct/configarr.sh index d8fdcfb32..636e3d8a8 100644 --- a/ct/configarr.sh +++ b/ct/configarr.sh @@ -11,7 +11,7 @@ var_ram="${var_ram:-512}" var_disk="${var_disk:-4}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/coolify.sh b/ct/coolify.sh index c443fb234..b30210d60 100644 --- a/ct/coolify.sh +++ b/ct/coolify.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-4096}" var_disk="${var_disk:-30}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/coredns.sh b/ct/coredns.sh index d2b010d91..f1a2ecd31 100644 --- a/ct/coredns.sh +++ b/ct/coredns.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-256}" var_disk="${var_disk:-2}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/cosmos.sh b/ct/cosmos.sh index 192bacb9a..7216a2ec8 100644 --- a/ct/cosmos.sh +++ b/ct/cosmos.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-2048}" var_disk="${var_disk:-8}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" var_fuse="${var_fuse:-yes}" diff --git a/ct/crafty-controller.sh b/ct/crafty-controller.sh index b783fbea2..2c31aee82 100644 --- a/ct/crafty-controller.sh +++ b/ct/crafty-controller.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-4096}" var_disk="${var_disk:-16}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/cyberchef.sh b/ct/cyberchef.sh index 5e164602c..e50d1c7b3 100644 --- a/ct/cyberchef.sh +++ b/ct/cyberchef.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-4096}" var_disk="${var_disk:-4}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/dagu.sh b/ct/dagu.sh index 10dd3f067..42b2af198 100644 --- a/ct/dagu.sh +++ b/ct/dagu.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-512}" var_disk="${var_disk:-4}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" @@ -37,7 +37,7 @@ function update_script() { create_backup /opt/dagu/data - fetch_and_deploy_gh_release "dagu" "dagucloud/dagu" "prebuild" "latest" "/opt/dagu" "dagu_*_linux_amd64.tar.gz" + fetch_and_deploy_gh_release "dagu" "dagucloud/dagu" "prebuild" "latest" "/opt/dagu" "dagu_*_linux_$(arch_resolve).tar.gz" restore_backup diff --git a/ct/dashy.sh b/ct/dashy.sh index 8d3e53402..4a5488256 100644 --- a/ct/dashy.sh +++ b/ct/dashy.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-2048}" var_disk="${var_disk:-6}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/databasus.sh b/ct/databasus.sh index 88f4fb643..e07104331 100644 --- a/ct/databasus.sh +++ b/ct/databasus.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-2048}" var_disk="${var_disk:-8}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" @@ -45,7 +45,10 @@ function update_script() { # Install MongoDB Database Tools via direct .deb (no APT repo for Debian 13) if ! command -v mongodump &>/dev/null; then [[ "$(get_os_info id)" == "ubuntu" ]] && MONGO_DIST="ubuntu2204" || MONGO_DIST="debian12" - fetch_and_deploy_from_url "https://fastdl.mongodb.org/tools/db/mongodb-database-tools-${MONGO_DIST}-x86_64-100.16.1.deb" + MONGO_ARCH=$(arch_resolve "x86_64" "arm64") + # MongoDB only publishes arm64 builds for Ubuntu + [[ "$MONGO_ARCH" == "arm64" ]] && MONGO_DIST="ubuntu2204" + fetch_and_deploy_from_url "https://fastdl.mongodb.org/tools/db/mongodb-database-tools-${MONGO_DIST}-${MONGO_ARCH}-100.16.1.deb" fi [[ -f /usr/bin/mongodump ]] && ln -sf /usr/bin/mongodump /usr/local/mongodb-database-tools/bin/mongodump [[ -f /usr/bin/mongorestore ]] && ln -sf /usr/bin/mongorestore /usr/local/mongodb-database-tools/bin/mongorestore @@ -74,7 +77,7 @@ function update_script() { cd /opt/databasus/backend $STD go mod download $STD /root/go/bin/swag init -g cmd/main.go -o swagger - $STD env CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o databasus ./cmd/main.go + $STD env CGO_ENABLED=0 GOOS=linux GOARCH=$(arch_resolve) go build -o databasus ./cmd/main.go mv /opt/databasus/backend/databasus /opt/databasus/databasus mkdir -p /opt/databasus/ui/build cp -r /opt/databasus/frontend/dist/* /opt/databasus/ui/build/ diff --git a/ct/dawarich.sh b/ct/dawarich.sh index c34de77e1..9e4c64bfe 100644 --- a/ct/dawarich.sh +++ b/ct/dawarich.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-4096}" var_disk="${var_disk:-15}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/ddclient.sh b/ct/ddclient.sh index 1c3b354e5..19cbe70b2 100644 --- a/ct/ddclient.sh +++ b/ct/ddclient.sh @@ -13,7 +13,7 @@ var_ram="${var_ram:-512}" var_disk="${var_disk:-2}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/ddns-updater.sh b/ct/ddns-updater.sh index c5d6851aa..9e5a3f6bf 100644 --- a/ct/ddns-updater.sh +++ b/ct/ddns-updater.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-512}" var_disk="${var_disk:-2}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" @@ -35,7 +35,7 @@ function update_script() { create_backup /opt/ddns-updater/data - CLEAN_INSTALL=1 fetch_and_deploy_gh_release "ddns-updater" "qdm12/ddns-updater" "singlefile" "latest" "/opt/ddns-updater" "ddns-updater_*_linux_amd64" + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "ddns-updater" "qdm12/ddns-updater" "singlefile" "latest" "/opt/ddns-updater" "ddns-updater_*_linux_$(arch_resolve)" restore_backup diff --git a/ct/deconz.sh b/ct/deconz.sh index b4fbe149e..517787295 100644 --- a/ct/deconz.sh +++ b/ct/deconz.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-1024}" var_disk="${var_disk:-4}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-0}" header_info "$APP" diff --git a/ct/discopanel.sh b/ct/discopanel.sh index 9521b2279..25a497d11 100644 --- a/ct/discopanel.sh +++ b/ct/discopanel.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-4096}" var_disk="${var_disk:-15}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" @@ -39,8 +39,8 @@ function update_script() { create_backup /opt/discopanel/data/discopanel.db - 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 + fetch_and_deploy_gh_release "discopanel" "nickheyer/discopanel" "prebuild" "latest" "/opt/discopanel" "discopanel-linux-$(arch_resolve).tar.gz" + ln -sf /opt/discopanel/discopanel-linux-$(arch_resolve) /opt/discopanel/discopanel restore_backup diff --git a/ct/docuseal.sh b/ct/docuseal.sh index ee2c6478f..bbed854bc 100644 --- a/ct/docuseal.sh +++ b/ct/docuseal.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-4096}" var_disk="${var_disk:-10}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/dokploy.sh b/ct/dokploy.sh index ee3a1a789..6d3bc0ad3 100644 --- a/ct/dokploy.sh +++ b/ct/dokploy.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-2048}" var_disk="${var_disk:-10}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-0}" header_info "$APP" diff --git a/ct/donetick.sh b/ct/donetick.sh index d1b8771a4..7943886f6 100644 --- a/ct/donetick.sh +++ b/ct/donetick.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-512}" var_disk="${var_disk:-2}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" @@ -38,7 +38,7 @@ function update_script() { create_backup /opt/donetick/config/selfhosted.yaml \ /opt/donetick/donetick.db - CLEAN_INSTALL=1 fetch_and_deploy_gh_release "donetick" "donetick/donetick" "prebuild" "latest" "/opt/donetick" "donetick_Linux_x86_64.tar.gz" + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "donetick" "donetick/donetick" "prebuild" "latest" "/opt/donetick" "donetick_Linux_$(arch_resolve "x86_64" "arm64").tar.gz" restore_backup grep -q 'http://localhost"$' /opt/donetick/config/selfhosted.yaml || sed -i '/https:\/\/localhost"$/a\ - "http://localhost"' /opt/donetick/config/selfhosted.yaml diff --git a/ct/drawdb.sh b/ct/drawdb.sh index 03d4f1de1..6435181ab 100644 --- a/ct/drawdb.sh +++ b/ct/drawdb.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-6144}" var_disk="${var_disk:-5}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/drawio.sh b/ct/drawio.sh index c596433d1..02500707f 100644 --- a/ct/drawio.sh +++ b/ct/drawio.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-2048}" var_disk="${var_disk:-4}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/duplicati.sh b/ct/duplicati.sh index bc9eea4a2..5601f4da0 100644 --- a/ct/duplicati.sh +++ b/ct/duplicati.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-1024}" var_disk="${var_disk:-10}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/dynacat.sh b/ct/dynacat.sh index 19d14fda6..9af9a77bf 100644 --- a/ct/dynacat.sh +++ b/ct/dynacat.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-2048}" var_disk="${var_disk:-6}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" @@ -39,7 +39,7 @@ function update_script() { /opt/dynacat/assets \ /opt/dynacat/data - CLEAN_INSTALL=1 fetch_and_deploy_gh_release "dynacat" "Panonim/dynacat" "prebuild" "latest" "/opt/dynacat" "dynacat-linux-amd64.tar.gz" + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "dynacat" "Panonim/dynacat" "prebuild" "latest" "/opt/dynacat" "dynacat-linux-$(arch_resolve).tar.gz" restore_backup chmod +x /opt/dynacat/dynacat diff --git a/ct/ebusd.sh b/ct/ebusd.sh index 29cdff3f9..5dec97455 100644 --- a/ct/ebusd.sh +++ b/ct/ebusd.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-512}" var_disk="${var_disk:-2}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" @@ -33,7 +33,7 @@ function update_script() { systemctl stop ebusd msg_ok "Stopped Services" - fetch_and_deploy_gh_release "ebusd" "john30/ebusd" "binary" "latest" "/opt/ebusd" "ebusd-*_amd64-trixie_mqtt1.deb" + fetch_and_deploy_gh_release "ebusd" "john30/ebusd" "binary" "latest" "/opt/ebusd" "ebusd-*_$(arch_resolve)-trixie_mqtt1.deb" msg_info "Starting Services" systemctl start ebusd diff --git a/ct/emqx.sh b/ct/emqx.sh index 1b260e5a2..189e76ced 100644 --- a/ct/emqx.sh +++ b/ct/emqx.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-1024}" var_disk="${var_disk:-6}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" @@ -42,8 +42,8 @@ function update_script() { msg_ok "Removed old EMQX" msg_info "Downloading EMQX v${RELEASE}" - DEB_FILE="/tmp/emqx-enterprise-${RELEASE}-debian12-amd64.deb" - curl -fsSL -o "$DEB_FILE" "https://www.emqx.com/en/downloads/enterprise/v${RELEASE}/emqx-enterprise-${RELEASE}-debian12-amd64.deb" + DEB_FILE="/tmp/emqx-enterprise-${RELEASE}-debian12-$(arch_resolve).deb" + curl -fsSL -o "$DEB_FILE" "https://www.emqx.com/en/downloads/enterprise/v${RELEASE}/emqx-enterprise-${RELEASE}-debian12-$(arch_resolve).deb" msg_ok "Downloaded EMQX" msg_info "Installing EMQX" diff --git a/ct/erpnext.sh b/ct/erpnext.sh index e5265e19d..d2a00bd6a 100644 --- a/ct/erpnext.sh +++ b/ct/erpnext.sh @@ -13,7 +13,7 @@ var_ram="${var_ram:-4096}" var_disk="${var_disk:-20}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/ersatztv.sh b/ct/ersatztv.sh index 92b153237..876760b59 100644 --- a/ct/ersatztv.sh +++ b/ct/ersatztv.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-1024}" var_disk="${var_disk:-5}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" var_gpu="${var_gpu:-yes}" @@ -33,7 +33,7 @@ function update_script() { systemctl stop ersatzTV msg_ok "Stopped ErsatzTV" - fetch_and_deploy_gh_release "ersatztv" "ErsatzTV/ErsatzTV" "prebuild" "latest" "/opt/ErsatzTV" "*linux-x64.tar.gz" + fetch_and_deploy_gh_release "ersatztv" "ErsatzTV/ErsatzTV" "prebuild" "latest" "/opt/ErsatzTV" "*linux-$(arch_resolve "x64" "arm64").tar.gz" msg_info "Starting ErsatzTV" systemctl start ersatzTV @@ -47,7 +47,7 @@ function update_script() { systemctl stop ersatzTV msg_ok "Stopped ErsatzTV" - fetch_and_deploy_gh_release "ersatztv-ffmpeg" "ErsatzTV/ErsatzTV-ffmpeg" "prebuild" "latest" "/opt/ErsatzTV-ffmpeg" "*-linux64-gpl-7.1.tar.xz" + fetch_and_deploy_gh_release "ersatztv-ffmpeg" "ErsatzTV/ErsatzTV-ffmpeg" "prebuild" "latest" "/opt/ErsatzTV-ffmpeg" "*-$(arch_resolve "linux64" "linuxarm64")-gpl-7.1.tar.xz" msg_info "Set ErsatzTV-ffmpeg links" chmod +x /opt/ErsatzTV-ffmpeg/bin/* diff --git a/ct/espconnect.sh b/ct/espconnect.sh index 7a7b9d161..6ab876afa 100644 --- a/ct/espconnect.sh +++ b/ct/espconnect.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-512}" var_disk="${var_disk:-4}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/ezbookkeeping.sh b/ct/ezbookkeeping.sh index 9738c674f..4035142d8 100644 --- a/ct/ezbookkeeping.sh +++ b/ct/ezbookkeeping.sh @@ -13,7 +13,7 @@ var_ram="${var_ram:-1024}" var_disk="${var_disk:-4}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" @@ -42,7 +42,7 @@ function update_script() { cp -r /opt/ezbookkeeping/storage /opt/ezbookkeeping-backup/storage/ msg_ok "Backed up configuration" - CLEAN_INSTALL=1 fetch_and_deploy_gh_release "ezbookkeeping" "mayswind/ezbookkeeping" "prebuild" "latest" "/opt/ezbookkeeping" "ezbookkeeping-*-linux-amd64.tar.gz" + CLEAN_INSTALL=1 fetch_and_deploy_gh_release "ezbookkeeping" "mayswind/ezbookkeeping" "prebuild" "latest" "/opt/ezbookkeeping" "ezbookkeeping-*-linux-$(arch_resolve).tar.gz" msg_info "Restoring configuration" cp -rf /opt/ezbookkeeping-backup/ezbookkeeping.ini /opt/ezbookkeeping/conf/ diff --git a/ct/fileflows.sh b/ct/fileflows.sh index a8c5bc802..1f33d2dd0 100644 --- a/ct/fileflows.sh +++ b/ct/fileflows.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-2048}" var_disk="${var_disk:-8}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" var_gpu="${var_gpu:-yes}" diff --git a/ct/fireshare.sh b/ct/fireshare.sh index 1f2b4a580..296cb6c01 100644 --- a/ct/fireshare.sh +++ b/ct/fireshare.sh @@ -13,7 +13,7 @@ var_ram="${var_ram:-2048}" var_disk="${var_disk:-10}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/fladder.sh b/ct/fladder.sh index b9e59168a..4a7d4ca3d 100644 --- a/ct/fladder.sh +++ b/ct/fladder.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-2048}" var_disk="${var_disk:-4}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/foldergram.sh b/ct/foldergram.sh index 50d5d3d89..218150f27 100644 --- a/ct/foldergram.sh +++ b/ct/foldergram.sh @@ -13,7 +13,7 @@ var_ram="${var_ram:-2048}" var_disk="${var_disk:-4}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" diff --git a/ct/forgejo.sh b/ct/forgejo.sh index 7385e45b1..19c10aad6 100644 --- a/ct/forgejo.sh +++ b/ct/forgejo.sh @@ -12,7 +12,7 @@ var_ram="${var_ram:-2048}" var_disk="${var_disk:-10}" var_os="${var_os:-debian}" var_version="${var_version:-13}" -var_arm64="${var_arm64:-no}" +var_arm64="${var_arm64:-yes}" var_unprivileged="${var_unprivileged:-1}" header_info "$APP" @@ -33,7 +33,7 @@ function update_script() { systemctl stop forgejo msg_ok "Stopped Service" - fetch_and_deploy_codeberg_release "forgejo" "forgejo/forgejo" "singlefile" "latest" "/opt/forgejo" "forgejo-*-linux-amd64" + fetch_and_deploy_codeberg_release "forgejo" "forgejo/forgejo" "singlefile" "latest" "/opt/forgejo" "forgejo-*-linux-$(arch_resolve)" ln -sf /opt/forgejo/forgejo /usr/local/bin/forgejo if grep -q "GITEA_WORK_DIR" /etc/systemd/system/forgejo.service; then diff --git a/install/adguard-install.sh b/install/adguard-install.sh index 99089c6a6..37c80e318 100644 --- a/install/adguard-install.sh +++ b/install/adguard-install.sh @@ -13,7 +13,7 @@ setting_up_container network_check update_os -fetch_and_deploy_gh_release "AdGuardHome" "AdguardTeam/AdGuardHome" "prebuild" "latest" "/opt/AdGuardHome" "AdGuardHome_linux_amd64.tar.gz" +fetch_and_deploy_gh_release "AdGuardHome" "AdguardTeam/AdGuardHome" "prebuild" "latest" "/opt/AdGuardHome" "AdGuardHome_linux_$(arch_resolve).tar.gz" msg_info "Creating Service" cat </etc/systemd/system/AdGuardHome.service diff --git a/install/agentdvr-install.sh b/install/agentdvr-install.sh index 113df231f..c91fbc067 100644 --- a/install/agentdvr-install.sh +++ b/install/agentdvr-install.sh @@ -25,13 +25,13 @@ msg_ok "Installed Dependencies" msg_info "Installing AgentDVR" mkdir -p /opt/agentdvr/agent -RELEASE=$(curl -fsSL "https://www.ispyconnect.com/api/Agent/DownloadLocation4?platform=Linux64&fromVersion=0" | grep -o 'https://.*\.zip') +RELEASE=$(curl -fsSL "https://www.ispyconnect.com/api/Agent/DownloadLocation4?platform=$(arch_resolve "Linux64" "LinuxARM64")&fromVersion=0" | grep -o 'https://.*\.zip') cd /opt/agentdvr/agent curl -fsSL "$RELEASE" -o $(basename "$RELEASE") -$STD unzip Agent_Linux64*.zip +$STD unzip Agent_$(arch_resolve "Linux64" "LinuxARM64")*.zip chmod +x ./Agent echo $RELEASE >~/.agentdvr -rm -rf Agent_Linux64*.zip +rm -rf Agent_$(arch_resolve "Linux64" "LinuxARM64")*.zip msg_ok "Installed AgentDVR" msg_info "Creating Service" diff --git a/install/alpine-adguard-install.sh b/install/alpine-adguard-install.sh index 2349e6f2c..d1446bfcb 100644 --- a/install/alpine-adguard-install.sh +++ b/install/alpine-adguard-install.sh @@ -14,13 +14,13 @@ network_check update_os msg_info "Downloading AdGuard Home" -$STD curl -fsSL -o /tmp/AdGuardHome_linux_amd64.tar.gz \ - "https://github.com/AdguardTeam/AdGuardHome/releases/latest/download/AdGuardHome_linux_amd64.tar.gz" +$STD curl -fsSL -o /tmp/AdGuardHome_linux_$(arch_resolve).tar.gz \ +"https://github.com/AdguardTeam/AdGuardHome/releases/latest/download/AdGuardHome_linux_$(arch_resolve).tar.gz" msg_ok "Downloaded AdGuard Home" msg_info "Installing AdGuard Home" -$STD tar -xzf /tmp/AdGuardHome_linux_amd64.tar.gz -C /opt -$STD rm /tmp/AdGuardHome_linux_amd64.tar.gz +$STD tar -xzf /tmp/AdGuardHome_linux_$(arch_resolve).tar.gz -C /opt +$STD rm /tmp/AdGuardHome_linux_$(arch_resolve).tar.gz msg_ok "Installed AdGuard Home" msg_info "Creating AdGuard Home Service" diff --git a/install/alpine-docker-install.sh b/install/alpine-docker-install.sh index 2d66b3920..a827671c2 100644 --- a/install/alpine-docker-install.sh +++ b/install/alpine-docker-install.sh @@ -62,7 +62,7 @@ if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then msg_info "Installing Docker Compose $DOCKER_COMPOSE_LATEST_VERSION" DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker} mkdir -p "$DOCKER_CONFIG"/cli-plugins - curl -fsSL https://github.com/docker/compose/releases/download/"$DOCKER_COMPOSE_LATEST_VERSION"/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose + curl -fsSL https://github.com/docker/compose/releases/download/"$DOCKER_COMPOSE_LATEST_VERSION"/docker-compose-linux-$(arch_resolve "x86_64" "aarch64") -o ~/.docker/cli-plugins/docker-compose chmod +x "$DOCKER_CONFIG"/cli-plugins/docker-compose msg_ok "Installed Docker Compose $DOCKER_COMPOSE_LATEST_VERSION" fi diff --git a/install/alpine-garage-install.sh b/install/alpine-garage-install.sh index 770adc60f..461617e95 100644 --- a/install/alpine-garage-install.sh +++ b/install/alpine-garage-install.sh @@ -18,7 +18,7 @@ $STD apk add --no-cache openssl msg_ok "Installed Dependencies" GITEA_RELEASE=$(curl -s https://api.github.com/repos/deuxfleurs-org/garage/tags | jq -r '.[0].name') -curl -fsSL "https://garagehq.deuxfleurs.fr/_releases/${GITEA_RELEASE}/x86_64-unknown-linux-musl/garage" -o /usr/local/bin/garage +curl -fsSL "https://garagehq.deuxfleurs.fr/_releases/${GITEA_RELEASE}/$(arch_resolve "x86_64" "aarch64")-unknown-linux-musl/garage" -o /usr/local/bin/garage chmod +x /usr/local/bin/garage mkdir -p /var/lib/garage/{data,meta,snapshots} mkdir -p /etc/garage diff --git a/install/alpine-rclone-install.sh b/install/alpine-rclone-install.sh index de5b3d6cc..bff112d6c 100644 --- a/install/alpine-rclone-install.sh +++ b/install/alpine-rclone-install.sh @@ -22,7 +22,7 @@ msg_info "Installing rclone" temp_file=$(mktemp) mkdir -p /opt/rclone RELEASE=$(curl -s https://api.github.com/repos/rclone/rclone/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') -curl -fsSL "https://github.com/rclone/rclone/releases/download/v${RELEASE}/rclone-v${RELEASE}-linux-amd64.zip" -o "$temp_file" +curl -fsSL "https://github.com/rclone/rclone/releases/download/v${RELEASE}/rclone-v${RELEASE}-linux-$(arch_resolve).zip" -o "$temp_file" $STD unzip -j "$temp_file" '*/**' -d /opt/rclone cd /opt/rclone RCLONE_PASSWORD=$(head -c 16 /dev/urandom | xxd -p -c 16) diff --git a/install/alpine-redlib-install.sh b/install/alpine-redlib-install.sh index 31269d74b..efa24ae89 100644 --- a/install/alpine-redlib-install.sh +++ b/install/alpine-redlib-install.sh @@ -13,7 +13,7 @@ setting_up_container network_check update_os -fetch_and_deploy_gh_release "redlib" "redlib-org/redlib" "prebuild" "latest" "/opt/redlib" "redlib-x86_64-unknown-linux-musl.tar.gz" +fetch_and_deploy_gh_release "redlib" "redlib-org/redlib" "prebuild" "latest" "/opt/redlib" "redlib-$(arch_resolve "x86_64" "aarch64")-unknown-linux-musl.tar.gz" msg_info "Configuring Redlib" cat </opt/redlib/redlib.conf diff --git a/install/alpine-rustdeskserver-install.sh b/install/alpine-rustdeskserver-install.sh index 80293a998..58ded10b9 100644 --- a/install/alpine-rustdeskserver-install.sh +++ b/install/alpine-rustdeskserver-install.sh @@ -16,9 +16,10 @@ update_os RELEASE=$(curl -s https://api.github.com/repos/lejianwen/rustdesk-server/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') msg_info "Installing RustDesk Server v${RELEASE}" temp_file1=$(mktemp) -curl -fsSL "https://github.com/lejianwen/rustdesk-server/releases/download/${RELEASE}/rustdesk-server-linux-amd64.zip" -o "$temp_file1" +ARCH=$(arch_resolve "amd64" "arm64v8") +curl -fsSL "https://github.com/lejianwen/rustdesk-server/releases/download/${RELEASE}/rustdesk-server-linux-${ARCH}.zip" -o "$temp_file1" $STD unzip "$temp_file1" -mv amd64 /opt/rustdesk-server +mv "$ARCH" /opt/rustdesk-server mkdir -p /root/.config/rustdesk cd /opt/rustdesk-server ./rustdesk-utils genkeypair >/tmp/rustdesk_keys.txt @@ -33,7 +34,7 @@ msg_ok "Installed RustDesk Server v${RELEASE}" APIRELEASE=$(curl -s https://api.github.com/repos/lejianwen/rustdesk-api/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') msg_info "Installing RustDesk API v${APIRELEASE}" temp_file2=$(mktemp) -curl -fsSL "https://github.com/lejianwen/rustdesk-api/releases/download/v${APIRELEASE}/linux-amd64.tar.gz" -o "$temp_file2" +curl -fsSL "https://github.com/lejianwen/rustdesk-api/releases/download/v${APIRELEASE}/linux-$(arch_resolve).tar.gz" -o "$temp_file2" $STD tar zxvf "$temp_file2" mv release /opt/rustdesk-api cd /opt/rustdesk-api diff --git a/install/alpine-tinyauth-install.sh b/install/alpine-tinyauth-install.sh index fe759e66b..e9d26a1fa 100644 --- a/install/alpine-tinyauth-install.sh +++ b/install/alpine-tinyauth-install.sh @@ -20,7 +20,7 @@ msg_ok "Installed Dependencies" msg_info "Installing Tinyauth" mkdir -p /opt/tinyauth RELEASE=$(curl -s https://api.github.com/repos/tinyauthapp/tinyauth/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') -curl -fsSL "https://github.com/tinyauthapp/tinyauth/releases/download/v${RELEASE}/tinyauth-amd64" -o /opt/tinyauth/tinyauth +curl -fsSL "https://github.com/tinyauthapp/tinyauth/releases/download/v${RELEASE}/tinyauth-$(arch_resolve)" -o /opt/tinyauth/tinyauth chmod +x /opt/tinyauth/tinyauth PASS=$(openssl rand -base64 8 | tr -dc 'a-zA-Z0-9' | head -c 8) USER=$(htpasswd -Bbn "tinyauth" "${PASS}") diff --git a/install/alpine-wakapi-install.sh b/install/alpine-wakapi-install.sh index dbd28cf0a..10a38b742 100644 --- a/install/alpine-wakapi-install.sh +++ b/install/alpine-wakapi-install.sh @@ -20,7 +20,7 @@ $STD apk add --no-cache \ $STD update-ca-certificates msg_ok "Installed Dependencies" -fetch_and_deploy_gh_release "wakapi" "muety/wakapi" "prebuild" "latest" "/opt/wakapi" "wakapi_linux_amd64.zip" +fetch_and_deploy_gh_release "wakapi" "muety/wakapi" "prebuild" "latest" "/opt/wakapi" "wakapi_linux_$(arch_resolve).zip" msg_info "Configuring Wakapi" LOCAL_IP=$(/sbin/ip -o -4 addr list eth0 | awk '{print $4}' | cut -d/ -f1) diff --git a/install/anytype-server-install.sh b/install/anytype-server-install.sh index c7d3dd023..8c36f0288 100644 --- a/install/anytype-server-install.sh +++ b/install/anytype-server-install.sh @@ -42,7 +42,7 @@ $STD apt install -y redis-stack-server systemctl enable -q --now redis-stack-server msg_ok "Installed Redis Stack" -fetch_and_deploy_gh_release "anytype" "grishy/any-sync-bundle" "prebuild" "latest" "/opt/anytype" "any-sync-bundle_*_linux_amd64.tar.gz" +fetch_and_deploy_gh_release "anytype" "grishy/any-sync-bundle" "prebuild" "latest" "/opt/anytype" "any-sync-bundle_*_linux_$(arch_resolve).tar.gz" chmod +x /opt/anytype/any-sync-bundle msg_info "Configuring Anytype" diff --git a/install/apache-tomcat-install.sh b/install/apache-tomcat-install.sh index c6d8843ba..73b2bc169 100644 --- a/install/apache-tomcat-install.sh +++ b/install/apache-tomcat-install.sh @@ -80,7 +80,7 @@ After=network.target Type=forking User=$(whoami) Group=$(whoami) -Environment=JAVA_HOME=/usr/lib/jvm/temurin-${jdk_version}-jdk-amd64 +Environment=JAVA_HOME=/usr/lib/jvm/temurin-${jdk_version}-jdk-$(arch_resolve) Environment=CATALINA_HOME=/opt/tomcat-$TOMCAT_VERSION Environment=CATALINA_BASE=/opt/tomcat-$TOMCAT_VERSION Environment=CATALINA_PID=/opt/tomcat-$TOMCAT_VERSION/temp/tomcat.pid diff --git a/install/argus-install.sh b/install/argus-install.sh index 12e3e0079..06ab10a78 100644 --- a/install/argus-install.sh +++ b/install/argus-install.sh @@ -13,7 +13,7 @@ setting_up_container network_check update_os -fetch_and_deploy_gh_release "Argus" "release-argus/Argus" "singlefile" "latest" "/opt/argus" "Argus*linux-amd64" +fetch_and_deploy_gh_release "Argus" "release-argus/Argus" "singlefile" "latest" "/opt/argus" "Argus*linux-$(arch_resolve)" msg_info "Setup Argus Config" cat </opt/argus/config.yml diff --git a/install/authentik-install.sh b/install/authentik-install.sh index 23a1adc17..13e4fbe3d 100644 --- a/install/authentik-install.sh +++ b/install/authentik-install.sh @@ -42,8 +42,8 @@ $STD apt install -y \ libtool \ libtool-bin \ gcc \ - crossbuild-essential-amd64 \ - gcc-x86-64-linux-gnu \ + crossbuild-essential-$(arch_resolve) \ + gcc-$(arch_resolve "x86-64" "aarch64")-linux-gnu \ cmake \ clang \ libunwind-18-dev \ @@ -90,7 +90,7 @@ msg_ok "Setup web" msg_info "Setting up go proxy" cd /opt/authentik export CGO_ENABLED="1" -export CC="x86_64-linux-gnu-gcc" +export CC="$(arch_resolve "x86_64" "aarch64")-linux-gnu-gcc" $STD go mod download $STD go build -o /opt/authentik/authentik-server ./cmd/server $STD go build -o /opt/authentik/ldap ./cmd/ldap diff --git a/install/autobrr-install.sh b/install/autobrr-install.sh index 40a5c8a80..41d8a8e00 100644 --- a/install/autobrr-install.sh +++ b/install/autobrr-install.sh @@ -13,7 +13,7 @@ setting_up_container network_check update_os -fetch_and_deploy_gh_release "autobrr" "autobrr/autobrr" "prebuild" "latest" "/usr/local/bin" "autobrr_*_linux_x86_64.tar.gz" +fetch_and_deploy_gh_release "autobrr" "autobrr/autobrr" "prebuild" "latest" "/usr/local/bin" "autobrr_*_linux_$(arch_resolve "x86_64" "arm64").tar.gz" msg_info "Configuring Autobrr" mkdir -p /root/.config/autobrr diff --git a/install/autocaliweb-install.sh b/install/autocaliweb-install.sh index 3ce812b66..8b5af83ef 100644 --- a/install/autocaliweb-install.sh +++ b/install/autocaliweb-install.sh @@ -45,9 +45,9 @@ $STD apt install -y --no-install-recommends \ zip msg_ok "Installed dependencies" -fetch_and_deploy_gh_release "kepubify" "pgaskin/kepubify" "singlefile" "latest" "/usr/bin" "kepubify-linux-64bit" +fetch_and_deploy_gh_release "kepubify" "pgaskin/kepubify" "singlefile" "latest" "/usr/bin" "kepubify-linux-$(arch_resolve "64bit" "arm64")" KEPUB_VERSION="$(/usr/bin/kepubify --version | awk '{print $2}')" -fetch_and_deploy_gh_release "calibre" "kovidgoyal/calibre" "prebuild" "latest" "/opt/calibre" "calibre-*-x86_64.txz" +fetch_and_deploy_gh_release "calibre" "kovidgoyal/calibre" "prebuild" "latest" "/opt/calibre" "calibre-*-$(arch_resolve "x86_64" "arm64").txz" msg_info "Installing Calibre" $STD /opt/calibre/calibre_postinstall diff --git a/install/backrest-install.sh b/install/backrest-install.sh index f7f861cb7..91155ab2b 100644 --- a/install/backrest-install.sh +++ b/install/backrest-install.sh @@ -13,7 +13,7 @@ setting_up_container network_check update_os -fetch_and_deploy_gh_release "backrest" "garethgeorge/backrest" "prebuild" "latest" "/opt/backrest/bin" "backrest_Linux_x86_64.tar.gz" +fetch_and_deploy_gh_release "backrest" "garethgeorge/backrest" "prebuild" "latest" "/opt/backrest/bin" "backrest_Linux_$(arch_resolve "x86_64" "arm64").tar.gz" msg_info "Creating Service" cat </opt/backrest/.env diff --git a/install/beszel-install.sh b/install/beszel-install.sh index 395f0b04b..5bbed170c 100644 --- a/install/beszel-install.sh +++ b/install/beszel-install.sh @@ -13,7 +13,7 @@ setting_up_container network_check update_os -fetch_and_deploy_gh_release "beszel" "henrygd/beszel" "prebuild" "latest" "/opt/beszel" "beszel_linux_amd64.tar.gz" +fetch_and_deploy_gh_release "beszel" "henrygd/beszel" "prebuild" "latest" "/opt/beszel" "beszel_linux_$(arch_resolve).tar.gz" msg_info "Creating Service" cat </etc/systemd/system/beszel-hub.service diff --git a/install/bichon-install.sh b/install/bichon-install.sh index 8a4b38cfd..0345e7302 100644 --- a/install/bichon-install.sh +++ b/install/bichon-install.sh @@ -13,7 +13,7 @@ setting_up_container network_check update_os -fetch_and_deploy_gh_release "bichon" "rustmailer/bichon" "prebuild" "latest" "/opt/bichon" "bichon-*-x86_64-unknown-linux-gnu.tar.gz" +fetch_and_deploy_gh_release "bichon" "rustmailer/bichon" "prebuild" "latest" "/opt/bichon" "bichon-*-$(arch_resolve "x86_64" "aarch64")-unknown-linux-gnu.tar.gz" read -r -p "${TAB3}Enter the public URL for Bichon (e.g., https://bichon.yourdomain.com) or leave empty to use container IP: " bichon_url if [[ -z "$bichon_url" ]]; then diff --git a/install/birdnet-go-install.sh b/install/birdnet-go-install.sh index 45c0acaf3..b3dfcab8e 100644 --- a/install/birdnet-go-install.sh +++ b/install/birdnet-go-install.sh @@ -21,7 +21,7 @@ $STD apt install -y \ ffmpeg msg_ok "Installed Dependencies" -fetch_and_deploy_gh_release "birdnet" "tphakala/birdnet-go" "prebuild" "latest" "/opt/birdnet" "birdnet-go-linux-amd64.tar.gz" +fetch_and_deploy_gh_release "birdnet" "tphakala/birdnet-go" "prebuild" "latest" "/opt/birdnet" "birdnet-go-linux-$(arch_resolve).tar.gz" msg_info "Setting up BirdNET-Go" cp /opt/birdnet/birdnet-go /usr/local/bin/birdnet-go diff --git a/install/bitfocus-companion-install.sh b/install/bitfocus-companion-install.sh index 22c976306..fbf05cd98 100644 --- a/install/bitfocus-companion-install.sh +++ b/install/bitfocus-companion-install.sh @@ -19,11 +19,15 @@ msg_ok "Installed Dependencies" msg_info "Fetching Latest Bitfocus Companion Release" RELEASE_JSON=$(curl -fsSL "https://api.bitfocus.io/v1/product/companion/packages?limit=20") -PACKAGE_JSON=$(echo "$RELEASE_JSON" | jq -c '(if type == "array" then . else .packages end) | [.[] | select(.target=="linux-tgz" and (.uri | contains("linux-x64")))] | first') +COMPANION_ARCH=$(arch_resolve "x64" "arm64") +PACKAGE_JSON=$(echo "$RELEASE_JSON" | jq -c \ + --arg target "linux-$(arch_resolve "tgz" "arm64-tgz")" \ + --arg arch "linux-$COMPANION_ARCH" \ + '(if type == "array" then . else .packages end) | [.[] | select(.target==$target and (.uri | contains($arch)))] | first') RELEASE=$(echo "$PACKAGE_JSON" | jq -r '.version // empty') ASSET_URL=$(echo "$PACKAGE_JSON" | jq -r '.uri // empty') if [[ -z "$RELEASE" || -z "$ASSET_URL" ]]; then - msg_error "Could not resolve a matching Linux x64 Companion package from the Bitfocus API." + msg_error "Could not resolve a matching Linux ${COMPANION_ARCH} Companion package from the Bitfocus API." exit 1 fi msg_ok "Found Companion ${RELEASE}" diff --git a/install/blocky-install.sh b/install/blocky-install.sh index 4b176b8db..0e28f89f1 100644 --- a/install/blocky-install.sh +++ b/install/blocky-install.sh @@ -13,7 +13,7 @@ setting_up_container network_check update_os -fetch_and_deploy_gh_release "blocky" "0xERR0R/blocky" "prebuild" "latest" "/opt/blocky" "blocky_*_Linux_x86_64.tar.gz" +fetch_and_deploy_gh_release "blocky" "0xERR0R/blocky" "prebuild" "latest" "/opt/blocky" "blocky_*_Linux_$(arch_resolve "x86_64" "arm64").tar.gz" msg_info "Configuring Blocky" if systemctl is-active systemd-resolved >/dev/null 2>&1; then diff --git a/install/certimate-install.sh b/install/certimate-install.sh index 1c4e149a2..a81ac8392 100644 --- a/install/certimate-install.sh +++ b/install/certimate-install.sh @@ -13,7 +13,7 @@ setting_up_container network_check update_os -fetch_and_deploy_gh_release "certimate" "certimate-go/certimate" "prebuild" "latest" "/opt/certimate" "certimate_*_linux_amd64.zip" +fetch_and_deploy_gh_release "certimate" "certimate-go/certimate" "prebuild" "latest" "/opt/certimate" "certimate_*_linux_$(arch_resolve).zip" msg_info "Creating Service" cat <<'EOF' >/etc/systemd/system/certimate.service diff --git a/install/cleanuparr-install.sh b/install/cleanuparr-install.sh index ff83f0a0e..0277f7a0b 100755 --- a/install/cleanuparr-install.sh +++ b/install/cleanuparr-install.sh @@ -13,7 +13,7 @@ setting_up_container network_check update_os -fetch_and_deploy_gh_release "Cleanuparr" "Cleanuparr/Cleanuparr" "prebuild" "latest" "/opt/cleanuparr" "*linux-amd64.zip" +fetch_and_deploy_gh_release "Cleanuparr" "Cleanuparr/Cleanuparr" "prebuild" "latest" "/opt/cleanuparr" "*linux-$(arch_resolve).zip" msg_info "Creating Service" cat </etc/systemd/system/cleanuparr.service diff --git a/install/cliproxyapi-install.sh b/install/cliproxyapi-install.sh index c60f1e721..a13a5b213 100644 --- a/install/cliproxyapi-install.sh +++ b/install/cliproxyapi-install.sh @@ -17,7 +17,7 @@ msg_info "Installing Dependencies" $STD apt install -y openssl msg_ok "Installed Dependencies" -fetch_and_deploy_gh_release "cliproxyapi" "router-for-me/CLIProxyAPI" "prebuild" "latest" "/opt/cliproxyapi" "CLIProxyAPI_*_linux_amd64.tar.gz" +fetch_and_deploy_gh_release "cliproxyapi" "router-for-me/CLIProxyAPI" "prebuild" "latest" "/opt/cliproxyapi" "CLIProxyAPI_*_linux_$(arch_resolve "amd64" "aarch64").tar.gz" msg_info "Configuring CLIProxyAPI" MANAGEMENT_PASSWORD=$(openssl rand -hex 32) diff --git a/install/cloudreve-install.sh b/install/cloudreve-install.sh index de91cbf58..0e9fe84c1 100644 --- a/install/cloudreve-install.sh +++ b/install/cloudreve-install.sh @@ -13,7 +13,7 @@ setting_up_container network_check update_os -fetch_and_deploy_gh_release "cloudreve" "cloudreve/cloudreve" "prebuild" "latest" "/opt/cloudreve" "*linux_amd64.tar.gz" +fetch_and_deploy_gh_release "cloudreve" "cloudreve/cloudreve" "prebuild" "latest" "/opt/cloudreve" "*linux_$(arch_resolve).tar.gz" msg_info "Setup Service" cat </etc/systemd/system/cloudreve.service diff --git a/install/cockpit-install.sh b/install/cockpit-install.sh index aee48496a..982250834 100644 --- a/install/cockpit-install.sh +++ b/install/cockpit-install.sh @@ -30,7 +30,8 @@ $STD apt install -t ${VERSION_CODENAME}-backports cockpit cracklib-runtime --no- sed -i "s/root//g" /etc/cockpit/disallowed-users msg_ok "Installed Cockpit" -read -r -p "Would you like to install 45Drives' cockpit-file-sharing, cockpit-identities, and cockpit-navigator " prompt +# 45Drives only publishes amd64 packages +[[ "$(arch_resolve)" == "arm64" ]] || read -r -p "Would you like to install 45Drives' cockpit-file-sharing, cockpit-identities, and cockpit-navigator " prompt if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then install_45drives=true if [[ "${VERSION_ID}" -ge 13 ]]; then diff --git a/install/configarr-install.sh b/install/configarr-install.sh index 8fe0d91be..704626d58 100644 --- a/install/configarr-install.sh +++ b/install/configarr-install.sh @@ -17,7 +17,7 @@ msg_info "Installing Dependencies" $STD apt install -y git msg_ok "Installed Dependencies" -fetch_and_deploy_gh_release "configarr" "raydak-labs/configarr" "prebuild" "latest" "/opt/configarr" "configarr-linux-x64.tar.xz" +fetch_and_deploy_gh_release "configarr" "raydak-labs/configarr" "prebuild" "latest" "/opt/configarr" "configarr-linux-$(arch_resolve "x64" "arm64").tar.xz" msg_info "Setup Configarr" cat </opt/configarr/.env diff --git a/install/cosmos-install.sh b/install/cosmos-install.sh index 463d17afb..04e75422a 100644 --- a/install/cosmos-install.sh +++ b/install/cosmos-install.sh @@ -25,7 +25,7 @@ $STD apt install -y \ msg_ok "Installed Dependencies" setup_docker -fetch_and_deploy_gh_release "cosmos" "azukaar/Cosmos-Server" "prebuild" "latest" "/opt/cosmos" "cosmos-cloud-*-amd64.zip" +fetch_and_deploy_gh_release "cosmos" "azukaar/Cosmos-Server" "prebuild" "latest" "/opt/cosmos" "cosmos-cloud-*-$(arch_resolve).zip" msg_info "Setting up Cosmos" cd /opt/cosmos diff --git a/install/crafty-controller-install.sh b/install/crafty-controller-install.sh index d9223590f..935c5870b 100644 --- a/install/crafty-controller-install.sh +++ b/install/crafty-controller-install.sh @@ -16,7 +16,7 @@ update_os msg_info "Setting up TemurinJDK" setup_java $STD apt install -y temurin-{8,11,17,21,25}-jre -$STD update-alternatives --set java /usr/lib/jvm/temurin-25-jre-amd64/bin/java +$STD update-alternatives --set java /usr/lib/jvm/temurin-25-jre-$(arch_resolve)/bin/java msg_ok "Installed TemurinJDK" msg_info "Setup Python3" @@ -52,7 +52,7 @@ After=network.target Type=simple User=crafty WorkingDirectory=/opt/crafty-controller/crafty/crafty-4 -Environment=PATH=/usr/lib/jvm/temurin-25-jre-amd64/bin:/opt/crafty-controller/crafty/.venv/bin:$PATH +Environment=PATH=/usr/lib/jvm/temurin-25-jre-$(arch_resolve)/bin:/opt/crafty-controller/crafty/.venv/bin:$PATH ExecStart=/opt/crafty-controller/crafty/.venv/bin/python3 main.py -d Restart=on-failure @@ -75,4 +75,4 @@ fi msg_ok "Service started" motd_ssh customize -cleanup_lxc +cleanup_lxc \ No newline at end of file diff --git a/install/dagu-install.sh b/install/dagu-install.sh index 898b8a0a9..e3e2ba0f9 100644 --- a/install/dagu-install.sh +++ b/install/dagu-install.sh @@ -13,7 +13,7 @@ setting_up_container network_check update_os -fetch_and_deploy_gh_release "dagu" "dagucloud/dagu" "prebuild" "latest" "/opt/dagu" "dagu_*_linux_amd64.tar.gz" +fetch_and_deploy_gh_release "dagu" "dagucloud/dagu" "prebuild" "latest" "/opt/dagu" "dagu_*_linux_$(arch_resolve).tar.gz" msg_info "Setting up Dagu" mkdir -p /opt/dagu/data diff --git a/install/databasus-install.sh b/install/databasus-install.sh index 7e7adf977..c9808d3e2 100644 --- a/install/databasus-install.sh +++ b/install/databasus-install.sh @@ -32,8 +32,10 @@ for v in 12 13 14 15 16 18; do done # Install MongoDB Database Tools via direct .deb (no APT repo for Debian 13) [[ "$(get_os_info id)" == "ubuntu" ]] && MONGO_DIST="ubuntu2204" || MONGO_DIST="debian12" +# MongoDB only publishes arm64 builds for Ubuntu +[[ "$MONGO_ARCH" == "arm64" ]] && MONGO_DIST="ubuntu2204" MONGO_VERSION=$(get_latest_gh_tag "mongodb/mongo-tools" "100." || echo "100.16.1") -fetch_and_deploy_from_url "https://fastdl.mongodb.org/tools/db/mongodb-database-tools-${MONGO_DIST}-x86_64-${MONGO_VERSION}.deb" "" +fetch_and_deploy_from_url "https://fastdl.mongodb.org/tools/db/mongodb-database-tools-${MONGO_DIST}-$(arch_resolve "x86_64" "arm64")-${MONGO_VERSION}.deb" "" mkdir -p /usr/local/mongodb-database-tools/bin [[ -f /usr/bin/mongodump ]] && ln -sf /usr/bin/mongodump /usr/local/mongodb-database-tools/bin/mongodump [[ -f /usr/bin/mongorestore ]] && ln -sf /usr/bin/mongorestore /usr/local/mongodb-database-tools/bin/mongorestore @@ -63,7 +65,7 @@ $STD go mod tidy $STD go mod download $STD go install github.com/swaggo/swag/cmd/swag@latest $STD /root/go/bin/swag init -g cmd/main.go -o swagger -$STD env CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o databasus ./cmd/main.go +$STD env CGO_ENABLED=0 GOOS=linux GOARCH=$(arch_resolve) go build -o databasus ./cmd/main.go mv /opt/databasus/backend/databasus /opt/databasus/databasus mkdir -p /databasus-data/{pgdata,temp,backups,data,logs} mkdir -p /opt/databasus/ui/build diff --git a/install/ddns-updater-install.sh b/install/ddns-updater-install.sh index 6d340ad1b..675193f9f 100644 --- a/install/ddns-updater-install.sh +++ b/install/ddns-updater-install.sh @@ -12,7 +12,7 @@ setting_up_container network_check update_os -fetch_and_deploy_gh_release "ddns-updater" "qdm12/ddns-updater" "singlefile" "latest" "/opt/ddns-updater" "ddns-updater_*_linux_amd64" +fetch_and_deploy_gh_release "ddns-updater" "qdm12/ddns-updater" "singlefile" "latest" "/opt/ddns-updater" "ddns-updater_*_linux_$(arch_resolve)" msg_info "Configuring DDNS-Updater" mkdir -p /opt/ddns-updater/data diff --git a/install/deconz-install.sh b/install/deconz-install.sh index 8fbd6a598..7be1c7bc7 100644 --- a/install/deconz-install.sh +++ b/install/deconz-install.sh @@ -22,8 +22,9 @@ setup_deb822_repo \ msg_ok "Setup Phoscon Repository" msg_info "Installing deConz" -libssl=$(curl -fsSL --proto '=https' "https://security.ubuntu.com/ubuntu/pool/main/o/openssl/" | grep -o 'libssl1\.1_1\.1\.1f-1ubuntu2\.2[^"]*amd64\.deb' | head -n1) -curl -fsSL --proto '=https' "https://security.ubuntu.com/ubuntu/pool/main/o/openssl/$libssl" -o "$libssl" +pool="$(arch_resolve "https://security.ubuntu.com/ubuntu/pool/main/o/openssl/" "http://ports.ubuntu.com/ubuntu-ports/pool/main/o/openssl/")" +libssl=$(curl -fsSL --proto '=http,https' "$pool" | grep -o "libssl1\.1_1\.1\.1f-1ubuntu2\.2[^\"]*$(arch_resolve)\.deb" | head -n1) +curl -fsSL --proto '=http,https' "$pool$libssl" -o "$libssl" $STD dpkg -i "$libssl" $STD apt install -y deconz rm -rf "$libssl" diff --git a/install/discopanel-install.sh b/install/discopanel-install.sh index 26273d848..199b84d6e 100644 --- a/install/discopanel-install.sh +++ b/install/discopanel-install.sh @@ -12,7 +12,7 @@ setting_up_container network_check update_os -fetch_and_deploy_gh_release "discopanel" "nickheyer/discopanel" "prebuild" "latest" "/opt/discopanel" "discopanel-linux-amd64.tar.gz" +fetch_and_deploy_gh_release "discopanel" "nickheyer/discopanel" "prebuild" "latest" "/opt/discopanel" "discopanel-linux-$(arch_resolve).tar.gz" setup_docker msg_info "Creating Service" @@ -23,7 +23,7 @@ After=network.target [Service] WorkingDirectory=/opt/discopanel -ExecStart=/opt/discopanel/discopanel-linux-amd64 +ExecStart=/opt/discopanel/discopanel-linux-$(arch_resolve) Restart=always [Install] diff --git a/install/donetick-install.sh b/install/donetick-install.sh index 128afa289..1c800bee5 100644 --- a/install/donetick-install.sh +++ b/install/donetick-install.sh @@ -17,7 +17,7 @@ msg_info "Installing Dependencies" $STD apt install -y ca-certificates msg_ok "Installed Dependencies" -fetch_and_deploy_gh_release "donetick" "donetick/donetick" "prebuild" "latest" "/opt/donetick" "donetick_Linux_x86_64.tar.gz" +fetch_and_deploy_gh_release "donetick" "donetick/donetick" "prebuild" "latest" "/opt/donetick" "donetick_Linux_$(arch_resolve "x86_64" "arm64").tar.gz" msg_info "Setup Donetick" cd /opt/donetick diff --git a/install/duplicati-install.sh b/install/duplicati-install.sh index feb60ef37..ab6d1a7fd 100644 --- a/install/duplicati-install.sh +++ b/install/duplicati-install.sh @@ -20,7 +20,7 @@ $STD apt install -y \ libfontconfig1 msg_ok "Installed Dependencies" -fetch_and_deploy_gh_release "duplicati" "duplicati/duplicati" "binary" "latest" "/opt/duplicati" "duplicati-*-linux-x64-gui.deb" +fetch_and_deploy_gh_release "duplicati" "duplicati/duplicati" "binary" "latest" "/opt/duplicati" "duplicati-*-linux-$(arch_resolve "x64" "arm64")-gui.deb" msg_info "Configuring duplicati" DECRYPTKEY=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13) diff --git a/install/dynacat-install.sh b/install/dynacat-install.sh index afba5888a..16ef757ae 100644 --- a/install/dynacat-install.sh +++ b/install/dynacat-install.sh @@ -13,7 +13,7 @@ setting_up_container network_check update_os -fetch_and_deploy_gh_release "dynacat" "Panonim/dynacat" "prebuild" "latest" "/opt/dynacat" "dynacat-linux-amd64.tar.gz" +fetch_and_deploy_gh_release "dynacat" "Panonim/dynacat" "prebuild" "latest" "/opt/dynacat" "dynacat-linux-$(arch_resolve).tar.gz" msg_info "Setting up Dynacat" mkdir -p /opt/dynacat/config /opt/dynacat/assets /opt/dynacat/data diff --git a/install/ebusd-install.sh b/install/ebusd-install.sh index 6d8f4389d..fd8d776e5 100644 --- a/install/ebusd-install.sh +++ b/install/ebusd-install.sh @@ -14,7 +14,7 @@ network_check update_os msg_info "Installing ebusd" -fetch_and_deploy_gh_release "ebusd" "john30/ebusd" "binary" "latest" "" "ebusd-*_amd64-trixie_mqtt1.deb" +fetch_and_deploy_gh_release "ebusd" "john30/ebusd" "binary" "latest" "" "ebusd-*_$(arch_resolve)-trixie_mqtt1.deb" systemctl enable -q ebusd msg_ok "Installed ebusd" diff --git a/install/emqx-install.sh b/install/emqx-install.sh index 8729f48c2..d08a6d6a1 100644 --- a/install/emqx-install.sh +++ b/install/emqx-install.sh @@ -25,8 +25,8 @@ if [[ -z "$LATEST_VERSION" ]]; then fi msg_ok "Latest version: v$LATEST_VERSION" -DOWNLOAD_URL="https://www.emqx.com/en/downloads/enterprise/v$LATEST_VERSION/emqx-enterprise-${LATEST_VERSION}-debian12-amd64.deb" -DEB_FILE="/tmp/emqx-enterprise-${LATEST_VERSION}-debian12-amd64.deb" +DOWNLOAD_URL="https://www.emqx.com/en/downloads/enterprise/v$LATEST_VERSION/emqx-enterprise-${LATEST_VERSION}-debian12-$(arch_resolve).deb" +DEB_FILE="/tmp/emqx-enterprise-${LATEST_VERSION}-debian12-$(arch_resolve).deb" msg_info "Downloading EMQX v$LATEST_VERSION" $STD curl -fsSL -o "$DEB_FILE" "$DOWNLOAD_URL" diff --git a/install/erpnext-install.sh b/install/erpnext-install.sh index 757ef95fc..5e1b60cb1 100644 --- a/install/erpnext-install.sh +++ b/install/erpnext-install.sh @@ -30,7 +30,8 @@ $STD apt install -y \ fontconfig \ libjpeg-dev \ libmariadb-dev \ - python3-pip + python3-pip \ + cron msg_ok "Installed Dependencies" NODE_VERSION="24" NODE_MODULE="yarn" setup_nodejs @@ -50,7 +51,7 @@ $STD systemctl restart mariadb msg_ok "Configured MariaDB for ERPNext" msg_info "Installing wkhtmltopdf" -WKHTMLTOPDF_URL="https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-3/wkhtmltox_0.12.6.1-3.bookworm_amd64.deb" +WKHTMLTOPDF_URL="https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-3/wkhtmltox_0.12.6.1-3.bookworm_$(arch_resolve).deb" $STD curl -fsSL -o /tmp/wkhtmltox.deb "$WKHTMLTOPDF_URL" $STD apt install -y /tmp/wkhtmltox.deb rm -f /tmp/wkhtmltox.deb diff --git a/install/ersatztv-install.sh b/install/ersatztv-install.sh index c93c68f19..2238a3f83 100644 --- a/install/ersatztv-install.sh +++ b/install/ersatztv-install.sh @@ -14,8 +14,8 @@ network_check update_os setup_hwaccel -fetch_and_deploy_gh_release "ersatztv" "ErsatzTV/ErsatzTV" "prebuild" "latest" "/opt/ErsatzTV" "*linux-x64.tar.gz" -fetch_and_deploy_gh_release "ersatztv-ffmpeg" "ErsatzTV/ErsatzTV-ffmpeg" "prebuild" "latest" "/opt/ErsatzTV-ffmpeg" "*-linux64-gpl-7.1.tar.xz" +fetch_and_deploy_gh_release "ersatztv" "ErsatzTV/ErsatzTV" "prebuild" "latest" "/opt/ErsatzTV" "*linux-$(arch_resolve "x64" "arm64").tar.gz" +fetch_and_deploy_gh_release "ersatztv-ffmpeg" "ErsatzTV/ErsatzTV-ffmpeg" "prebuild" "latest" "/opt/ErsatzTV-ffmpeg" "*-$(arch_resolve "linux64" "linuxarm64")-gpl-7.1.tar.xz" msg_info "Set ErsatzTV-ffmpeg links" chmod +x /opt/ErsatzTV-ffmpeg/bin/* diff --git a/install/ezbookkeeping-install.sh b/install/ezbookkeeping-install.sh index 38a234f12..f34ecbdc4 100644 --- a/install/ezbookkeeping-install.sh +++ b/install/ezbookkeeping-install.sh @@ -13,7 +13,7 @@ setting_up_container network_check update_os -fetch_and_deploy_gh_release "ezbookkeeping" "mayswind/ezbookkeeping" "prebuild" "latest" "/opt/ezbookkeeping" "ezbookkeeping-*-linux-amd64.tar.gz" +fetch_and_deploy_gh_release "ezbookkeeping" "mayswind/ezbookkeeping" "prebuild" "latest" "/opt/ezbookkeeping" "ezbookkeeping-*-linux-$(arch_resolve).tar.gz" create_self_signed_cert msg_info "Configuring ezBookkeeping" diff --git a/install/fileflows-install.sh b/install/fileflows-install.sh index b7b2aceef..af93424b6 100644 --- a/install/fileflows-install.sh +++ b/install/fileflows-install.sh @@ -23,12 +23,20 @@ msg_ok "Installed Dependencies" setup_hwaccel msg_info "Installing ASP.NET Core Runtime" -setup_deb822_repo \ - "microsoft" \ - "https://packages.microsoft.com/keys/microsoft-2025.asc" \ - "https://packages.microsoft.com/debian/13/prod/" \ - "trixie" -$STD apt install -y aspnetcore-runtime-8.0 +if [[ "$(arch_resolve)" == "arm64" ]]; then + # packages.microsoft.com only ships amd64 debs for Debian; use dotnet-install on arm64 + curl -fsSL https://dot.net/v1/dotnet-install.sh -o /tmp/dotnet-install.sh + $STD bash /tmp/dotnet-install.sh --channel 8.0 --runtime aspnetcore --install-dir /usr/lib/dotnet8 + ln -sf /usr/lib/dotnet8/dotnet /usr/bin/dotnet + rm -f /tmp/dotnet-install.sh +else + setup_deb822_repo \ + "microsoft" \ + "https://packages.microsoft.com/keys/microsoft-2025.asc" \ + "https://packages.microsoft.com/debian/13/prod/" \ + "trixie" + $STD apt install -y aspnetcore-runtime-8.0 +fi msg_ok "Installed ASP.NET Core Runtime" fetch_and_deploy_from_url "https://fileflows.com/downloads/zip" "/opt/fileflows" diff --git a/install/forgejo-install.sh b/install/forgejo-install.sh index 6f7e02d33..38fa16813 100644 --- a/install/forgejo-install.sh +++ b/install/forgejo-install.sh @@ -19,7 +19,7 @@ $STD apt install -y \ git-lfs msg_ok "Installed Dependencies" -fetch_and_deploy_codeberg_release "forgejo" "forgejo/forgejo" "singlefile" "latest" "/opt/forgejo" "forgejo-*-linux-amd64" +fetch_and_deploy_codeberg_release "forgejo" "forgejo/forgejo" "singlefile" "latest" "/opt/forgejo" "forgejo-*-linux-$(arch_resolve)" ln -sf /opt/forgejo/forgejo /usr/local/bin/forgejo msg_info "Setting up Forgejo" diff --git a/install/frigate-install.sh b/install/frigate-install.sh index 89a1630fa..c4113ebaf 100644 --- a/install/frigate-install.sh +++ b/install/frigate-install.sh @@ -91,7 +91,7 @@ msg_ok "Installed Dependencies" setup_hwaccel -export TARGETARCH="amd64" +export TARGETARCH="$(arch_resolve)" export CCACHE_DIR=/root/.ccache export CCACHE_MAXSIZE=2G export APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=DontWarn @@ -122,7 +122,7 @@ msg_info "Building SQLite Extensions" $STD bash /opt/frigate/docker/main/build_sqlite_vec.sh msg_ok "Built SQLite Extensions" -fetch_and_deploy_gh_release "go2rtc" "AlexxIT/go2rtc" "singlefile" "latest" "/usr/local/go2rtc/bin" "go2rtc_linux_amd64" +fetch_and_deploy_gh_release "go2rtc" "AlexxIT/go2rtc" "singlefile" "latest" "/usr/local/go2rtc/bin" "go2rtc_linux_$(arch_resolve)" msg_info "Installing Tempio" sed -i 's|/rootfs/usr/local|/usr/local|g' /opt/frigate/docker/main/install_tempio.sh diff --git a/misc/build.func b/misc/build.func index 8ebda5cbc..b90c89901 100644 --- a/misc/build.func +++ b/misc/build.func @@ -3904,6 +3904,7 @@ build_container() { export ENABLE_TUN="$ENABLE_TUN" export PCT_OSTYPE="$var_os" export PCT_OSVERSION="$var_version" + export PCT_ARCH="$(dpkg --print-architecture 2>/dev/null || uname -m)" export PCT_DISK_SIZE="$DISK_SIZE" export IPV6_METHOD="$IPV6_METHOD" export ENABLE_GPU="$ENABLE_GPU" @@ -5800,9 +5801,37 @@ create_lxc_container() { url="https://jenkins.linuxcontainers.org/job/image-${PCT_OSTYPE}/architecture=arm64,release=${CUSTOM_TEMPLATE_VARIANT},variant=default/lastStableBuild/artifact/rootfs.tar.xz" msg_info "Downloading ${PCT_OSTYPE^} ${CUSTOM_TEMPLATE_VARIANT} ARM64 template" - if ! curl -fsSL -o "$dest" "$url"; then - msg_error "Failed to download ARM64 template from: $url" - exit 208 + local patched="${dest%/*}/.${dest##*/}.patched" + ( + flock -x 200 + if [[ -f "$patched" ]] && [[ -s "$dest" ]] && xz -t "$dest" 2>/dev/null; then + exit 0 + fi + if ! curl -fsSL -o "$dest" "$url"; then + msg_error "Failed to download ARM64 template from: $url" + exit 208 + fi + # Some linuxcontainers.org rootfs builds ship without /etc/network, + # which makes pve-container's post-create hook fail when it writes the + # interfaces file. This appends an empty /etc/network/interfaces if missing. + if ! tar -tJf "$dest" 2>/dev/null | grep -q '/etc/network/$'; then + fixdir=$(mktemp -d) + tmptar="${dest%.xz}" + mkdir -p "$fixdir/etc/network" + : >"$fixdir/etc/network/interfaces" + if xz -d -f "$dest" && tar -C "$fixdir" --append -f "$tmptar" ./etc/network && xz -1 -f "$tmptar"; then + rm -rf "$fixdir" + else + rm -rf "$fixdir" "$tmptar" + msg_error "Failed to patch ARM64 template (missing /etc/network)" + exit 208 + fi + fi + touch "$patched" + ) 200>"${dest}.lock" + local dl_rc=$? + if [[ $dl_rc -ne 0 ]]; then + exit "$dl_rc" fi msg_ok "Downloaded ARM64 LXC template" } diff --git a/misc/core.func b/misc/core.func index 00cbf2e89..6e9e590e0 100644 --- a/misc/core.func +++ b/misc/core.func @@ -360,6 +360,27 @@ arch_check() { fi } +# ------------------------------------------------------------------------------ +# arch_resolve() +# +# - Selects an architecture-specific value while preserving amd64 defaults +# - Usage: arch_resolve "amd64-value" "arm64-value" +# - Defaults: amd64="amd64", arm64="arm64" +# ------------------------------------------------------------------------------ +arch_resolve() { + local amd64_val="${1:-amd64}" + local arm64_val="${2:-arm64}" + local arch="${PCT_ARCH:-$(dpkg --print-architecture 2>/dev/null || uname -m)}" + case "$arch" in + amd64 | x86_64) echo "$amd64_val" ;; + arm64 | aarch64) echo "$arm64_val" ;; + *) + msg_error "Unsupported architecture: $arch" + return 106 + ;; + esac +} + # ------------------------------------------------------------------------------ # ssh_check() # diff --git a/misc/tools.func b/misc/tools.func index 7bc14e104..6a0c3ed88 100644 --- a/misc/tools.func +++ b/misc/tools.func @@ -6920,14 +6920,24 @@ setup_mongodb() { export NEEDRESTART_MODE=a export NEEDRESTART_SUSPEND=1 - # Check AVX support - if ! grep -qm1 'avx[^ ]*' /proc/cpuinfo; then - local major="${MONGO_VERSION%%.*}" - if ((major > 5)); then - msg_error "MongoDB ${MONGO_VERSION} requires AVX support, which is not available on this system." + # Check CPU requirements: AVX on x86_64, NEON/ASIMD on arm64 + case "$(uname -m)" in + aarch64) + if ! grep -qm1 'asimd' /proc/cpuinfo; then + msg_error "MongoDB ${MONGO_VERSION} requires ARMv8.2-A support, which is not available on this system." return 236 fi - fi + ;; + *) + if ! grep -qm1 'avx[^ ]*' /proc/cpuinfo; then + local major="${MONGO_VERSION%%.*}" + if ((major > 5)); then + msg_error "MongoDB ${MONGO_VERSION} requires AVX support, which is not available on this system." + return 236 + fi + fi + ;; + esac case "$DISTRO_ID" in ubuntu) From c43420ba6c6c37ead6bda9625cf2e0cc52b21489 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Fri, 19 Jun 2026 07:53:35 +0000 Subject: [PATCH 76/78] Update CHANGELOG.md (#15203) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index cee368dd2..0e25424fa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -485,6 +485,12 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit ## 2026-06-19 +### 🚀 Updated Scripts + + - #### ✨ New Features + + - [arm64] Port scripts titled between A-F to support arm64 [@asylumexp](https://github.com/asylumexp) ([#15181](https://github.com/community-scripts/ProxmoxVE/pull/15181)) + ### 📂 Github - fix (workflow): YAML syntax error in pocketbase stub generation [@Trollfjorden](https://github.com/Trollfjorden) ([#15174](https://github.com/community-scripts/ProxmoxVE/pull/15174)) From e5072fae5cee18284c97689dc6f26f0d85c3c193 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Slavi=C5=A1a=20Are=C5=BEina?= <58952836+tremor021@users.noreply.github.com> Date: Fri, 19 Jun 2026 09:53:48 +0200 Subject: [PATCH 77/78] Add APP_SECRET env var (#15199) --- ct/kimai.sh | 22 ++++++++++------------ install/kimai-install.sh | 4 +++- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/ct/kimai.sh b/ct/kimai.sh index 87bcfb07a..95b1ca1b3 100644 --- a/ct/kimai.sh +++ b/ct/kimai.sh @@ -41,21 +41,19 @@ function update_script() { systemctl stop apache2 msg_ok "Stopped Apache2" - msg_info "Backing up Kimai configuration and var directory" - mkdir -p "$BACKUP_DIR" - [ -d /opt/kimai/var ] && cp -r /opt/kimai/var "$BACKUP_DIR/" - [ -f /opt/kimai/.env ] && cp /opt/kimai/.env "$BACKUP_DIR/" - [ -f /opt/kimai/config/packages/local.yaml ] && cp /opt/kimai/config/packages/local.yaml "$BACKUP_DIR/" - msg_ok "Backup completed" - + create_backup /opt/kimai/var \ + /opt/kimai/.env \ + /opt/kimai/config/packages/local.yaml fetch_and_deploy_gh_release "kimai" "kimai/kimai" "tarball" + restore_backup msg_info "Updating Kimai" - [ -d "$BACKUP_DIR/var" ] && cp -r "$BACKUP_DIR/var" /opt/kimai/ - [ -f "$BACKUP_DIR/.env" ] && cp "$BACKUP_DIR/.env" /opt/kimai/ - [ -f "$BACKUP_DIR/local.yaml" ] && cp "$BACKUP_DIR/local.yaml" /opt/kimai/config/packages/ - rm -rf "$BACKUP_DIR" - cd /opt/kimai + if grep -q "^APP_SECRET=$" /opt/kimai/.env; then + APP_SECRET=$(openssl rand -hex 48) + sed -i "s|^APP_SECRET=.*|APP_SECRET=${APP_SECRET}|" /opt/kimai/.env + fi + + cd /opt/kimai sed -i '/^admin_lte:/,/^[^[:space:]]/d' config/packages/local.yaml $STD composer install --no-dev --optimize-autoloader $STD bin/console kimai:update diff --git a/install/kimai-install.sh b/install/kimai-install.sh index e555a8489..f506369a0 100644 --- a/install/kimai-install.sh +++ b/install/kimai-install.sh @@ -44,12 +44,14 @@ msg_ok "Set up database" fetch_and_deploy_gh_release "kimai" "kimai/kimai" "tarball" msg_info "Setup Kimai" +APP_SECRET=$(openssl rand -hex 48) cd /opt/kimai echo "export COMPOSER_ALLOW_SUPERUSER=1" >>~/.bashrc source ~/.bashrc $STD composer install --no-dev --optimize-autoloader --no-interaction cp .env.dist .env -sed -i "/^DATABASE_URL=/c\DATABASE_URL=mysql://$DB_USER:$DB_PASS@127.0.0.1:3306/$DB_NAME?charset=utf8mb4&serverVersion=mariadb-$MYSQL_VERSION" /opt/kimai/.env +sed -i "/^DATABASE_URL=.*/c\DATABASE_URL=mysql://$DB_USER:$DB_PASS@127.0.0.1:3306/$DB_NAME?charset=utf8mb4&serverVersion=mariadb-$MYSQL_VERSION" /opt/kimai/.env +sed -i "s|^APP_SECRET=.*|APP_SECRET=$APP_SECRET|" /opt/kimai/.env $STD bin/console kimai:install -n $STD expect < Date: Fri, 19 Jun 2026 07:54:07 +0000 Subject: [PATCH 78/78] Update CHANGELOG.md (#15204) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0e25424fa..e986aa4c2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -487,6 +487,10 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit ### 🚀 Updated Scripts + - #### 🐞 Bug Fixes + + - Kimai: Add APP_SECRET env var [@tremor021](https://github.com/tremor021) ([#15199](https://github.com/community-scripts/ProxmoxVE/pull/15199)) + - #### ✨ New Features - [arm64] Port scripts titled between A-F to support arm64 [@asylumexp](https://github.com/asylumexp) ([#15181](https://github.com/community-scripts/ProxmoxVE/pull/15181))