Compare commits

..
Author SHA1 Message Date
MickLesk 4738f33fc7 mongodb, paperless-gpt: accept yes as well as y 2026-10-23 20:50:49 +02:00
MickLesk 3f0dd1b09b install: answer every prompt from the environment, survive a closed stdin
Every interactive prompt takes a var_<app>_<name> override and treats a
closed stdin like Enter (`|| true`), so an install keeps going after the
console that started it is gone. Values the script cannot do without end
with exit 64 and name the variable to set. Validation loops stop asking
when nobody can answer instead of spinning on an empty read.
2026-10-23 20:44:37 +02:00
26 changed files with 59 additions and 71 deletions

No files matched your search

-26
View File
@@ -565,32 +565,6 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
</details>
## 2026-10-24
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- patchmon: avoids systemd environment secret leaks via D-Bus/subprocesses. [@rhclayto](https://github.com/rhclayto) ([#18074](https://github.com/community-scripts/ProxmoxVE/pull/18074))
- fix: Linkwarden - clear Yarn berry cache after install and update- #18115 [@bferd](https://github.com/bferd) ([#18116](https://github.com/community-scripts/ProxmoxVE/pull/18116))
- Borg-UI: recreate the borg venvs with --clear [@MickLesk](https://github.com/MickLesk) ([#18118](https://github.com/community-scripts/ProxmoxVE/pull/18118))
- SnapOtter: recreate the AI venv with --clear [@MickLesk](https://github.com/MickLesk) ([#18119](https://github.com/community-scripts/ProxmoxVE/pull/18119))
- Update authentik version to 2026.8.5 [@thieneret](https://github.com/thieneret) ([#18125](https://github.com/community-scripts/ProxmoxVE/pull/18125))
- #### ✨ New Features
- Frigate: bump to v0.18.2 [@MickLesk](https://github.com/MickLesk) ([#18120](https://github.com/community-scripts/ProxmoxVE/pull/18120))
- #### 🔧 Refactor
- install: answer every prompt from the environment, survive a closed stdin [@MickLesk](https://github.com/MickLesk) ([#18121](https://github.com/community-scripts/ProxmoxVE/pull/18121))
### 🧰 Tools
- #### 🐞 Bug Fixes
- fix(addons): use catch_errors so the update marker is cleared [@mazelado](https://github.com/mazelado) ([#18128](https://github.com/community-scripts/ProxmoxVE/pull/18128))
## 2026-10-23
### 🚀 Updated Scripts
+1 -1
View File
@@ -47,7 +47,7 @@ function update_script() {
RUST_PROFILE="minimal" RUST_TOOLCHAIN="stable" setup_rust
setup_yq
AUTHENTIK_VERSION="version/2026.8.5"
AUTHENTIK_VERSION="version/2026.8.4"
# Source: https://github.com/goauthentik/fips/blob/main/Makefile#L26
XMLSEC_VERSION="1.3.12"
+2 -2
View File
@@ -69,7 +69,7 @@ function update_script() {
if [[ "$(cat /opt/borg1-venv/.pinned_version 2>/dev/null)" != "$BORG1_VERSION" ]]; then
msg_info "Installing Borg ${BORG1_VERSION} (Patience)"
$STD uv venv --clear --python "$BORG_PYTHON" /opt/borg1-venv
$STD uv venv --python "$BORG_PYTHON" /opt/borg1-venv
$STD uv pip install --python /opt/borg1-venv pyfuse3 "borgbackup==${BORG1_VERSION}"
echo "$BORG1_VERSION" >/opt/borg1-venv/.pinned_version
ln -sf /opt/borg1-venv/bin/borg /usr/local/bin/borg
@@ -78,7 +78,7 @@ function update_script() {
if [[ "$(cat /opt/borg2-venv/.pinned_version 2>/dev/null)" != "${BORG2_VERSION}-${BORGSTORE_VERSION}" ]]; then
msg_info "Installing Borg ${BORG2_VERSION} (Patience)"
$STD uv venv --clear --python "$BORG_PYTHON" /opt/borg2-venv
$STD uv venv --python "$BORG_PYTHON" /opt/borg2-venv
$STD uv pip install --python /opt/borg2-venv pyfuse3 "borgbackup==${BORG2_VERSION}" "borgstore[rclone,sftp,rest,s3,blake3]==${BORGSTORE_VERSION}"
echo "${BORG2_VERSION}-${BORGSTORE_VERSION}" >/opt/borg2-venv/.pinned_version
ln -sf /opt/borg2-venv/bin/borg /usr/local/bin/borg2
-1
View File
@@ -64,7 +64,6 @@ function update_script() {
$STD yarn prisma:deploy
rm -rf ~/.cargo/registry ~/.cargo/git ~/.cargo/.package-cache
rm -rf /root/.cache/yarn
rm -rf /root/.yarn/berry/cache
rm -rf /opt/linkwarden/.next/cache
msg_ok "Updated Linkwarden"
+1 -1
View File
@@ -86,7 +86,7 @@ EOF
msg_info "Updating SnapOtter"
$STD uv python install 3.11
$STD uv venv --clear --seed --python 3.11 /opt/snapotter_data/ai/venv
$STD uv venv --seed --python 3.11 /opt/snapotter_data/ai/venv
if [[ "$(arch_resolve)" == "arm64" ]]; then
$STD uv pip install --python /opt/snapotter_data/ai/venv/bin/python \
numpy==1.26.4 Pillow==12.3.0 opencv-python-headless==4.10.0.84 fonttools \
+1 -1
View File
@@ -57,7 +57,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.12"
AUTHENTIK_VERSION="version/2026.8.5"
AUTHENTIK_VERSION="version/2026.8.4"
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"
GO_VERSION="$(grep -m1 '^go ' /opt/authentik/go.mod | awk '{print $2}')" setup_go
+1 -1
View File
@@ -110,7 +110,7 @@ export AUTOGRAPH_VERBOSITY=0
export GLOG_minloglevel=3
export GLOG_logtostderr=0
fetch_and_deploy_gh_release "frigate" "blakeblackshear/frigate" "tarball" "v0.18.2" "/opt/frigate"
fetch_and_deploy_gh_release "frigate" "blakeblackshear/frigate" "tarball" "v0.18.0" "/opt/frigate"
msg_info "Building Nginx"
$STD bash /opt/frigate/docker/main/build_nginx.sh
-1
View File
@@ -61,7 +61,6 @@ $STD yarn web:build
$STD yarn prisma:deploy
rm -rf ~/.cargo/registry ~/.cargo/git ~/.cargo/.package-cache
rm -rf /root/.cache/yarn
rm -rf /root/.yarn/berry/cache
rm -rf /opt/linkwarden/.next/cache
msg_ok "Installed Linkwarden"
+1 -1
View File
@@ -107,7 +107,7 @@ ExecStart=/opt/patchmon/patchmon-server
Restart=always
RestartSec=10
Environment=PATH=/usr/bin:/usr/local/bin
Environment=ENV_FILE=/opt/patchmon/.env
EnvironmentFile=/opt/patchmon/.env
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
@@ -23,7 +23,7 @@ declare -f init_tool_telemetry &>/dev/null && init_tool_telemetry "actual-budget
# Enable error handling
set -Eeuo pipefail
catch_errors
trap 'error_handler' ERR
load_functions
require_debian_like
+1 -1
View File
@@ -23,7 +23,7 @@ declare -f init_tool_telemetry &>/dev/null && init_tool_telemetry "adguardhome-s
# Enable error handling
set -Eeuo pipefail
catch_errors
trap 'error_handler' ERR
# ==============================================================================
# CONFIGURATION
+1 -1
View File
@@ -23,7 +23,7 @@ declare -f init_tool_telemetry &>/dev/null && init_tool_telemetry "coder-code-se
# Enable error handling
set -Eeuo pipefail
catch_errors
trap 'error_handler' ERR
APP="Coder Code Server"
APP_TYPE="addon"
+1 -1
View File
@@ -23,7 +23,7 @@ declare -f init_tool_telemetry &>/dev/null && init_tool_telemetry "copyparty" "a
# Enable error handling
set -Eeuo pipefail
catch_errors
trap 'error_handler' ERR
load_functions
# ==============================================================================
+1 -1
View File
@@ -23,7 +23,7 @@ declare -f init_tool_telemetry &>/dev/null && init_tool_telemetry "cronmaster" "
# Enable error handling
set -Eeuo pipefail
catch_errors
trap 'error_handler' ERR
load_functions
require_debian_like
+1 -1
View File
@@ -30,7 +30,7 @@ declare -f init_tool_telemetry &>/dev/null && init_tool_telemetry "filebrowser-q
# Enable error handling
set -Eeuo pipefail
catch_errors
trap 'error_handler' ERR
# Initialize all core functions (colors, formatting, icons, STD mode)
load_functions
+1 -1
View File
@@ -29,7 +29,7 @@ declare -f init_tool_telemetry &>/dev/null && init_tool_telemetry "filebrowser"
# Enable error handling
set -Eeuo pipefail
catch_errors
trap 'error_handler' ERR
# Initialize all core functions (colors, formatting, icons, STD mode)
load_functions
+1 -1
View File
@@ -23,7 +23,7 @@ declare -f init_tool_telemetry &>/dev/null && init_tool_telemetry "immich-public
# Enable error handling
set -Eeuo pipefail
catch_errors
trap 'error_handler' ERR
# ==============================================================================
# CONFIGURATION
+1 -1
View File
@@ -23,7 +23,7 @@ declare -f init_tool_telemetry &>/dev/null && init_tool_telemetry "jellystat" "a
# Enable error handling
set -Eeuo pipefail
catch_errors
trap 'error_handler' ERR
# ==============================================================================
# CONFIGURATION
+1 -1
View File
@@ -23,7 +23,7 @@ declare -f init_tool_telemetry &>/dev/null && init_tool_telemetry "nextcloud-exp
# Enable error handling
set -Eeuo pipefail
catch_errors
trap 'error_handler' ERR
load_functions
require_debian_like
+1 -1
View File
@@ -26,7 +26,7 @@ declare -f init_tool_telemetry &>/dev/null && init_tool_telemetry "olivetin" "ad
# Enable error handling
set -Eeuo pipefail
catch_errors
trap 'error_handler' ERR
# Initialize all core functions (colors, formatting, icons, STD mode)
load_functions
+1 -1
View File
@@ -23,7 +23,7 @@ declare -f init_tool_telemetry &>/dev/null && init_tool_telemetry "pihole-export
# Enable error handling
set -Eeuo pipefail
catch_errors
trap 'error_handler' ERR
load_functions
# ==============================================================================
@@ -23,7 +23,7 @@ declare -f init_tool_telemetry &>/dev/null && init_tool_telemetry "prometheus-pa
# Enable error handling
set -Eeuo pipefail
catch_errors
trap 'error_handler' ERR
load_functions
require_debian_like
+1 -1
View File
@@ -23,7 +23,7 @@ declare -f init_tool_telemetry &>/dev/null && init_tool_telemetry "qbittorrent-e
# Enable error handling
set -Eeuo pipefail
catch_errors
trap 'error_handler' ERR
load_functions
# ==============================================================================
+1 -1
View File
@@ -23,7 +23,7 @@ declare -f init_tool_telemetry &>/dev/null && init_tool_telemetry "sparkyfitness
# Enable error handling
set -Eeuo pipefail
catch_errors
trap 'error_handler' ERR
load_functions
require_debian_like
+1 -1
View File
@@ -26,7 +26,7 @@ declare -f init_tool_telemetry &>/dev/null && init_tool_telemetry "webmin" "addo
# Enable error handling
set -Eeuo pipefail
catch_errors
trap 'error_handler' ERR
# Initialize all core functions (colors, formatting, icons, STD mode)
load_functions
+36 -20
View File
@@ -565,23 +565,42 @@ if [ -s "$WEB_JS" ] && ! grep -q NoMoreNagging "$WEB_JS"; then
fi
MOBILE_TPL=/usr/share/pve-yew-mobile-gui/index.html.tpl
if [ -s "$MOBILE_TPL" ] && ! grep -q NoMoreNagging "$MOBILE_TPL"; then
MARKER="<!-- MANAGED BLOCK FOR MOBILE NAG -->"
if [ -f "$MOBILE_TPL" ] && ! grep -q "$MARKER" "$MOBILE_TPL"; then
echo "Patching Mobile UI nag..."
sed -i '/<head>/r /dev/stdin' "$MOBILE_TPL" <<'HTML'
<script>
// NoMoreNagging
const nativeFetch = window.fetch.bind(window);
window.fetch = async (...args) => {
const res = await nativeFetch(...args);
const path = new URL(String(args[0]?.url ?? args[0]), location.href).pathname;
if (!['/api2/json/nodes', '/api2/extjs/nodes'].includes(path)) return res;
const body = await res.clone().json().catch(() => null);
if (!Array.isArray(body?.data)) return res;
body.data.forEach((node) => { if (!node.level) node.level = 'NoMoreNagging'; });
return new Response(JSON.stringify(body), { status: res.status, headers: res.headers });
};
</script>
HTML
printf "%s\n" \
"$MARKER" \
"<script>" \
" function removeSubscriptionElements() {" \
" // --- Remove subscription dialogs ---" \
" const dialogs = document.querySelectorAll('dialog.pwt-outer-dialog');" \
" dialogs.forEach(dialog => {" \
" const text = (dialog.textContent || '').toLowerCase();" \
" if (text.includes('subscription')) {" \
" dialog.remove();" \
" console.log('Removed subscription dialog');" \
" }" \
" });" \
"" \
" // --- Remove subscription cards, but keep Reboot/Shutdown/Console ---" \
" const cards = document.querySelectorAll('.pwt-card.pwt-p-2.pwt-d-flex.pwt-interactive.pwt-justify-content-center');" \
" cards.forEach(card => {" \
" const text = (card.textContent || '').toLowerCase();" \
" const hasButton = card.querySelector('button');" \
" if (!hasButton && text.includes('subscription')) {" \
" card.remove();" \
" console.log('Removed subscription card');" \
" }" \
" });" \
" }" \
"" \
" const observer = new MutationObserver(removeSubscriptionElements);" \
" observer.observe(document.body, { childList: true, subtree: true });" \
" removeSubscriptionElements();" \
" setInterval(removeSubscriptionElements, 300);" \
" setTimeout(() => {observer.disconnect();}, 10000);" \
"</script>" \
"" >> "$MOBILE_TPL"
fi
EOF
chmod 755 /usr/local/bin/pve-remove-nag.sh
@@ -596,13 +615,10 @@ EOF
no)
whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox --title "Support Subscriptions" "Supporting the software's development team is essential. Check their official website's Support Subscriptions for pricing. Without their dedicated work, we wouldn't have this exceptional software." 10 58
msg_error "Selected no to Disabling subscription nag"
rm -f /etc/apt/apt.conf.d/no-nag-script /usr/local/bin/pve-remove-nag.sh
[[ -f /etc/apt/apt.conf.d/no-nag-script ]] && rm /etc/apt/apt.conf.d/no-nag-script
;;
esac
apt --reinstall install proxmox-widget-toolkit &>/dev/null || msg_error "Widget toolkit reinstall failed"
if dpkg -s pve-yew-mobile-gui &>/dev/null; then
apt --reinstall install pve-yew-mobile-gui &>/dev/null || msg_error "Mobile UI reinstall failed"
fi
if ! systemctl is-active --quiet pve-ha-lrm; then
CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "HIGH AVAILABILITY" --menu "Enable high availability?" 10 58 2 \
"yes" " " \