- Replace obsolete PRINTER_ENDPOINT with ENCRYPTION_SECRET in .env
(PDF generation moved client-side in v5.1.0; AI providers require
ENCRYPTION_SECRET since v5.1.4)
- Add commented REDIS_URL for the new AI Agent workspace (optional)
- Inject ENCRYPTION_SECRET into existing installs on update if missing
cp -rL follows pnpm's circular symlink chains (sharp, @aws-sdk both have
pkg/node_modules/pkg loops in the virtual store) causing infinite path
recursion and 'File name too long' errors.
Use pnpm deploy --legacy which is exactly what the upstream Dockerfile does:
it creates a flat, real-file node_modules with no symlinks. cp -r (no -L)
then copies it cleanly into apps/web/node_modules/.
@aws-sdk/client-s3 has a pathologically deep pnpm virtual store symlink
tree; cp -rL follows the chain into thousands of nested client-s3 dirs
causing 'File name too long' errors. S3 is an optional storage backend
so skip it. bcrypt, sharp, linkedom and ioredis are unaffected.
pnpm symlink chains (our link -> packages/runtime-externals/node_modules/
-> pnpm virtual store) are not reliably followed by Node.js ESM resolution.
The upstream Dockerfile uses pnpm deploy which produces real files.
Replicate that by using cp -rL to dereference all symlinks and copy the
actual package files into apps/web/node_modules/.
Replace the broken npm-install workaround with a simpler approach:
write shamefully-hoist=true to .npmrc before pnpm install. This causes
pnpm to hoist all packages to root node_modules/, including bcrypt, sharp,
linkedom etc. (deps of @reactive-resume/runtime-externals), making them
resolvable by the Nitro server at runtime.
The upstream repo has no .npmrc, so git reset --hard leaves this file
untouched on updates. The file is written before each pnpm install in
both install and update scripts to ensure it is always in place.
bcrypt, sharp, and linkedom are marked as Rolldown externals in
apps/web/vite.config.ts and belong to the @reactive-resume/runtime-externals
workspace package, but apps/web does not declare that package as a direct
dependency. With pnpm strict node_modules, this means the packages are never
symlinked into apps/web/node_modules/, causing ERR_MODULE_NOT_FOUND at
runtime when the Nitro server tries to import them.
Fix: after pnpm run build, use npm to install the three required packages
directly into apps/web/node_modules/ without modifying package.json.
Applies to both fresh install and update scripts.
* fix(reactive-resume): set correct WorkingDirectory for systemd service
* fix(reactive-resume): update WorkingDirectory in service for existing installs
* Move fumadocs to node 24 per there package.json requirements
* Move papra to node 26 per there .nvmrc file
* Move zipline to node 24 as per there Dockerfile
When running in certain LXC environments (e.g. systems with desktop
packages or non-en locales), the HOME variable may resolve to '/'
instead of '/root'. rbenv installs to $HOME/.rbenv, so if HOME is
wrong it ends up in /.rbenv while all service files and PATH exports
hardcode /root/.rbenv, causing 'env: ruby: No such file or directory'.
Explicitly set HOME=/root for all setup_ruby calls that run as root,
and replace all $HOME/.rbenv references in PATH exports and install
steps with /root/.rbenv literals.
Affected scripts:
- ct/sure.sh + install/sure-install.sh (fixes#14479)
- ct/dawarich.sh + install/dawarich-install.sh
- ct/docuseal.sh + install/docuseal-install.sh
Also add TimeoutStartSec=300 to sure.service so db:prepare on first
start does not get killed by the default 90s systemd timeout.
* tools.func: replace max-time with speed-limit stall detection in curl_download
* Refactor curl_download function for improved readability and remove unnecessary whitespace
Two changes to resolve Puppeteer waitForFunction timeout (5000ms exceeded):
1. Use 127.0.0.1 instead of localhost for PRINTER_ENDPOINT to avoid
potential IPv6 resolution issues in LXC containers where 'localhost'
may resolve to ::1 while Chromium only listens on 127.0.0.1.
2. Add --no-zygote flag to the chromium-printer service. In LXC
containers the Zygote process (used by Chrome for process forking)
can fail silently, causing Puppeteer page rendering to hang until
the printer timeout is exceeded.