Compare commits

..
Author SHA1 Message Date
MickLesk 8ab8a4cb1c Generate the NPM admin config and repair certbot's venv on update
2.16.0 ships production.conf only as a template that its s6 prepare step renders,
so installs outside Docker never listened on 81; render it on install, on update
while keeping a custom admin port, and on update for containers already stuck on
2.16.0. Certbot's upgrade died on a dist-info without RECORD, which pip's own
--ignore-installed hint does not clear, so drop such records before upgrading.
2026-09-26 20:44:07 +02:00
14 changed files with 17 additions and 87 deletions
-15
View File
@@ -550,25 +550,10 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Manyfold: make /opt/manyfold_data writable for the manyfold user [@sergstepanenko](https://github.com/sergstepanenko) ([#17534](https://github.com/community-scripts/ProxmoxVE/pull/17534))
- steamcmd: update itself before installing Satisfactory [@MickLesk](https://github.com/MickLesk) ([#17526](https://github.com/community-scripts/ProxmoxVE/pull/17526))
- AudioMuse-AI: build noavx2 environment on Python 3.11 [@MickLesk](https://github.com/MickLesk) ([#17528](https://github.com/community-scripts/ProxmoxVE/pull/17528))
- LobeHub: pin lobehub/ui at 5.49 while LobeHub's stable release needs it [@MickLesk](https://github.com/MickLesk) ([#17531](https://github.com/community-scripts/ProxmoxVE/pull/17531))
- Keep Trilium updates on the server releases [@MickLesk](https://github.com/MickLesk) ([#17525](https://github.com/community-scripts/ProxmoxVE/pull/17525))
- NginxProxyManager: generate admin config and repair certbot's venv on update [@MickLesk](https://github.com/MickLesk) ([#17523](https://github.com/community-scripts/ProxmoxVE/pull/17523))
- Komodo: add KOMODO_HOST | fix broken spinner [@MickLesk](https://github.com/MickLesk) ([#17481](https://github.com/community-scripts/ProxmoxVE/pull/17481))
- romm: run rq cron and a scans worker for RomM 5.3 [@davidbb](https://github.com/davidbb) ([#17502](https://github.com/community-scripts/ProxmoxVE/pull/17502))
- #### 💥 Breaking Changes
- Semaphore: fix BoltDB migration by pinning 2.18.30 [@MickLesk](https://github.com/MickLesk) ([#17439](https://github.com/community-scripts/ProxmoxVE/pull/17439))
### 💾 Core
- Keep a dash-led bridge comment out of whiptail's options [@MickLesk](https://github.com/MickLesk) ([core#74](https://github.com/community-scripts/core/pull/74))
## 2026-09-25
### 🆕 New Scripts
+1 -3
View File
@@ -41,7 +41,6 @@ function update_script() {
AUDIOMUSE_BACKEND="$(cat /opt/audiomuse-ai_data/.backend 2>/dev/null || echo cpu)"
REQ_COMMON="common.txt"
PY_VERSION="3.12"
case "$AUDIOMUSE_BACKEND" in
gpu)
REQ_ACCEL="gpu.txt"
@@ -50,7 +49,6 @@ function update_script() {
cpu-noavx2)
REQ_COMMON="common-noavx2.txt"
REQ_ACCEL="cpu-noavx2.txt"
PY_VERSION="3.11"
;;
*)
REQ_ACCEL="cpu.txt"
@@ -59,7 +57,7 @@ function update_script() {
msg_info "Updating Python Environment (${AUDIOMUSE_BACKEND})"
cd /opt/audiomuse-ai
$STD uv venv --seed --python "$PY_VERSION" /opt/audiomuse-ai/.venv
$STD uv venv --seed --python 3.12 /opt/audiomuse-ai/.venv
$STD uv pip install --python /opt/audiomuse-ai/.venv \
-r "/opt/audiomuse-ai/requirements/${REQ_COMMON}" \
-r "/opt/audiomuse-ai/requirements/${REQ_ACCEL}"
+1 -1
View File
@@ -36,7 +36,7 @@ function update_script() {
msg_warn "⚠️ ${APP} has been migrated to an addon script."
echo ""
msg_custom "ℹ️" "${YW}" "This is a one-time migration. After this, you can update ${APP} anytime with:"
msg_info "This is a one-time migration. After this, you can update ${APP} anytime with:"
echo -e "${TAB}${TAB}${GN}update_komodo${CL} or ${GN}bash <(curl -fsSL ${ADDON_SCRIPT})${CL}"
echo ""
read -r -p "${TAB}Migrate update function now? [y/N]: " CONFIRM
-3
View File
@@ -46,9 +46,6 @@ function update_script() {
msg_info "Building Application"
cd /opt/lobehub
export NODE_OPTIONS="--max-old-space-size=8192"
if grep -qE '"@lobehub/ui": "\^5\.4[0-9]\.' package.json; then
sed -i "/^overrides:/a\ '@lobehub/ui': ~5.49.1" pnpm-workspace.yaml
fi
$STD pnpm install
$STD pnpm run build:docker
unset NODE_OPTIONS
+3 -19
View File
@@ -40,25 +40,9 @@ function update_script() {
NODE_VERSION="24" setup_nodejs
# RomM 5.3.0 replaced rq-scheduler with `rq cron` and moved scans to their own queue
if grep -q rqscheduler /etc/systemd/system/romm-scheduler.service 2>/dev/null; then
msg_info "Migrating RQ services"
sed -i -e '/RQ_REDIS_/d' \
-e 's|^ExecStart=.*|ExecStart=/opt/romm/.venv/bin/rq cron --path /opt/romm/backend --url redis://127.0.0.1:6379/0 tasks.cron_config|' \
/etc/systemd/system/romm-scheduler.service
sed -i 's|bin/rq worker --path|bin/rq worker --with-scheduler --path|' /etc/systemd/system/romm-worker.service
sed -e 's|^Description=.*|Description=RomM RQ Scan Worker|' \
-e 's|^ExecStart=.*|ExecStart=/opt/romm/.venv/bin/rq worker --with-scheduler --path /opt/romm/backend --url redis://127.0.0.1:6379/0 scans|' \
/etc/systemd/system/romm-worker.service >/etc/systemd/system/romm-scan-worker.service
systemctl daemon-reload
systemctl enable -q --now romm-scan-worker
systemctl restart romm-worker romm-scheduler
msg_ok "Migrated RQ services"
fi
if check_for_gh_release "romm" "rommapp/romm"; then
msg_info "Stopping Services"
systemctl stop romm-backend romm-worker romm-scan-worker romm-scheduler romm-watcher
systemctl stop romm-backend romm-worker romm-scheduler romm-watcher
msg_ok "Stopped Services"
create_backup /opt/romm/.env
@@ -247,14 +231,14 @@ DROPEOF
fi
msg_info "Starting Services"
systemctl start romm-backend romm-worker romm-scan-worker romm-scheduler romm-watcher
systemctl start romm-backend romm-worker romm-scheduler romm-watcher
msg_ok "Started Services"
msg_ok "Updated successfully"
fi
if check_for_gh_release "EmulatorJS" "EmulatorJS/EmulatorJS" "v4.2.3"; then
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "EmulatorJS" "EmulatorJS/EmulatorJS" "prebuild" "v4.2.3" "/opt/romm/frontend/dist/assets/emulatorjs" "4.2.3.7z"
systemctl restart romm-backend romm-worker romm-scan-worker romm-scheduler romm-watcher
systemctl restart romm-backend romm-worker romm-scheduler romm-watcher
msg_ok "Updated EmulatorJS successfully"
fi
exit
-1
View File
@@ -39,7 +39,6 @@ function update_script() {
create_backup /home/steam/.config/Epic/FactoryGame/Saved
msg_info "Updating Satisfactory"
$STD runuser -u steam -- /opt/steamcmd/steamcmd.sh +login anonymous +quit || true
if $STD runuser -u steam -- /opt/steamcmd/steamcmd.sh \
+force_install_dir /opt/satisfactory/server \
+login anonymous \
+2 -2
View File
@@ -30,7 +30,7 @@ function update_script() {
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "Trilium" "TriliumNext/Trilium" "" "" "v"; then
if check_for_gh_release "Trilium" "TriliumNext/Trilium"; then
if [[ -d /opt/trilium/db ]]; then
DB_PATH="/opt/trilium/db"
DB_RESTORE_PATH="/opt/trilium/db"
@@ -53,7 +53,7 @@ function update_script() {
rm -rf /opt/trilium
msg_ok "Backed up Database"
fetch_and_deploy_gh_release "Trilium" "TriliumNext/Trilium" "prebuild" "latest" "/opt/trilium" "TriliumNotes-Server-*linux-$(arch_resolve "x64" "arm64").tar.xz" "v"
fetch_and_deploy_gh_release "Trilium" "TriliumNext/Trilium" "prebuild" "latest" "/opt/trilium" "TriliumNotes-Server-*linux-$(arch_resolve "x64" "arm64").tar.xz"
msg_info "Restoring Database"
mkdir -p "$(dirname "${DB_RESTORE_PATH}")"
+1 -3
View File
@@ -42,7 +42,6 @@ if [[ "$var_backend" == "auto" ]]; then
fi
REQ_COMMON="common.txt"
PY_VERSION="3.12"
case "$var_backend" in
gpu)
REQ_ACCEL="gpu.txt"
@@ -54,7 +53,6 @@ cpu)
cpu-noavx2)
REQ_COMMON="common-noavx2.txt"
REQ_ACCEL="cpu-noavx2.txt"
PY_VERSION="3.11"
;;
*)
msg_error "Unknown var_backend '${var_backend}' (expected auto, gpu, cpu or cpu-noavx2)"
@@ -64,7 +62,7 @@ esac
msg_info "Setting up Python Environment (${var_backend}, Patience)"
cd /opt/audiomuse-ai
$STD uv venv --seed --python "$PY_VERSION" /opt/audiomuse-ai/.venv
$STD uv venv --seed --python 3.12 /opt/audiomuse-ai/.venv
$STD uv pip install --python /opt/audiomuse-ai/.venv \
-r "/opt/audiomuse-ai/requirements/${REQ_COMMON}" \
-r "/opt/audiomuse-ai/requirements/${REQ_ACCEL}"
-3
View File
@@ -41,9 +41,6 @@ export DATABASE_DRIVER="node"
export KEY_VAULTS_SECRET="$(openssl rand -base64 32)"
export AUTH_SECRET="$(openssl rand -base64 32)"
export APP_URL="http://localhost:3210"
if grep -qE '"@lobehub/ui": "\^5\.4[0-9]\.' package.json; then
sed -i "/^overrides:/a\ '@lobehub/ui': ~5.49.1" pnpm-workspace.yaml
fi
$STD pnpm install
$STD pnpm run build:docker
msg_ok "Built Application"
+1 -1
View File
@@ -80,7 +80,7 @@ $STD mkdir -p /opt/manyfold_data
msg_ok "Configured Manyfold"
msg_info "Installing Manyfold"
chown -R manyfold:manyfold {/home/manyfold,/opt/manyfold,/opt/manyfold_data}
chown -R manyfold:manyfold {/home/manyfold,/opt/manyfold}
chmod +x /opt/manyfold/user_setup.sh
$STD sudo -u manyfold bash /opt/manyfold/user_setup.sh
+5 -22
View File
@@ -381,26 +381,7 @@ Type=simple
WorkingDirectory=/opt/romm/backend
EnvironmentFile=/opt/romm/.env
Environment="PYTHONPATH=/opt/romm/backend"
ExecStart=/opt/romm/.venv/bin/rq worker --with-scheduler --path /opt/romm/backend --url redis://127.0.0.1:6379/0 high default low
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
cat <<EOF >/etc/systemd/system/romm-scan-worker.service
[Unit]
Description=RomM RQ Scan Worker
After=network.target mariadb.service redis-server.service romm-backend.service
Requires=mariadb.service redis-server.service
[Service]
Type=simple
WorkingDirectory=/opt/romm/backend
EnvironmentFile=/opt/romm/.env
Environment="PYTHONPATH=/opt/romm/backend"
ExecStart=/opt/romm/.venv/bin/rq worker --with-scheduler --path /opt/romm/backend --url redis://127.0.0.1:6379/0 scans
ExecStart=/opt/romm/.venv/bin/rq worker --path /opt/romm/backend --url redis://127.0.0.1:6379/0 high default low
Restart=on-failure
RestartSec=5
@@ -419,7 +400,9 @@ Type=simple
WorkingDirectory=/opt/romm/backend
EnvironmentFile=/opt/romm/.env
Environment="PYTHONPATH=/opt/romm/backend"
ExecStart=/opt/romm/.venv/bin/rq cron --path /opt/romm/backend --url redis://127.0.0.1:6379/0 tasks.cron_config
Environment="RQ_REDIS_HOST=127.0.0.1"
Environment="RQ_REDIS_PORT=6379"
ExecStart=/opt/romm/.venv/bin/rqscheduler --path /opt/romm/backend
Restart=on-failure
RestartSec=5
@@ -446,7 +429,7 @@ RestartSec=5
WantedBy=multi-user.target
EOF
systemctl enable -q --now romm-backend romm-worker romm-scan-worker romm-scheduler romm-watcher
systemctl enable -q --now romm-backend romm-worker romm-scheduler romm-watcher
msg_ok "Created Services"
motd_ssh
-1
View File
@@ -35,7 +35,6 @@ fetch_and_deploy_from_url \
chown -R steam:steam /opt/steamcmd
msg_info "Installing Satisfactory Dedicated Server"
$STD runuser -u steam -- /opt/steamcmd/steamcmd.sh +login anonymous +quit || true
$STD runuser -u steam -- /opt/steamcmd/steamcmd.sh \
+force_install_dir /opt/satisfactory/server \
+login anonymous \
+1 -1
View File
@@ -13,7 +13,7 @@ setting_up_container
network_check
update_os
fetch_and_deploy_gh_release "Trilium" "TriliumNext/Trilium" "prebuild" "latest" "/opt/trilium" "TriliumNotes-Server-*linux-$(arch_resolve "x64" "arm64").tar.xz" "v"
fetch_and_deploy_gh_release "Trilium" "TriliumNext/Trilium" "prebuild" "latest" "/opt/trilium" "TriliumNotes-Server-*linux-$(arch_resolve "x64" "arm64").tar.xz"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/trilium.service
+2 -12
View File
@@ -199,7 +199,6 @@ function install() {
sed -i "s/^KOMODO_INIT_ADMIN_PASSWORD=changeme/KOMODO_INIT_ADMIN_PASSWORD=${ADMIN_PASSWORD}/" "$COMPOSE_ENV"
sed -i "s/^KOMODO_WEBHOOK_SECRET=.*/KOMODO_WEBHOOK_SECRET=${WEBHOOK_SECRET}/" "$COMPOSE_ENV"
sed -i "s/^KOMODO_JWT_SECRET=.*/KOMODO_JWT_SECRET=${JWT_SECRET}/" "$COMPOSE_ENV"
sed -i "s|^KOMODO_HOST=.*|KOMODO_HOST=http://${LOCAL_IP}:${DEFAULT_PORT}|" "$COMPOSE_ENV"
msg_ok "Configured environment"
msg_info "Starting ${APP}"
@@ -215,23 +214,14 @@ function install() {
} >>~/komodo.creds
echo ""
msg_info "Waiting for ${APP} to answer"
for _ in $(seq 1 60); do
curl -fsS --max-time 3 "http://127.0.0.1:${DEFAULT_PORT}" >/dev/null 2>&1 && break
sleep 3
done
if curl -fsS --max-time 3 "http://127.0.0.1:${DEFAULT_PORT}" >/dev/null 2>&1; then
msg_ok "${APP} is reachable at: ${BL}http://${LOCAL_IP}:${DEFAULT_PORT}${CL}"
else
msg_error "${APP} did not come up - check: docker logs komodo-core-1"
fi
msg_ok "${APP} is reachable at: ${BL}http://${LOCAL_IP}:${DEFAULT_PORT}${CL}"
echo ""
echo -e " Komodo Credentials"
echo -e " =================="
echo -e " User : admin"
echo -e " Password: ${ADMIN_PASSWORD}"
echo ""
msg_ok "Credentials saved to ~/komodo.creds"
msg_info "Credentials saved to ~/komodo.creds"
}
# ==============================================================================