Commit Graph
100 Commits
Author SHA1 Message Date
CanbiZ (MickLesk) df10e1d2dd Technitium DNS: read the version from its GitHub releases (#18425)
The version came from scraping technitium.com, which failed for some hosts ("Command substitution exited with status 1", 6 runs on 4 hosts in three days) and has no rate-limit fallback. The GitHub release carries the same version and goes through the engine's release lookup.
2026-11-06 23:50:54 +01:00
CanbiZ (MickLesk) 50c5b786e4 Caddy: skip the xCaddy test build below 2 GB RAM (#18472)
* fix(caddy): skip the xCaddy test build below 2 GB RAM

The container defaults to 512 MB (256 MB on Alpine), and Go's linker was
killed in xcaddy build: 14 runs on 6 hosts in a week. The build only
produced an unused binary, so below 2 GB xCaddy is installed without it
and a warning says why; install and update alike.

* Change directory to /opt before building xCaddy
2026-11-06 23:50:49 +01:00
CanbiZ (MickLesk) 3c0e693c2d fix(thingsboard): keep the package defaults in thingsboard.conf (#18499)
The install replaced the file, which dropped JAVA_OPTS with install.data_dir, so creating a tenant failed. The DB settings are now appended, and an update restores the defaults on existing containers. The package upgrade keeps the edited file. Fixes #18483.
2026-11-06 23:50:29 +01:00
CanbiZ (MickLesk) 1a2bbb06bb fix(nexterm): keep the extracted app out of the /tmp cleanup (#18501)
The server unpacks its frontend into /tmp/nexterm-sea-*. systemd-tmpfiles removes it after 10 days while the process keeps running, and every page returns 404. Fixes #18488.
2026-11-06 23:46:31 +01:00
CanbiZ (MickLesk) bc348949c4 fix(planka): run the service with node instead of nodemon (#18503)
npm 12 rejects --prod, and --production still starts PLANKA through nodemon. Starting node app.js directly needs HOME: Sails 1.5.18 only looks for the project's .sailsrc when HOME is set, and systemd sets none without User=, so the app lifted with the wrong paths and returned 503. The unit now sets NODE_ENV and HOME, and an update repairs existing units even without a new release. Follow-up to #18477.
2026-11-06 23:42:25 +01:00
CanbiZ (MickLesk) 5720358d1b MeTube/Yubal: install Deno without its shell setup (#18406)
* MeTube: install Deno without its shell setup

With -y, deno's install.sh also fetches jsr:@deno/installer-shell-setup to edit the shell profile, and when jsr.io did not answer the install stopped ("JSR package manifest ... failed to load"). Deno goes to /usr/local/bin, which is on PATH, so the shell setup is not needed; CI=1 keeps the installer from asking for it on a terminal.

* Modify Deno installation command

Update Deno installation command to include CI environment variable.
2026-11-06 23:42:22 +01:00
CanbiZ (MickLesk) c5c406b392 OPNsense VM: size the temp space check to the unpacked image | say why the EFI disk could not be allocated (#18404)
* OPNsense VM: size the temp space check to the unpacked image

The script refused to run unless TEMP_DIR had 20 GB free, a figure left
over from when the download went there too. The download now goes to the
image cache and only the unpacked FreeBSD image (2.5 GB) lands in
TEMP_DIR, so hosts with 8 to 16 GB free in /tmp stopped with exit 214.
Check the size xz reports for the image instead.

* OPNsense VM: say why the EFI disk could not be allocated

pvesm's error went to stderr only, so the two exit 220 runs in telemetry
carry no reason. As msg_error it reaches the log and the trace, e.g.
"disk image '.../vm-969-disk-0.qcow2' already exists" after an earlier
run left its disk on a storage that qm destroy does not clean.

* Clean up comments in opnsense-vm.sh

Removed comments about image cache and size calculation.
2026-11-06 19:31:58 +01:00
CanbiZ (MickLesk) 5e5e840458 fix(openwrt-vm): leave the NIC untagged on a bridge without a port (#18473)
Advanced mode prefills the LAN VLAN with 999. On a bridge with no
physical port that is not VLAN-aware (an internal vmbr1, the usual LAN
choice) pve-bridge cannot tag the tap, and qm start failed with "no
physical interface on bridge 'vmbr1'". The tag is dropped there with a
warning, for LAN and WAN alike.

The scripts base still pointed at DevScripts, where this script was
removed on 10-09, so every run was reported as a DevScripts run.
2026-11-05 21:21:58 +01:00
CanbiZ (MickLesk) 94aa8e7ab0 fix(podman): skip Portainer where Podman has no Quadlet (#18469)
Portainer and the agent are written as Quadlet .container units, which
need Podman 4.4. Debian 12 ships 4.3.1, so systemctl start portainer
failed with "Unit portainer.service not found". Without Quadlet both
prompts are skipped with a warning.
2026-11-05 21:20:55 +01:00
CanbiZ (MickLesk) 6e6ca04f24 truenas-VM: let a failed ISO lookup reach its own error (#18476)
* fix(truenas-vm): let a failed ISO lookup reach its own error

When download.truenas.com did not answer, the lookup handed an empty
path to an associative array (bad array subscript) and the pipeline
failed under pipefail, so the run ended with exit 1 at the SELECTED_ISO
line instead of the "Could not find a stable ISO" message. The index
fetch now fails on HTTP errors and retries, empty lines are skipped, and
the assignment no longer aborts on an empty result.

* fix(truenas-vm): use the engine's retry flags for the ISO index
2026-11-05 21:17:45 +01:00
CanbiZ (MickLesk) df705aefc4 proxmox-mail-gateway: take the repo suite from the container (#18475)
* fix(proxmox-mail-gateway): take the repo suite from the container

The install hardcoded trixie, so a Debian 12 container got the PMG 9
repository and pmg-api could not resolve its trixie dependencies (held
broken packages). Suite and key now follow the container's codename;
bookworm still has PMG 8 with proxmox-mailgateway-container.

* fix(proxmox-mail-gateway): read the codename inline
2026-11-05 17:22:36 +01:00
CanbiZ (MickLesk) c55556144a Immich: Bump to 3.3.6 and minor improvement (#18474)
* fix(immich): take the watchfiles wheel and retry GeoNames longer

The v3.3.5 lock pins watchfiles 0.21.0, which has no wheel for the
Python 3.13 machine-learning venv, so every ML install downloaded a Rust
toolchain and compiled it. Where static.rust-lang.org reset the
connection, uv sync failed three times. --upgrade-package watchfiles
takes 1.3.0, an abi3 wheel; only uvicorn's reload mode uses it.

download.geonames.org dropped connections on 11-03/04 and the first file
failed after three 10 s connects; those four calls now retry six times
with a 30 s connect timeout.

* Immich: bump release version to v3.3.6

v3.3.6 disables onnxruntime's telemetry in immich_ml, which runs from
source here, so nothing else changes. The lock still pins watchfiles
0.21.0, so the wheel upgrade stays.
2026-11-05 16:31:37 +01:00
CanbiZ (MickLesk) 3e7fcf1350 Arcane: write both env names, stop shipping the unused .env (#18466)
The compose file from main now uses ARCANE_ENCRYPTION_KEY and
ARCANE_PROJECTS_DIRECTORY, which the latest image (2.17.3) does not read,
so it panicked on a missing ENCRYPTION_KEY. Arcane 3 in turn refuses to
start when only the old names are set. Install and update now keep both
names in compose.yaml, which also carries existing installs over to 3.

The .env was never referenced by the compose file, but compose parses it,
and the unanchored ENCRYPTION_KEY sed turned the renamed line into
ARCANE_#ENCRYPTION_KEY and broke every install. New installs no longer
download it; update repairs the broken line.
2026-11-05 11:56:39 +01:00
CanbiZ (MickLesk) 8ba3582919 OPNsense VM: wait for the FreeBSD login prompt instead of 180 seconds (#18467)
The FreeBSD image boots in under a minute when both NICs get DHCP, but
dhclient waits 60 seconds on each NIC without a DHCP server, which is the
normal case for a firewall's LAN before setup. On vx-pve an isolated LAN
took 110 seconds; the reporter of #18464 measured 210. The keys then went
into the boot output. The image prints its login prompt on the serial
console as well, so the script now reads serial0 and continues when it
appears, up to 15 minutes, or waits the old 3 minutes if the console
cannot be read.
2026-11-05 11:56:32 +01:00
CanbiZ (MickLesk) 37e4a33615 Tududi: run 2.0 on PostgreSQL, keep SQLite installs on 1.15.0 (#18465)
Tududi 2.0.0 dropped SQLite and refuses to start next to a populated 1.x
database. New installs set up PostgreSQL and let start.sh create the
schema; db:init would sync the tables without SequelizeMeta and make
db-prepare treat the database as an old 1.x one. Installs without
DATABASE_URL stay on 1.15.0, the final SQLite release, which also brings
back installs that already updated to 2.0.0.

Uploads lived in backend/uploads, which CLEAN_INSTALL wiped on every
update; they move to /opt/tududi-uploads.
2026-11-05 11:56:29 +01:00
CanbiZ (MickLesk) 667da6a8fb Install n8n past its unsatisfiable canvas dependencies (#18439)
n8n-nodes-base 2.46.0 moved @napi-rs/canvas-linux-arm64-musl and
-linux-x64-musl from optional into hard dependencies. npm enforces
os/cpu/libc on those, and no combination satisfies both arm64 and x64,
so every install fails with EBADPLATFORM. n8n 2.46.4 reached the latest
tag on 2026-11-03 and the failures started four minutes later.

--force skips the platform check. The matching gnu binary is still
installed through @napi-rs/canvas's own optional dependencies, so canvas
keeps working.
2026-11-04 10:22:46 +01:00
CanbiZ (MickLesk) ff5aac3889 Teable: add Redis cache (fixes #18449) (#18450) 2026-11-04 08:04:23 +01:00
CanbiZ (MickLesk) 5ee75b7460 Wiki.js: install 3.x (#18382)
* Wiki.js: install 3.x

Wiki.js 3 lives in requarks/wiki, needs Node.js 26 and creates its own ltree and pg_trgm extensions in the wiki schema, and starts with node --no-experimental-webstorage backend. dataPath moves out of the app folder, which every update replaces; the admin password is generated and saved to ~/wikijs.creds. Updates follow upstream's guide and put Puppeteer back when it was installed. 2.x containers keep getting 2.x updates from requarks/wiki-v2, since 3.x cannot upgrade them in place, and are told how to export and import.

* Refactor credential output to use heredoc syntax
2026-11-03 16:45:19 +01:00
CanbiZ (MickLesk) bffc871aa9 Flag instead of closing on first PR template miss; add script-request eligibility check (#18384)
close-invalid-pr-template.yml now comments and labels (missing pr template,
stale) instead of closing immediately, clears itself once fixed. stale_pr_close.yml
gains the engagement-gated/keep-open/maintainer-reset behavior already used in
DevScripts, so a template-stale PR only closes via its own re-check.

request-script.yml discussion template gets an optional Justification field;
a new workflow verifies stars/age against GitHub for the submitted repo and
either does nothing (eligible), labels investigation (ineligible + justified),
or closes the discussion (ineligible, no justification).

Moved the AI Assistance section to the end of pull_request_template.md.
2026-11-03 14:58:57 +01:00
CanbiZ (MickLesk) d77c65093b Say why an update-apps backup or restore failed (#18405)
vzdump and pct restore ran with their output thrown away, so a failed
backup only said "Backup failed for container N" (exit 235). That is the
second most common update-apps failure and none of them can be told
apart. Keep the output in the run log and put its error line in the
message, e.g. "CT is locked (backup)".

var_backup_storage was matched with grep -w, so "truenas" passed when
only "truenas-backup" exists and vzdump then failed on a storage that
does not exist. Match the whole name, and list the valid ones in the
error instead of a spinner line after it.

Name the app in "Update failed for container N", so a failed update
says which app's update failed. Declining the start dialog now exits 0
like the other tools instead of failing with whiptail's 1.
2026-11-03 14:58:35 +01:00
CanbiZ (MickLesk)andTobias 0973d1ccfb OpenWrt VM: read the stable release from downloads.openwrt.org (#18411)
* OpenWrt VM: read the stable release from downloads.openwrt.org

The version came from a line of text on the openwrt.org wiki front page.
One host got that page without the line three times in a row while
others resolved fine at the same moment, and the run ended with exit 115
before anything was downloaded. .versions.json on the download server
is what the OpenWrt firmware selector reads and names the stable release
explicitly.

* Update vm/openwrt-vm.sh

Co-authored-by: Tobias <96661824+CrazyWolf13@users.noreply.github.com>

---------

Co-authored-by: Tobias <96661824+CrazyWolf13@users.noreply.github.com>
2026-11-03 14:31:32 +01:00
CanbiZ (MickLesk) 11acd8db75 Keep host tools running when clear does not know the terminal (#18412)
clear exits 1 for a TERM the host has no terminfo entry for, such as
xterm-ghostty or xterm-kitty over SSH, and when TERM is unset under cron.
The tools that run under errexit died on it in header_info within a
second, before showing anything, which telemetry counts as
"exit_code=1 | General error" with no step for update-lxcs, update-repo,
fstrim, clean-lxcs, execute and storage-share-helper.

Fall back to the escape sequence the engine's _cs_clear uses.
2026-11-03 14:30:57 +01:00
CanbiZ (MickLesk) 2c4fbc01eb all-templates: answering No or Cancel is not a failure (#18423)
Both whiptail prompts ran bare under errexit, so No on the first question
or Cancel in the template list ended in the error handler and was reported
as a failed run (3 of 5 failures in three days).

Monitor-All is now stopped right before the download instead of at the
start, so leaving at a prompt no longer leaves it stopped.
2026-11-03 14:26:31 +01:00
CanbiZ (MickLesk) dd7a659f22 homebrew: skip service accounts when picking the user, survive a failed apt update (#18424)
The user was the first passwd entry with a UID from 1000 up. On a Proxmox
host with Ceph that is ceph (UID 64045, shell nologin), and su - ceph fails
with "This account is currently not available". Accounts without a login
shell are skipped now.

apt update on a host with the enterprise repository and no subscription exits
100 on the 401. apt_update_safe retries, says why and carries on, as the other
scripts already do since #17462.
2026-11-03 14:26:23 +01:00
CanbiZ (MickLesk) f9039c2ee7 Fedora VM: let the engine install libguestfs-tools (#18422)
The script ran its own apt-get update before installing
libguestfs-tools, so one broken or stale repository on the host (a 404
for a hand-added proxmox.com or debian.org entry) ended the run with
exit 100. vm_prepare_cloud_image installs the tools itself and carries
on when an update fails, so the install can still succeed from the
repositories that did update.
2026-11-03 14:26:21 +01:00
CanbiZ (MickLesk) 0d4e703d70 Cinephage: run the camoufox binary the package now ships (#18426)
Cinephage depends on camoufox instead of camoufox-js, whose bin is called camoufox, so the install stopped at "node_modules/.bin/camoufox-js: No such file or directory" (6 runs in three days).
2026-11-03 14:24:13 +01:00
CanbiZ (MickLesk) 5fa9846d37 Immich: fetch VectorChord from its new repo, skip Java, get GeoNames first (#18397)
- VectorChord moved to supervc-stack/VectorChord. With the GitHub API
  rate limited, core reads the release from github.com, finds no asset
  under the old name and stops with "No suitable .deb asset found".
- mise installed every tool in Immich's mise.toml. Java (for the Dart
  OpenAPI generator), terragrunt and opentofu are not needed for the
  plugin build, and the Java index timed out on slow links.
- GeoNames failed after the 1-3 h library build; it now downloads first.
- Stop on x86-64 CPUs without SSE4.2: the web build ends there with
  "Illegal instruction" after the libraries are built.
2026-11-03 14:23:44 +01:00
CanbiZ (MickLesk) 92737744ce AlmaLinux VM: report failures through the engine's error handler (#18418)
The script replaced the engine's error_handler with one that sent the
failed command as the exit code, so every failure reached telemetry as
exit 199 "exit code not reported", without the failed command or
category. Its signal traps sent words instead of codes the same way.

It also ran its own unguarded apt-get update for libguestfs-tools, so a
host with the enterprise repository and no subscription (401) stopped
there. vm_prepare_cloud_image installs the tools itself, tolerating a
repository that fails to update.
2026-11-03 14:23:03 +01:00
CanbiZ (MickLesk) 2fbb6e261c add-tailscale-lxc: start a stopped container and check its OS first (#18421)
The container menu lists stopped containers too, and pct exec on one exits
255: 12 of 41 failures in three days. Start it the way add-netbird-lxc does
and wait for its default route.

The install runs under bash, which an Alpine container from the template does
not have; lxc-attach then exits 127 before the Alpine branch is reached.
Install bash there first, and stop with a clear message on any OS other than
Debian, Ubuntu or Alpine instead of failing on apt-get.
2026-11-03 14:22:52 +01:00
CanbiZ (MickLesk) 39b3ed29ad WireGuard: give the Debian container 1 GB for WGDashboard (#18419)
WGDashboard builds its frontend with Vite during the install, and at 512 MB the kernel killed node: "Failed to compile frontend", then wg-dashboard would not start (11 runs in three days). The build finishes at 1 GB.
2026-11-03 14:20:44 +01:00
CanbiZ (MickLesk) d6e4427ac9 zabbix: use os specific apt packages (#18417)
* Zabbix: install on Debian 12 again

The install and the update fetched Zabbix's release package for Debian 13 and php8.4-pgsql, so a Debian 12 container stopped with "Unable to locate package php8.4-pgsql" (12 runs in three days). Zabbix publishes 7.0 and 7.4 for Debian 12 too: take the container's Debian version and the distribution's php-pgsql.

* Zabbix: leave the update as it was

The update refuses Debian 12 on purpose, so its release URL stays as it was.
2026-11-03 14:14:17 +01:00
CanbiZ (MickLesk) 770d89bb90 Refuse to run the PBS 4 upgrade on a Proxmox VE host (#18416)
Nothing checked that the host is a Backup Server. On a PVE host the
first step stopped only because tar found no /etc/proxmox-backup (exit
2); answering "no" to that backup would have gone on to delete
/etc/apt/sources.list.d/*.list, add the PBS repositories and
dist-upgrade. Stop with the same message post-pbs-install uses.
2026-11-03 14:14:11 +01:00
CanbiZ (MickLesk) e2b09a9fcd Discourse: build libvips 8.18 for its image worker (#18430)
Discourse enabled libvips image processing by default and its worker refuses anything older than 8.18; Debian 13 ships 8.16, so the service failed to boot after an update and on fresh installs. Build the latest libvips release from source like discourse_docker does, on install and on update when a new release is out.
2026-11-03 14:13:09 +01:00
CanbiZ (MickLesk) 96710d22f2 netdata: survive a failed apt update, leave quietly on Cancel (#18427)
The add-on runs on the Proxmox host, where the enterprise repository without a
subscription answers 401 and apt update exits 100 (2 of 3 failures in three
days). apt_update_safe retries, points at the enterprise repository and
carries on; the netdata repository was fetched fine.

Cancel in the first menu was reported as a failed run.
2026-11-03 14:12:57 +01:00
CanbiZ (MickLesk) cfecd0ed05 Wazuh: show the installer's own error when it fails (#18428)
wazuh-install.sh writes everything to ~/wazuh-install.output, so a failed run left only "bash exited with status 1" in the log and the telemetry (8 runs in three days, three of them with the default resources). The end of that output now goes into the install log.
2026-11-03 14:12:50 +01:00
CanbiZ (MickLesk) 61dcda815a Keep trimming when pct fstrim fails on one container (#18413)
pct fstrim exits 255 when the container is locked, for example while a
backup runs ("CT is locked (backup)"). Under errexit the command
substitution ended the whole run there, before the output check below it
and before the remaining containers, and telemetry filed it as
"DPKG: Fatal internal error". Print the result and go on instead.
2026-11-03 14:00:54 +01:00
CanbiZ (MickLesk) 2340816c4e Do not abort execute-lxcs on a container that is not Debian or Ubuntu (#18414)
The skip message printed $name, which is only set once a container has
run the command. When a non-Debian container (Alpine, for example) came
before any Debian one, set -u ended the run there with "name: unbound
variable" and exit 1; later it printed the previous container's name.
2026-11-03 13:59:54 +01:00
CanbiZ (MickLesk) 7700d7ce36 Offer only container-capable storages as the converter's restore target (#18415)
The target list came from storages with "images" content, but pct
restore puts the container's rootfs there and refuses a storage without
"rootdir" ("storage 'X' does not support container directories"). A
storage that holds VM disks only was offered, and picking it ended the
run after the backup with "Conversion failed" (exit 235).
2026-11-03 13:59:51 +01:00
CanbiZ (MickLesk) 8dc0d17740 Let post-pve-install go on when legacy sources are kept (#18403)
On a PVE 9 host without deb822 .sources files the script asks whether to
disable the legacy .list sources, then read the answer from $? on the
next line. Under set -e a "No" ended the whole run with exit 1 right
there, so the "Kept legacy sources as-is" branch never ran and nothing
after it was offered. Test whiptail in the if instead.
2026-11-03 13:54:14 +01:00
CanbiZ (MickLesk) 62be65b496 FileFlows: replace the program folders on update (#18380)
Since the release of 2026-10-28, Server/ holds only FileFlows' own assemblies and the rest comes from ../Libraries. Copying the archive over an older install left the old third-party DLLs in Server/, which the runtime loads first, and the server fails with 'Could not load file or assembly Microsoft.Data.Sqlite, Version=10.0.13.0'. Upstream's own upgrade removes Server, FlowRunner, Libraries and Agent the same way; Data stays.
2026-11-02 11:19:59 +01:00
CanbiZ (MickLesk) 694f899575 Debian VM: keep a static IP without a snippets storage (#18346)
The MAC-matched network snippet is a workaround for Ubuntu 26.04's NIC rename. Without a storage for snippets the run failed after the VM was built; Debian now keeps the static ipconfig0 Proxmox already set, as it did before September.
2026-10-31 22:29:45 +01:00
CanbiZ (MickLesk) bcb72dc9b8 Ubuntu VM: check for a snippets storage before building a static-IP VM (#18347)
Ubuntu 26.04 needs the MAC-matched network snippet, and without a storage for snippets the run failed only after the VM was created. It now stops before downloading the image.
2026-10-31 22:13:45 +01:00
CanbiZ (MickLesk) f4388eacb3 Docker VM: take the imported disk from vm_import_disk (#18341)
Same parser as haos-vm: PVE 9.2's import message and the pvesm fallback both missed the new volume.
2026-10-31 21:51:31 +01:00
CanbiZ (MickLesk) a03b9d6471 Twenty: move to Node.js 26 (#18337)
Twenty v2.54 requires node ^26.5.1 and yarn install refuses Node 24.
2026-10-31 21:46:03 +01:00
CanbiZ (MickLesk) 5598553755 Norish: fetch Obscura from the repo Norish pins (#18338)
* Norish: fetch Obscura from the repo Norish pins

Norish now builds Obscura from norish-recipes/obscura (pin.env OBSCURA_REPO); the v0.2.5-norish.1 tag does not exist in h4ckf0r0day/obscura, so installs and updates stopped with a GitHub 404.

* Norish: run the v0.26 server on Node.js 26

v0.26.0 dropped dist-server and starts with node --import tsx server/index.ts from apps/web, and requires Node 26. Updates rewrite the unit.
2026-10-31 21:45:48 +01:00
CanbiZ (MickLesk) 507d70ad57 HAOS VM: take the imported disk from vm_import_disk (#18342)
PVE 9.2 reports the import as 'Successfully imported disk as unused0:...', which the local parser missed, and its pvesm fallback matched the VMID column, so imports on local-zfs ended in 'Unable to determine imported disk reference'.
2026-10-31 21:44:33 +01:00
CanbiZ (MickLesk) 5e78d293e6 Aurral: build the pnpm workspace and run backend/server.ts (#18340)
* Aurral: build the pnpm workspace and run backend/server.ts

v2.12.0 moved from npm workspaces to pnpm and the backend entry to server.ts, so npm ci --workspace frontend found no workspace. Updates point existing units at server.ts.

* Aurral: install only the frontend and backend packages

The workspace root's prepare script runs vp config, which needs git; the upstream image filters the install to the two packages as well.

* Aurral: install git for the workspace prepare script

The root prepare script runs vp config, which aborts when git is missing and only notes the absent .git directory otherwise.
2026-10-31 21:44:15 +01:00
CanbiZ (MickLesk) 35de3d31cd PS5-MQTT: build the yarn workspace and run the packaged server (#18339)
* PS5-MQTT: build the yarn workspace and run the packaged server

v1.8.0 turned the repo into a yarn 4 workspace with Plug'n'Play: ps5-mqtt/package.json is gone and npm install there fails. The server now runs from the packaged tree with its own node_modules, as upstream's image does; updates move the unit's working directory.

* PS5-MQTT: give the build 2 GB of RAM

Building the client and server bundles with rspack is killed by the OOM killer at 512 MB.
2026-10-31 21:44:09 +01:00
CanbiZ (MickLesk) c566b53552 Drop the legacy engine copies from misc/ (#18294)
* Drop the legacy engine copies from misc/

Nothing has loaded misc/*.func since ct/, install/, vm/ and tools/ moved to
community-scripts/core. misc/api.func stays until vm/owncloud-vm.sh gets its
DevScripts rewrite.

misc/images/ moves to .github/assets/. The tombstone stub for removed scripts
sourced misc/build.func and called variables(), which core's PVE engine does
not define; it now sources core.func.

* Drop misc/api.func

vm/owncloud-vm.sh was its last caller; DevScripts holds that script's rewrite
onto core/pve/vm-core.func. Merge this after the promotion.
2026-11-01 01:13:41 +10:00
CanbiZ (MickLesk) daf1a50364 Discourse: track the Ruby version Discourse requires (#18329)
* fix(discourse): track the Ruby version Discourse requires

Discourse main now pins `ruby "~> 4.0.0"` in its Gemfile, so `bundle install`
aborts with exit 18 on containers built against the hardcoded Ruby 3.4.4. The
update path never touched Ruby at all, so every existing install breaks.

Discourse ships no .ruby-version, so read the pinned version from
Gemfile.lock's RUBY VERSION stanza and hand it to setup_ruby — on install
(repo is now cloned before the runtime setup) and on update (after the git
pull, so a bumped requirement is picked up). Also silence bundler's root
warning, split the update into separate progress steps, and skip the
unused global Rails gem.

* move ruby into msg block

* move git

Removed comment about Ruby version in install script.
2026-10-31 13:23:52 +01:00
CanbiZ (MickLesk) e8361e4867 Let the bot set oidc_url and license (#18313)
Both fields exist on the record and in the maintainer editor, but
/pocketbase rejected them as unknown and never printed them.
2026-10-29 20:26:47 +01:00
CanbiZ (MickLesk) 47481482e0 Vikunja: fold the package's service block into the config's service section (#18311)
Since 2.7.1 the deb's postinst appends a live service: block with the secret, so uncommenting the stock service: line left two service keys and Vikunja fell back to its defaults. Updates merge the duplicate on existing installs.
2026-10-29 20:23:25 +01:00
CanbiZ (MickLesk) d4fac83a8a Refactor: ownCloud VM (#18295)
Updated ownCloud VM script to version 19.0 and modified various settings and functions for improved functionality.
2026-10-28 15:37:35 +01:00
CanbiZ (MickLesk) 85240b994e Move a promoted script's telemetry history to ProxmoxVE (#18271)
When a merged PR came from a DevScripts migration, the telemetry service
re-attributes that script's DevScripts records. Needs the
TELEMETRY_ADMIN_TOKEN secret; without it the step is skipped.
2026-10-28 07:23:49 +01:00
CanbiZ (MickLesk)andSam Heinz 4439ef2f3f TurnKey: offer only current appliances, stop on arm64 (#18265)
* TurnKey: offer only current appliances, stop on arm64

* Update turnkey/turnkey.sh

---------

Co-authored-by: Sam Heinz <sam@samheinz.com>
2026-10-27 19:56:36 +01:00
CanbiZ (MickLesk) 40663cb865 NPMplus: let the ACME e-mail stay empty again, Let's Encrypt does not need one (#18263) 2026-10-27 19:55:52 +01:00
CanbiZ (MickLesk) 4b22056eb9 Zabbix: leave out the NVIDIA agent2 plugin that breaks the all-plugins install (#18262) 2026-10-27 19:55:40 +01:00
CanbiZ (MickLesk) 8171d2c3dc Remove: Readarr (#18264) 2026-10-27 13:03:24 +01:00
CanbiZ (MickLesk) fd12b4c1db LanguageTool: count ngram prompt retries without tripping errexit (#18258) 2026-10-27 09:33:23 +01:00
CanbiZ (MickLesk) 031debe496 Overseerr: point fresh installs to Seerr instead of a missing install script (#18259) 2026-10-27 09:29:06 +01:00
CanbiZ (MickLesk) e6465645b9 stalwart: pin to v0.16.27 until v1 migration is supported (#18252)
Stalwart v1.0.0 (26 Oct 2026) ships a new data store layout, so v0.16.x
deployments cannot be upgraded in place. Data has to be copied into a new,
empty v1 store with stalwartlabs/stalwart-migrate, which requires v0.16.27
as its source version and needs an interactive prepare step plus an offline
final cutover.

The update path pulled "latest" and would have swapped the binary for v1 on
existing containers, leaving the mail server unable to start on its old store.
Pin install and update to v0.16.27 instead and surface the reason through
check_for_gh_release. Containers that already pulled v1.0.0 are put back on
v0.16.27 by the next update run.
2026-10-27 07:15:56 +01:00
CanbiZ (MickLesk) 23d0c904a3 Ref: Docs / Readme (#18233) 2026-10-26 17:47:22 +01:00
CanbiZ (MickLesk) 8a4ff0e7ce MeshCentral: update the npm package, not just the OS (#18243)
update_script ran apt upgrade and reported success while MeshCentral stayed on the version it was installed with, so 1.1.x installs never got 1.3.1, which fixes an actively exploited flaw. Compare the installed package with npm and install the newer one. Fixes #18205
2026-10-26 16:25:32 +01:00
CanbiZ (MickLesk) f07237f231 Immich: lock only this platform when mise installs the plugin tools (#18241)
mise 2026.10.19 defaults lockfile_mode to generate, which locks every platform during mise install. Immich's mise.toml enables the lockfile, and Java 21.0.2 has no linux-arm64-musl build, so the update failed on any host. Fixes #18236
2026-10-26 14:38:12 +01:00
CanbiZ (MickLesk) 7d5857f1b9 VMs: pass the machine type, CPU, disk cache and discard settings to qm (#18232)
MikroTik RouterOS asked for machine type, CPU model and disk cache and used none of them, nor its discard/ssd flags. HAOS and TrueNAS dropped the chosen disk cache, UniFi OS Server the discard/ssd flags. Fixes #18211
2026-10-26 11:13:59 +01:00
CanbiZ (MickLesk) ddc598fdea Termix: step through 2.9.2 when updating from 2.8 or older (#18158) 2026-10-25 22:12:03 +01:00
CanbiZ (MickLesk) 94a3374039 Hermes Agent: install, update and run everything as the hermes user (#18203)
hermes update refuses a checkout its caller does not own, so the
root-run update stopped working for every install. The installer and
hermes update now run as hermes, and the dashboard becomes a user unit
next to the gateways, so Hermes Desktop and the dashboard can update
and restart it themselves. libatomic1 is installed up front, the one
package Hermes would otherwise ask sudo for.

update moves existing containers over once: the system unit becomes a
user unit, leftover root processes are stopped and /home/hermes is
handed back to hermes.
2026-10-25 19:51:57 +01:00
CanbiZ (MickLesk) cbefc8590e Element Synapse: remove the registration line by its text, not line 34 (#18201)
Line 34 was media_store_path in the packaged homeserver.yaml; since #18180 drops the ::1 line it is signing_key_path, and Synapse no longer starts.
2026-10-25 15:24:18 +01:00
CanbiZ (MickLesk) 359fd5d01a post-pmg-install: hide the subscription nag in the PMG 9 mobile quarantine (#18140)
* post-pmg-install: hide the subscription nag in the PMG 9 mobile quarantine

PMG 9 replaced pmgmanagerlib-mobile.js with the Yew/WASM app in
pmg-mobile-quarantine-ui, so the mobile hook no longer found its file.
The status check is compiled into the WASM, so the helper now injects a
fetch wrapper into the mobile index template that reports the
subscription as active to the app. The API response itself is unchanged.

All patches move into /usr/local/bin/pmg-remove-nag.sh behind a single
apt hook. "no" now also removes the mobile hook and the helper, and the
reinstall covers pmg-mobile-quarantine-ui so its template is restored.

Fixes #16217

* post-pmg-install: reinstall the mobile quarantine UI only where it exists

pmg-mobile-quarantine-ui is not in the PMG 8 (bookworm) repository, so
naming it in the reinstall made apt abort there and skip the widget
toolkit reinstall as well.
2026-10-25 15:07:47 +01:00
CanbiZ (MickLesk) 43ec20463e Heimdall: generate the app key without the production prompt (#18156) 2026-10-25 15:07:24 +01:00
CanbiZ (MickLesk) 469da44126 Frigate: fetch the Intel graphics key with retries before building the media driver (#18192) 2026-10-25 14:35:42 +01:00
CanbiZ (MickLesk) ecf5376265 TREK: build 5.0 with 4 GB RAM and without dependency install scripts (#18194)
tsc on the 5.0 server needs about 3 GB of heap; the 2 GB default left it 2.3 GB and the update died in the build. npm ci runs with --ignore-scripts like upstream, so better-sqlite3 keeps its prebuilt binary instead of an addon built against the running Node's headers. kitinerary-extractor sits in libexec on Debian, so link it into PATH where TREK looks for it.
2026-10-25 14:35:06 +01:00
CanbiZ (MickLesk) c50aa2dfe3 Pterodactyl Panel: default the admin's first and last name when left empty (#18177) 2026-10-25 14:19:46 +01:00
CanbiZ (MickLesk) 74c8ba79fa Jellyseerr: point fresh installs to Seerr instead of a missing install script (#18183) 2026-10-25 13:47:58 +01:00
CanbiZ (MickLesk) 31560bceba Pi-hole: download the installer before running it (#18182)
bash <(curl ...) runs an empty script and exits 0 when the download fails,
so the install went on and broke at /etc/dnsmasq.d/01-pihole.conf instead.
2026-10-25 13:47:30 +01:00
CanbiZ (MickLesk) d2053aaf6b OmniTools: give the build a git commit to read (#18181) 2026-10-25 13:47:12 +01:00
CanbiZ (MickLesk) 714dd4d739 iVentoy: stop early in an unprivileged container (#18179) 2026-10-25 13:46:35 +01:00
CanbiZ (MickLesk) 6018a31dd1 Immich: stop early on Debian 12 instead of failing at apt (#18178) 2026-10-25 13:46:17 +01:00
CanbiZ (MickLesk) ac51382b21 Element Synapse: drop the ::1 listener so a container without IPv6 starts (#18180) 2026-10-25 13:45:56 +01:00
CanbiZ (MickLesk) c62f9da4c6 Remove reindex command from paperless-ngx install
Removed reindex command from installation script.
2026-10-25 13:38:19 +01:00
CanbiZ (MickLesk) b656e99820 post-pve-install: hide the mobile subscription nag in every UI language (#18143)
The mobile UI patch removed the dialog and card only when their text
contained "subscription", so translated UIs (de: "Subskription", fr:
"Abonnement", ...) kept the nag. It also deleted DOM nodes Yew still
owns and polled every 300 ms for good.

The helper now injects a fetch wrapper into the mobile index template
that fills the empty subscription level of each node in the /nodes
response, so the app never shows the alert or card. The API response
itself is unchanged; the node list shows "-" instead of "No
subscription". The mobile UI package is reinstalled alongside the widget
toolkit so old blocks are dropped, and "no" also removes the helper.
2026-10-25 12:17:28 +01:00
CanbiZ (MickLesk) d6ff47a71c Anytype Server: keep the .env across updates and recreate a lost one (#18155) 2026-10-25 12:11:59 +01:00
CanbiZ (MickLesk) 21834f3a95 changedetection: build Browserless from its lockfile on update (#18157) 2026-10-25 12:11:15 +01:00
CanbiZ (MickLesk) 911c84574e Gramps-Web: run the Celery task queue with Redis (#18141) 2026-10-25 11:59:56 +01:00
CanbiZ (MickLesk) bb8b00f422 Zitadel: identify the machine by hostname when it has no private IPv4 (#18139) 2026-10-25 11:58:58 +01:00
CanbiZ (MickLesk) 2250fc8e18 Borg-UI: recreate the borg venvs with --clear (#18118)
uv now refuses to create a venv on a non-empty path, so a Borg version bump stopped the update at /opt/borg1-venv or /opt/borg2-venv (#18117).
2026-10-24 18:02:42 +02:00
CanbiZ (MickLesk) 54c8b2393e install: answer every prompt from the environment, survive a closed stdin (#18121)
* 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.

* mongodb, paperless-gpt: accept yes as well as y
2026-10-24 17:55:50 +02:00
CanbiZ (MickLesk) c351f17c86 SnapOtter: recreate the AI venv with --clear (#18119)
The venv lives in the data directory and is recreated on every update; uv now refuses a non-empty path.
2026-10-24 17:52:46 +02:00
CanbiZ (MickLesk) 65778f7367 Frigate: bump to v0.18.2 (#18120) 2026-10-24 17:52:35 +02:00
CanbiZ (MickLesk) 4f88fba713 InvoiceShelf: run the Laravel scheduler (#18079)
Without the schedule:run cron job, recurring invoices and other scheduled tasks never ran (#18072). Update adds it to existing installs.
2026-10-23 15:50:05 +02:00
CanbiZ (MickLesk) 5a5b0b4a2e podman-homeassistant: require Debian 13 (#18095)
Quadlet needs Podman 4.4; Debian 12 ships 4.3.1, so no unit was
generated and systemctl start failed with 5.
2026-10-23 15:49:35 +02:00
CanbiZ (MickLesk) 2d68523f89 proxcenter: skip the type check and lower the build heap (#18090)
Upstream added PROXCENTER_SKIP_TYPECHECK for builds from a released tag;
the type check alone needs about 3 GB. A 4.6 GB heap on 6 GB of RAM got
the build killed.
2026-10-23 15:48:07 +02:00
CanbiZ (MickLesk) e3bcb63608 hermesagent: retry the installer download, fall back to GitHub (#18091)
The Vercel host answered 4xx/5xx 21 times a week; a plain curl gave up
at once.
2026-10-23 15:47:47 +02:00
CanbiZ (MickLesk) 363de2146c zabbix: use the arm64 repository for 7.0 (#18089)
7.0's debian repository carries no arm64 packages; they live under
debian-arm64. The ct sets var_arm64=yes, so the install failed at the
package step.
2026-10-23 15:47:31 +02:00
CanbiZ (MickLesk) 1385f9eb71 postgresql: default the version prompt and match Alpine's packages (#18093)
An empty answer, or no TTY, ended the install with 64. The prompt now
defaults to 17 and takes var_postgresql_version; the Alpine list is
16/17/18, which is what 3.24 ships.
2026-10-23 15:46:07 +02:00
CanbiZ (MickLesk) 5a065790a8 kasm: survive a failed release lookup and answer the installer with flags (#18092)
The lookup ran under pipefail with no timeout: a page without the link
ended the install at `head -1`, a stalled connection hung it for half an
hour, and the fallback version never ran. The installer takes
--accept-eula, --no-swap-check and --no-check-disk; piped answers
shifted with the prompts, and a "y" to the swap question tried swapon
inside the container.
2026-10-23 15:45:32 +02:00
CanbiZ (MickLesk) fab965b3c7 apache-guacamole: require Debian 13 (#18094)
freerdp3-dev exists from Trixie on; a Debian 12 override failed at the
dependency install.
2026-10-23 15:42:03 +02:00
CanbiZ (MickLesk) c2a4db2c7f unifi-os-server: require Debian 13 (#18096)
Every failed install this week ran on Debian 12, where the installer
rejects the Podman that ships there. The default is 13; an override now
fails before the 785 MB download.
2026-10-23 15:41:53 +02:00
CanbiZ (MickLesk) 8df4381b7c openwebui: drop the Intel oneAPI Base Toolkit (#18098)
The Ollama release binaries carry no SYCL build, so the 2.8 GB download
was never used. Its handled failure was also what later systemctl
failures were reported as.
2026-10-23 15:41:37 +02:00
CanbiZ (MickLesk) 449c3d4997 ollama: drop the Intel oneAPI Base Toolkit (#18097)
The Ollama release binaries carry no SYCL build, so the 2.8 GB download
(14.6 GB installed) was never used; 13 installs a week failed on it.
2026-10-23 15:40:41 +02:00