When no GPU devices are present, 'lspci | grep -E VGA|Display|3D'
returns exit code 1 (no match), which triggered the ERR trap and
aborted the entire script with 'exit code 1: while executing command
grep -E VGA|Display|3D'.
Changes:
- Add '|| true' to the initial lspci|grep pipeline
- Early return with debug message when no GPU PCI devices found
- Replace 'echo \ | grep' with 'grep <<<\' (herestrings)
to avoid exit 1 from empty pipe on AMD/Intel/NVIDIA detection
Previously, command output during customization and container creation
was discarded to /dev/null, making error logs useless for debugging.
Examples of what was lost:
- apt-get update/install errors during 'Customizing LXC Container'
- pveam download failures during template download (exit 222)
- pct create output showing why container creation failed (exit 209)
Changes:
- Redirect apt-get/apk base package output to BUILD_LOG instead of /dev/null
- Redirect all pveam download output to BUILD_LOG instead of /dev/null
- Add _flush_pct_log() helper that appends pct_create LOGFILE to BUILD_LOG
- Call _flush_pct_log() on every exit path in create_lxc_container()
- pct create output now appears in the combined installation log (Phase 1)
Result: error logs now contain actual command output (apt errors, download
failures, pct create errors) instead of only status messages.
Previously, when a container was stopped or base package installation
failed during 'Customizing LXC Container', the error handler's simple
'Remove broken container? (Y/n)' prompt appeared instead of the full
recovery menu with retry/repair options (verbose rebuild, APT repair,
OOM retry, DNS override).
Root cause: set -Eeuo pipefail and ERR trap were still active during
the customization phase (locale, timezone, base packages). The exit 1
triggered error_handler() which has its own cleanup flow, bypassing
the full recovery menu in build_container().
Changes:
- Disable ERR trap before customization phase (not just before lxc-attach)
- Replace exit 1 with install_exit_code=1 for base package failures
- Wrap lxc-attach section in if-block that skips when customization failed
- Both customization and install errors now reach the full recovery menu
- Fix read in error_handler.func to use </dev/tty (same curl stdin issue)
- Eliminates 'pop_var_context: head of shell_variables not a function
context' bash error caused by double-exit (exit 1 -> ERR trap -> exit)
When running via bash -c \\\, stdin is consumed by curl so read gets an I/O error. All interactive read calls in build.func now explicitly read from /dev/tty (recovery menu, GPU selection, version picker, LXC upgrade prompt, container removal, resource/storage checks).
Add apt_update_safe() function that warns instead of aborting when apt-get update fails (e.g. enterprise repo 401 Unauthorized). Shows a helpful hint about disabling the enterprise repo when no subscription is active. Replaces direct apt-get update calls in build.func and install.func.
* Add strapi (ct)
* Update strapi.sh
* Update date_created in strapi.json
* fix(strapi): use official upgrade tool instead of npm install
Replace 'npm install' with 'npx @strapi/upgrade minor --yes' which properly updates dependencies in package.json and runs codemods. See https://docs.strapi.io/cms/upgrade-tool
---------
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>
* Update adguardhome-sync.sh
Better handle edge case of `curl` not being installed on Alpine.
Install `jq`, required by `fetch_and_deploy_gh_release()`, which if not installed makes the script error out with confusing stuff
Rewritten `get_ip()` to make it also work on busybox environments (Alpine).
* Update adguardhome-sync.sh
`jq` is installed by some code inside of `fetch_and_deploy_gh_release` for debian
So it doesn't make much sense to install it here.
We only do so for alpine, as if its not installed it breaks the script
Detect Alpine inside the LXC container and install Tailscale via apk (add community repo if missing), enable/start the service. Preserve Debian/Ubuntu install path but improve DNS resolution checks, temporarily override /etc/resolv.conf if DNS appears blocked, and restore it afterwards. Switch pct exec to use sh -c, tighten command existence checks and redirections, ensure curl and keyring directory are present, add Tailscale apt source and install package. Overall robustness and error-handling improvements for installing Tailscale in containers.
When extracting GitHub source URLs in the workflow, only search the "# Source:" line first to avoid matching other URLs (such as license links). Update the grep pipeline to filter for the Source line (case-insensitive) before extracting the https://github.com/... pattern and add explanatory comments.
* Add kima-hub (ct)
* Change default disk size to 20
Updated the disk size default from 24 to 20.
* Modify date_created and hdd size in kima-hub.json
Updated the creation date and HDD size for kima-hub.
* remove: ai
* Update kima-hub.sh
* Update kima-hub-install.sh
---------
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>
Co-authored-by: Tobias <96661824+CrazyWolf13@users.noreply.github.com>