mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-05-26 18:29:35 +02:00
Compare commits
17 Commits
fix/tools-
...
github-act
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6ecc0b78cb | ||
|
|
a36b2c9be7 | ||
|
|
e04a9dc13e | ||
|
|
c6f2c2b7d0 | ||
|
|
f78c2be766 | ||
|
|
edfa7c8c45 | ||
|
|
f378e76329 | ||
|
|
faf073d3b5 | ||
|
|
43fc5c27e1 | ||
|
|
37649c1e0a | ||
|
|
bb5f531761 | ||
|
|
48b34d4c2e | ||
|
|
54e13bca94 | ||
|
|
9aa76e8ea4 | ||
|
|
219c4e80b0 | ||
|
|
35cd953ed7 | ||
|
|
f9f21c1b79 |
31
CHANGELOG.md
31
CHANGELOG.md
@@ -467,6 +467,37 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
|||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
## 2026-05-26
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- profilarr: Fix ARCH assignment in profilarr.sh to support Profilarr build usage [@mpeleshenko](https://github.com/mpeleshenko) ([#14709](https://github.com/community-scripts/ProxmoxVE/pull/14709))
|
||||||
|
- Jackett: Remove quotes in Service File [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#14729](https://github.com/community-scripts/ProxmoxVE/pull/14729))
|
||||||
|
- Open-archiver: approve pnpm build scripts and run build:oss without subshell [@MickLesk](https://github.com/MickLesk) ([#14711](https://github.com/community-scripts/ProxmoxVE/pull/14711))
|
||||||
|
- Docuseal: read Ruby version from Gemfile, upgrade on update if needed [@MickLesk](https://github.com/MickLesk) ([#14715](https://github.com/community-scripts/ProxmoxVE/pull/14715))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- Birdnet-GO: install libonnxruntime.so from release tarball [@MickLesk](https://github.com/MickLesk) ([#14716](https://github.com/community-scripts/ProxmoxVE/pull/14716))
|
||||||
|
|
||||||
|
### 💾 Core
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- tools.func: better error diagnostics, consistent OS detection, setup function ordering [@MickLesk](https://github.com/MickLesk) ([#14692](https://github.com/community-scripts/ProxmoxVE/pull/14692))
|
||||||
|
|
||||||
|
### 🧰 Tools
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- IPTag-Tool: use qm set for VM tags to handle snapshot sections crrectly [@MickLesk](https://github.com/MickLesk) ([#14713](https://github.com/community-scripts/ProxmoxVE/pull/14713))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- Netdata: extend PVE version support to 9.x [@MickLesk](https://github.com/MickLesk) ([#14714](https://github.com/community-scripts/ProxmoxVE/pull/14714))
|
||||||
|
|
||||||
## 2026-05-25
|
## 2026-05-25
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
### 🚀 Updated Scripts
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ function update_script() {
|
|||||||
cp /opt/birdnet/birdnet-go /usr/local/bin/birdnet-go
|
cp /opt/birdnet/birdnet-go /usr/local/bin/birdnet-go
|
||||||
chmod +x /usr/local/bin/birdnet-go
|
chmod +x /usr/local/bin/birdnet-go
|
||||||
cp -r /opt/birdnet/libtensorflowlite_c.so /usr/local/lib/ || true
|
cp -r /opt/birdnet/libtensorflowlite_c.so /usr/local/lib/ || true
|
||||||
|
cp -r /opt/birdnet/libonnxruntime.so /usr/local/lib/ || true
|
||||||
ldconfig
|
ldconfig
|
||||||
msg_ok "Deployed Binary"
|
msg_ok "Deployed Binary"
|
||||||
|
|
||||||
|
|||||||
@@ -42,6 +42,13 @@ function update_script() {
|
|||||||
|
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "docuseal" "docusealco/docuseal" "tarball"
|
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
|
||||||
|
RUBY_VERSION="${required_ruby}" RUBY_INSTALL_RAILS="false" HOME=/root setup_ruby
|
||||||
|
fi
|
||||||
|
|
||||||
msg_info "Restoring Data"
|
msg_info "Restoring Data"
|
||||||
mv /opt/docuseal.env.bak /opt/docuseal/.env
|
mv /opt/docuseal.env.bak /opt/docuseal/.env
|
||||||
[[ -d /opt/docuseal_data.bak ]] && mv /opt/docuseal_data.bak /opt/docuseal/data
|
[[ -d /opt/docuseal_data.bak ]] && mv /opt/docuseal_data.bak /opt/docuseal/data
|
||||||
|
|||||||
@@ -43,6 +43,7 @@ function update_script() {
|
|||||||
msg_info "Updating Open Archiver"
|
msg_info "Updating Open Archiver"
|
||||||
cd /opt/openarchiver
|
cd /opt/openarchiver
|
||||||
$STD pnpm install --shamefully-hoist --frozen-lockfile --prod=false
|
$STD pnpm install --shamefully-hoist --frozen-lockfile --prod=false
|
||||||
|
$STD pnpm approve-builds --yes
|
||||||
$STD pnpm run build:oss
|
$STD pnpm run build:oss
|
||||||
$STD pnpm db:migrate
|
$STD pnpm db:migrate
|
||||||
msg_ok "Updated Open Archiver"
|
msg_ok "Updated Open Archiver"
|
||||||
|
|||||||
@@ -37,8 +37,9 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
ARCH=$(uname -m)
|
||||||
|
|
||||||
if check_for_gh_release "deno" "denoland/deno" "v2.7.5" "Deno is pinned to 2.7.5 because the known WouldBlock: Resource temporarily unavailable (os error 11) Issue"; then
|
if check_for_gh_release "deno" "denoland/deno" "v2.7.5" "Deno is pinned to 2.7.5 because the known WouldBlock: Resource temporarily unavailable (os error 11) Issue"; then
|
||||||
ARCH=$(uname -m)
|
|
||||||
fetch_and_deploy_gh_release "deno" "denoland/deno" "v2.7.5" "latest" "/usr/local/bin" "deno-${ARCH}-unknown-linux-gnu.zip"
|
fetch_and_deploy_gh_release "deno" "denoland/deno" "v2.7.5" "latest" "/usr/local/bin" "deno-${ARCH}-unknown-linux-gnu.zip"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ msg_info "Setting up BirdNET-Go"
|
|||||||
cp /opt/birdnet/birdnet-go /usr/local/bin/birdnet-go
|
cp /opt/birdnet/birdnet-go /usr/local/bin/birdnet-go
|
||||||
chmod +x /usr/local/bin/birdnet-go
|
chmod +x /usr/local/bin/birdnet-go
|
||||||
cp -r /opt/birdnet/libtensorflowlite_c.so /usr/local/lib/ || true
|
cp -r /opt/birdnet/libtensorflowlite_c.so /usr/local/lib/ || true
|
||||||
|
cp -r /opt/birdnet/libonnxruntime.so /usr/local/lib/ || true
|
||||||
ldconfig
|
ldconfig
|
||||||
mkdir -p /opt/birdnet/data/clips
|
mkdir -p /opt/birdnet/data/clips
|
||||||
msg_ok "Set up BirdNET-Go"
|
msg_ok "Set up BirdNET-Go"
|
||||||
|
|||||||
@@ -31,7 +31,6 @@ $STD apt install -y \
|
|||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
|
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
|
||||||
RUBY_VERSION="4.0.1" RUBY_INSTALL_RAILS="false" HOME=/root setup_ruby
|
|
||||||
PG_VERSION="17" setup_postgresql
|
PG_VERSION="17" setup_postgresql
|
||||||
PG_DB_NAME="docuseal" PG_DB_USER="docuseal" setup_postgresql_db
|
PG_DB_NAME="docuseal" PG_DB_USER="docuseal" setup_postgresql_db
|
||||||
|
|
||||||
@@ -56,6 +55,9 @@ msg_ok "Downloaded Fonts and PDFium"
|
|||||||
|
|
||||||
fetch_and_deploy_gh_release "docuseal" "docusealco/docuseal" "tarball"
|
fetch_and_deploy_gh_release "docuseal" "docusealco/docuseal" "tarball"
|
||||||
|
|
||||||
|
RUBY_VERSION=$(grep -m1 '^ruby ' /opt/docuseal/Gemfile | grep -oP '[0-9]+\.[0-9]+\.[0-9]+')
|
||||||
|
RUBY_VERSION="${RUBY_VERSION}" RUBY_INSTALL_RAILS="false" HOME=/root setup_ruby
|
||||||
|
|
||||||
msg_info "Downloading Field Detection Model"
|
msg_info "Downloading Field Detection Model"
|
||||||
mkdir -p /opt/docuseal/tmp
|
mkdir -p /opt/docuseal/tmp
|
||||||
curl -fsSL -o /opt/docuseal/tmp/model.onnx \
|
curl -fsSL -o /opt/docuseal/tmp/model.onnx \
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ Type=simple
|
|||||||
WorkingDirectory=/opt/Jackett
|
WorkingDirectory=/opt/Jackett
|
||||||
ExecStart=/bin/sh /opt/Jackett/jackett_launcher.sh
|
ExecStart=/bin/sh /opt/Jackett/jackett_launcher.sh
|
||||||
TimeoutStopSec=30
|
TimeoutStopSec=30
|
||||||
EnvironmentFile="/opt/.env"
|
EnvironmentFile=/opt/.env
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
|
|||||||
@@ -46,6 +46,7 @@ sed -i "s|^ENCRYPTION_KEY=.*|ENCRYPTION_KEY=$SECRET_KEY|g" /opt/openarchiver/.en
|
|||||||
sed -i "s|^TIKA_URL=.*|TIKA_URL=|g" /opt/openarchiver/.env
|
sed -i "s|^TIKA_URL=.*|TIKA_URL=|g" /opt/openarchiver/.env
|
||||||
sed -i "s|^ORIGIN=.*|ORIGIN=http://$LOCAL_IP:3000|g" /opt/openarchiver/.env
|
sed -i "s|^ORIGIN=.*|ORIGIN=http://$LOCAL_IP:3000|g" /opt/openarchiver/.env
|
||||||
$STD pnpm install --shamefully-hoist --frozen-lockfile --prod=false
|
$STD pnpm install --shamefully-hoist --frozen-lockfile --prod=false
|
||||||
|
$STD pnpm approve-builds --yes
|
||||||
$STD pnpm run build:oss
|
$STD pnpm run build:oss
|
||||||
$STD pnpm db:migrate
|
$STD pnpm db:migrate
|
||||||
msg_ok "Setup Open Archiver"
|
msg_ok "Setup Open Archiver"
|
||||||
|
|||||||
@@ -358,6 +358,55 @@ error_handler() {
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# ── Log-pattern analysis: detect common failure causes and emit actionable hints ──
|
||||||
|
if [[ -n "$active_log" && -s "$active_log" ]]; then
|
||||||
|
local _log_tail
|
||||||
|
_log_tail=$(tail -n 60 "$active_log" 2>/dev/null || true)
|
||||||
|
|
||||||
|
# 1. APT/dpkg dependency conflict
|
||||||
|
if echo "$_log_tail" | grep -qE "Depends:|depends on.*but.*not installed|broken packages|unmet dep|dependency problems"; then
|
||||||
|
# Check for PostgreSQL-specific version mismatch (most actionable)
|
||||||
|
local _pg_conflict
|
||||||
|
_pg_conflict=$(echo "$_log_tail" | grep -oE 'postgresql-[0-9]+ but.*installed' | head -1 || true)
|
||||||
|
if [[ -n "$_pg_conflict" ]]; then
|
||||||
|
if declare -f msg_warn >/dev/null 2>&1; then
|
||||||
|
msg_warn "PostgreSQL version conflict: ${_pg_conflict}"
|
||||||
|
msg_warn "Hint: A package requires a specific PostgreSQL version that is not installed. Your distribution may have installed a different PG version than expected."
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
if declare -f msg_warn >/dev/null 2>&1; then
|
||||||
|
msg_warn "APT dependency conflict detected. A required package is not available or is the wrong version for this system."
|
||||||
|
msg_warn "Hint: Run 'apt-get install -f' inside the container or check that all required repositories are configured for your distribution."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
# 2. APT/GPG signature verification failure
|
||||||
|
elif echo "$_log_tail" | grep -qE "sqv|KEYEXPIRED|NO_PUBKEY|key is not certified|signature verification failed|is not signed|Sub-process.*sqv"; then
|
||||||
|
if declare -f msg_warn >/dev/null 2>&1; then
|
||||||
|
msg_warn "APT repository signature error detected."
|
||||||
|
msg_warn "Hint: A repository GPG key may be missing, expired, or the keyring file is not yet present (/usr/share/postgresql-common/pgdg/apt.postgresql.org.asc etc.)."
|
||||||
|
msg_warn "Hint: Install the 'postgresql-common' package first, or re-add the repository with its correct signing key."
|
||||||
|
fi
|
||||||
|
# 3. Network / DNS failure during apt-get or curl
|
||||||
|
elif echo "$_log_tail" | grep -qE "Could not resolve|Failed to fetch|Unable to connect|Name or service not known|Network is unreachable|curl.*resolve"; then
|
||||||
|
if declare -f msg_warn >/dev/null 2>&1; then
|
||||||
|
msg_warn "Network or DNS failure detected."
|
||||||
|
msg_warn "Hint: Check the container's network connectivity, DNS settings, and whether any firewall or ad-blocker is intercepting traffic."
|
||||||
|
fi
|
||||||
|
# 4. APT lock held by another process
|
||||||
|
elif echo "$_log_tail" | grep -qE "Could not get lock|dpkg frontend lock|waiting for it to exit|E: Unable to lock"; then
|
||||||
|
if declare -f msg_warn >/dev/null 2>&1; then
|
||||||
|
msg_warn "APT or dpkg lock conflict detected."
|
||||||
|
msg_warn "Hint: Another package manager process may be running. Try 'rm /var/lib/dpkg/lock-frontend && dpkg --configure -a' inside the container."
|
||||||
|
fi
|
||||||
|
# 5. Disk space exhaustion
|
||||||
|
elif echo "$_log_tail" | grep -qE "No space left on device|disk quota exceeded|ENOSPC"; then
|
||||||
|
if declare -f msg_warn >/dev/null 2>&1; then
|
||||||
|
msg_warn "Disk space exhausted during installation."
|
||||||
|
msg_warn "Hint: Increase the container's disk size (pct resize <ctid> rootfs +2G) or clean up space first."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
# Detect context: Container (INSTALL_LOG set + inside container /root) vs Host
|
# Detect context: Container (INSTALL_LOG set + inside container /root) vs Host
|
||||||
if [[ -n "${INSTALL_LOG:-}" && -f "${INSTALL_LOG:-}" && -d /root ]]; then
|
if [[ -n "${INSTALL_LOG:-}" && -f "${INSTALL_LOG:-}" && -d /root ]]; then
|
||||||
# CONTAINER CONTEXT: Copy log and create flag file for host
|
# CONTAINER CONTEXT: Copy log and create flag file for host
|
||||||
|
|||||||
1592
misc/tools.func
1592
misc/tools.func
File diff suppressed because it is too large
Load Diff
@@ -47,7 +47,7 @@ function msg_ok() {
|
|||||||
function msg_error() { echo -e "${RD}✗ $1${CL}"; }
|
function msg_error() { echo -e "${RD}✗ $1${CL}"; }
|
||||||
|
|
||||||
# This function checks the version of Proxmox Virtual Environment (PVE) and exits if the version is not supported.
|
# This function checks the version of Proxmox Virtual Environment (PVE) and exits if the version is not supported.
|
||||||
# Supported: Proxmox VE 8.0.x – 8.9.x and 9.0–9.1.x
|
# Supported: Proxmox VE 8.0.x – 8.9.x and 9.0–9.x
|
||||||
pve_check() {
|
pve_check() {
|
||||||
local PVE_VER
|
local PVE_VER
|
||||||
PVE_VER="$(pveversion | awk -F'/' '{print $2}' | awk -F'-' '{print $1}')"
|
PVE_VER="$(pveversion | awk -F'/' '{print $2}' | awk -F'-' '{print $1}')"
|
||||||
@@ -63,20 +63,14 @@ pve_check() {
|
|||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check for Proxmox VE 9.x: allow 9.0–9.1.x
|
# Check for Proxmox VE 9.x: allow 9.0–9.x
|
||||||
if [[ "$PVE_VER" =~ ^9\.([0-9]+) ]]; then
|
if [[ "$PVE_VER" =~ ^9\.([0-9]+) ]]; then
|
||||||
local MINOR="${BASH_REMATCH[1]}"
|
|
||||||
if ((MINOR < 0 || MINOR > 1)); then
|
|
||||||
msg_error "This version of Proxmox VE is not yet supported."
|
|
||||||
msg_error "Supported: Proxmox VE version 9.0–9.1.x"
|
|
||||||
exit 105
|
|
||||||
fi
|
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# All other unsupported versions
|
# All other unsupported versions
|
||||||
msg_error "This version of Proxmox VE is not supported."
|
msg_error "This version of Proxmox VE is not supported."
|
||||||
msg_error "Supported versions: Proxmox VE 8.0 – 8.9 or 9.0–9.1.x"
|
msg_error "Supported versions: Proxmox VE 8.0 – 8.9 or 9.0–9.x"
|
||||||
exit 105
|
exit 105
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -811,13 +811,7 @@ update_tags() {
|
|||||||
if [[ "$type" == "lxc" ]]; then
|
if [[ "$type" == "lxc" ]]; then
|
||||||
pct set "${vmid}" -tags "$(IFS=';'; echo "${next_tags[*]}")" &>/dev/null
|
pct set "${vmid}" -tags "$(IFS=';'; echo "${next_tags[*]}")" &>/dev/null
|
||||||
else
|
else
|
||||||
local vm_config="/etc/pve/qemu-server/${vmid}.conf"
|
qm set "${vmid}" --tags "$(IFS=';'; echo "${next_tags[*]}")" &>/dev/null
|
||||||
if [[ -f "$vm_config" ]]; then
|
|
||||||
sed -i '/^tags:/d' "$vm_config"
|
|
||||||
if [[ ${#next_tags[@]} -gt 0 ]]; then
|
|
||||||
echo "tags: $(IFS=';'; echo "${next_tags[*]}")" >> "$vm_config"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
# Tags unchanged
|
# Tags unchanged
|
||||||
|
|||||||
Reference in New Issue
Block a user