- Add _diagnose_deb_failure() helper: extracts package metadata from failed .deb installs,
detects PostgreSQL version conflicts (e.g., postgresql-16-vchord with PG17 active),
lists unmet dependencies, and provides specific actionable hints
- Replace all 4 generic 'Both apt and dpkg installation failed' messages in
fetch_and_deploy_{codeberg,gh,gl}_release and fetch_and_deploy_from_url with
_diagnose_deb_failure() for targeted diagnostics
- install_packages_with_retry: on failure, check which packages are missing from
configured repos and name them with a distribution-specific hint
- upgrade_packages_with_retry: add hint about held-back packages / apt-cache policy
- setup_postgresql: when PGDG repo is unavailable for trixie/forky/sid, show which
distro PG version will be installed and warn that extension packages must match
- setup_deb822_repo: include GPG key URL and firewall hint in download failure message
- curl_download: add network/DNS hint to the failure message
- error_handler: add log-pattern analysis block after Node.js OOM detection that
scans the last 60 log lines for 5 common failure patterns and emits msg_warn hints:
* APT/dpkg dependency conflict (generic + PostgreSQL version mismatch)
* APT GPG/signature verification failure (sqv, KEYEXPIRED, NO_PUBKEY)
* Network/DNS failure (Could not resolve, Failed to fetch)
* APT lock held by another process
* Disk space exhaustion (ENOSPC)
* configure gateway during install for best chance of it not getting disabled
* add missing dbus-run-session on service
* add back chmod to .env file
* remove extra character
* add back mkdir for /root/.ironclaw
* remove erroneous msg blocks, service env values and tab in post completion gateway line
* increase default ram due to oom-killer logs during library scans and fix backup path checking
* fix ram value
* revert resource changes
* correct disk size
The Lounge v4.5.0 requires nodejs (>= 22.13.0), which is not available from Debian 13 default repos. Install Node.js 22 via NodeSource before deploying the thelounge-deb package in both install and update scripts.
* 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.