* fix: derive LXC banner OS from os-release
Read os-release at login time for the generated LXC banner so OS display stays accurate after template changes or in-place upgrades. Prefer PRETTY_NAME with safe fallbacks to NAME, template defaults, and Unknown OS while preserving existing banner formatting.
Co-authored-by: Cursor <cursoragent@cursor.com>
* refactor: simplify dynamic LXC banner OS resolution
Reduce banner OS rendering to a minimal runtime os-release read with PRETTY_NAME/NAME fallbacks and Unknown OS default. Remove redundant OS rewrites from update_motd_ip now that OS display is resolved dynamically at login.
Co-authored-by: Cursor <cursoragent@cursor.com>
---------
Co-authored-by: Cursor <cursoragent@cursor.com>
* snowshare: use mv instead of cp for uploads backup to prevent disk fill
Replaces cp -a with mv when backing up and restoring /opt/snowshare/uploads
during updates. cp -a duplicated the entire uploads directory on each update,
which could fill the disk on instances with large uploads and left stale
backup directories accumulating across failed updates. mv is atomic on the
same filesystem and avoids any data duplication. Also clears any leftover
backup directory before the move to prevent nesting on interrupted updates.
Refs TuroYT/snowshare#258
* snowshare: use UPLOAD_DIR env to persist uploads outside install dir
Set UPLOAD_DIR=/opt/snowshare_data in the env file so uploads live
outside /opt/snowshare and survive CLEAN_INSTALL updates without any
backup/restore step. Existing installations are migrated on first
update by moving uploads to the new location and appending UPLOAD_DIR
to the env file, making the change non-breaking.
* 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