Compare commits

..
Author SHA1 Message Date
community-scripts-pr-app[bot]andgithub-actions[bot] 41ad683454 Update CHANGELOG.md (#17536)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-09-26 20:11:56 +00:00
sergstepanenko 44a22d77d3 Manyfold: chown /opt/manyfold_data to the manyfold user (#17534) 2026-09-26 22:11:31 +02:00
community-scripts-pr-app[bot]andgithub-actions[bot] ebe02e9c93 Update CHANGELOG.md (#17533)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-09-26 19:02:25 +00:00
community-scripts-pr-app[bot]andgithub-actions[bot] 11e409f499 Update CHANGELOG.md (#17532)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-09-26 19:02:09 +00:00
CanbiZ (MickLesk) 42442ca968 Let steamcmd update itself before installing Satisfactory (#17526)
On the run in which steamcmd replaces itself, the app_update that follows fails
with 'Missing configuration', and the same command succeeds once it runs again.
A login-only run first takes that self-update out of the install and update.
2026-09-26 21:01:56 +02:00
CanbiZ (MickLesk) 0e28ea7fe1 Build the AudioMuse-AI noavx2 environment on Python 3.11 (#17528)
The noavx2 requirements pin numpy 1.23.5 and onnx 1.14.1, neither of which ships
a cp312 wheel, so on 3.12 uv built them from source: numpy fails without
distutils and onnx without cmake. Every noavx2 pin has a 3.11 wheel.
2026-09-26 21:01:46 +02:00
CanbiZ (MickLesk) 9db16c2073 Hold @lobehub/ui at 5.49 while LobeHub's stable release needs it (#17531)
@lobehub/ui 5.50.0 dropped NeuralNetworkLoading, and LobeHub 2.2.18 still imports
it through a ^5.47.0 range with lockfile: false, so every fresh build now fails.
Upstream moved off it on main; the pin only applies while package.json still asks
for a 5.4x range, so it stops on its own with the next stable release.
2026-09-26 21:01:28 +02:00
community-scripts-pr-app[bot]andgithub-actions[bot] 8a3d372171 Update CHANGELOG.md (#17530)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-09-26 18:55:44 +00:00
community-scripts-pr-app[bot]andgithub-actions[bot] 306eb3a54d Update CHANGELOG.md (#17529)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-09-26 18:55:15 +00:00
CanbiZ (MickLesk) 5127c85ca7 Keep Trilium updates on the server releases (#17525)
The repo also publishes web-clipper-v* releases, and whenever upstream marked one
of those as latest the update offered to replace the server with the browser
extension. A v prefix makes core pick the newest stable server release itself
instead of trusting that marking.
2026-09-26 20:54:46 +02:00
community-scripts-pr-app[bot]andgithub-actions[bot] 4bca45dfc1 Update CHANGELOG.md (#17527)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-09-26 18:51:39 +00:00
CanbiZ (MickLesk) 83a4addccd Generate the NPM admin config and repair certbot's venv on update (#17523)
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:51:17 +02:00
community-scripts-pr-app[bot]andgithub-actions[bot] 968cf0c155 Update CHANGELOG.md (#17524)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-09-26 18:49:30 +00:00
CanbiZ (MickLesk) dce092a0a4 Komodo: add KOMODO_HOST | fix broken spinner (#17481)
* Check Komodo actually started and point KOMODO_HOST at the container

* Stop Komodo hanging on an unclosed message block
2026-09-26 20:49:03 +02:00
community-scripts-pr-app[bot]andgithub-actions[bot] 4bdb61cdf4 Update CHANGELOG.md (#17522)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-09-26 18:37:51 +00:00
David BarreraandClaude Opus 5.5 9489724d86 romm: run rq cron and a scans worker for RomM 5.3 (#17502)
RomM 5.3.0 dropped rq-scheduler (rommapp/romm@4e5921727), so
romm-scheduler.service fails with 203/EXEC on a missing
.venv/bin/rqscheduler. The same release moved scans to their own
"scans" queue (rommapp/romm@3593d2398), which the LXC worker never
listened on, so scans queued but never ran.

Match upstream's docker init: the scheduler service runs
`rq cron tasks.cron_config`, both workers run with --with-scheduler
so delayed jobs (watcher rescans) are released, and a new
romm-scan-worker.service consumes the scans queue.

The update script migrates existing units when romm-scheduler.service
still references rqscheduler. It runs before the release check, so
installs already on 5.3.x get repaired too.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-26 20:37:22 +02:00
14 changed files with 87 additions and 17 deletions
+15
View File
@@ -550,10 +550,25 @@ 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
+3 -1
View File
@@ -41,6 +41,7 @@ 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"
@@ -49,6 +50,7 @@ function update_script() {
cpu-noavx2)
REQ_COMMON="common-noavx2.txt"
REQ_ACCEL="cpu-noavx2.txt"
PY_VERSION="3.11"
;;
*)
REQ_ACCEL="cpu.txt"
@@ -57,7 +59,7 @@ function update_script() {
msg_info "Updating Python Environment (${AUDIOMUSE_BACKEND})"
cd /opt/audiomuse-ai
$STD uv venv --seed --python 3.12 /opt/audiomuse-ai/.venv
$STD uv venv --seed --python "$PY_VERSION" /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_info "This is a one-time migration. After this, you can update ${APP} anytime with:"
msg_custom "ℹ️" "${YW}" "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,6 +46,9 @@ 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
+19 -3
View File
@@ -40,9 +40,25 @@ 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-scheduler romm-watcher
systemctl stop romm-backend romm-worker romm-scan-worker romm-scheduler romm-watcher
msg_ok "Stopped Services"
create_backup /opt/romm/.env
@@ -231,14 +247,14 @@ DROPEOF
fi
msg_info "Starting Services"
systemctl start romm-backend romm-worker romm-scheduler romm-watcher
systemctl start romm-backend romm-worker romm-scan-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-scheduler romm-watcher
systemctl restart romm-backend romm-worker romm-scan-worker romm-scheduler romm-watcher
msg_ok "Updated EmulatorJS successfully"
fi
exit
+1
View File
@@ -39,6 +39,7 @@ 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"; then
if check_for_gh_release "Trilium" "TriliumNext/Trilium" "" "" "v"; 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"
fetch_and_deploy_gh_release "Trilium" "TriliumNext/Trilium" "prebuild" "latest" "/opt/trilium" "TriliumNotes-Server-*linux-$(arch_resolve "x64" "arm64").tar.xz" "v"
msg_info "Restoring Database"
mkdir -p "$(dirname "${DB_RESTORE_PATH}")"
+3 -1
View File
@@ -42,6 +42,7 @@ if [[ "$var_backend" == "auto" ]]; then
fi
REQ_COMMON="common.txt"
PY_VERSION="3.12"
case "$var_backend" in
gpu)
REQ_ACCEL="gpu.txt"
@@ -53,6 +54,7 @@ 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)"
@@ -62,7 +64,7 @@ esac
msg_info "Setting up Python Environment (${var_backend}, Patience)"
cd /opt/audiomuse-ai
$STD uv venv --seed --python 3.12 /opt/audiomuse-ai/.venv
$STD uv venv --seed --python "$PY_VERSION" /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,6 +41,9 @@ 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}
chown -R manyfold:manyfold {/home/manyfold,/opt/manyfold,/opt/manyfold_data}
chmod +x /opt/manyfold/user_setup.sh
$STD sudo -u manyfold bash /opt/manyfold/user_setup.sh
+22 -5
View File
@@ -381,7 +381,26 @@ Type=simple
WorkingDirectory=/opt/romm/backend
EnvironmentFile=/opt/romm/.env
Environment="PYTHONPATH=/opt/romm/backend"
ExecStart=/opt/romm/.venv/bin/rq worker --path /opt/romm/backend --url redis://127.0.0.1:6379/0 high default low
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
Restart=on-failure
RestartSec=5
@@ -400,9 +419,7 @@ Type=simple
WorkingDirectory=/opt/romm/backend
EnvironmentFile=/opt/romm/.env
Environment="PYTHONPATH=/opt/romm/backend"
Environment="RQ_REDIS_HOST=127.0.0.1"
Environment="RQ_REDIS_PORT=6379"
ExecStart=/opt/romm/.venv/bin/rqscheduler --path /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
Restart=on-failure
RestartSec=5
@@ -429,7 +446,7 @@ RestartSec=5
WantedBy=multi-user.target
EOF
systemctl enable -q --now romm-backend romm-worker romm-scheduler romm-watcher
systemctl enable -q --now romm-backend romm-worker romm-scan-worker romm-scheduler romm-watcher
msg_ok "Created Services"
motd_ssh
+1
View File
@@ -35,6 +35,7 @@ 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"
fetch_and_deploy_gh_release "Trilium" "TriliumNext/Trilium" "prebuild" "latest" "/opt/trilium" "TriliumNotes-Server-*linux-$(arch_resolve "x64" "arm64").tar.xz" "v"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/trilium.service
+12 -2
View File
@@ -199,6 +199,7 @@ 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}"
@@ -214,14 +215,23 @@ function install() {
} >>~/komodo.creds
echo ""
msg_ok "${APP} is reachable at: ${BL}http://${LOCAL_IP}:${DEFAULT_PORT}${CL}"
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
echo ""
echo -e " Komodo Credentials"
echo -e " =================="
echo -e " User : admin"
echo -e " Password: ${ADMIN_PASSWORD}"
echo ""
msg_info "Credentials saved to ~/komodo.creds"
msg_ok "Credentials saved to ~/komodo.creds"
}
# ==============================================================================