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.
* guardian: bump Node.js from 24 to 26
* Set NODE_VERSION to 26 before updating Guardian
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: CanbiZ (MickLesk) <47820557+MickLesk@users.noreply.github.com>
* nametag: bump Node.js from 20 to 24
* Update NODE_VERSION in nametag deployment script
Set NODE_VERSION to 24 during deployment process.
* Increase default RAM from 2048MB to 3072MB
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: CanbiZ (MickLesk) <47820557+MickLesk@users.noreply.github.com>
* 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.
* 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.
* 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.
* 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.
* 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.
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.
The service ran `java -jar` without the JAVA_BASE_OPTS from .env, and inside
LXC the JVM cannot see the container's memory limit, so it sized its heap from
host RAM (16 GB in a 2 GB CT on a 64 GB host) and the container thrashed and got
OOM-killed. Pass the .env options, set -XX:MaxRAM from /proc/meminfo (lxcfs
reports the CT limit), lower MaxRAMPercentage to 50 for LibreOffice/tesseract
headroom, and migrate existing units on update (also drops the broken
ExecStop=/bin/kill -15 %n left from before #16813).
Fixes#18291
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
VictoriaLogs only accepts syslog when -syslog.listenAddr.tcp/udp are set,
so network gear that ships logs over syslog (UniFi, firewalls, switches)
had nowhere to send them. Add both listeners to the service and migrate
existing installs on update.
Since Dawarich 1.15.1 the importmap pins maplibre-gl to
/maplibre/<version>/maplibre-gl.mjs in public/. Debian's nginx
mime.types has no mjs entry, so the vhost served it as
application/octet-stream and browsers refused to load the module:
blank map, map controllers fail.
Add a .mjs location (text/javascript, as Rails serves it upstream) to
the install heredoc, and insert it into existing vhosts from
update_script() before the release check, applied via nginx_enable_site.
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
The update overlaid the release tarball, so files removed upstream survived. v0.13.1 moved the frontend config into vite.config.ts, and the leftover svelte.config.js fails pnpm build under SvelteKit 3 (config_file_unsupported) after the services are already stopped. Deploy with CLEAN_INSTALL=1, keep backend/server/media in place, and back up both .env files.
The djangorestframework<3.15 pin (#13194) worked around rest_framework.schemas.coreapi, which AdventureLog stopped using in v0.13.0. v0.13.1 requires djangorestframework>=3.18.3,<3.19, so the pin now downgrades DRF below the app's own requirement.
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.
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
* Add honcho (ct)
* Clean up comments in honcho-install.sh
Removed comments about Dockerfile and Honcho client build conditions for clarity.
* Remove admin key printing from setup output
Removed the command to print the admin key from the setup output.
---------
Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
Co-authored-by: CanbiZ (MickLesk) <47820557+MickLesk@users.noreply.github.com>
The official Mealie image installs ffmpeg. This script's apt list
did not, so yt-dlp could not extract reel audio (ffprobe missing).
ensure_dependencies on update covers existing containers.
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.