CanbiZ (MickLesk)
c9ecb1ccca
core: smart recovery for failed installs | extend exit_codes ( #11221 )
...
* feat(build.func): smart error recovery menu for failed installations
Replace simple Y/n removal prompt with interactive recovery menu:
- Option 1: Remove container and exit (default, auto after 60s timeout)
- Option 2: Keep container for debugging
- Option 3: Retry installation with verbose mode enabled
- Option 4: Retry with 1.5x RAM and +1 CPU core (OOM errors only)
Improvements:
- Detect OOM errors (exit codes 137, 243) and offer resource increase
- Show human-readable error explanation using explain_exit_code()
- Recursive rebuild preserves ALL settings from advanced/app.vars/default.vars
- Settings preserved: Network (IP, Gateway, VLAN, MTU, Bridge), Features
(Nesting, FUSE, TUN, GPU), Storage, SSH keys, Tags, Hostname, etc.
- Show rebuild summary before retry (old→new CTID, resources, network)
- New container ID generated automatically for rebuilds
This helps users recover from transient failures without re-running
the entire script manually.
* fix(api.func): fix duplicate exit codes and add missing error codes
Exit code fixes:
- Remove duplicate definitions for codes 243, 254 (Node.js vs DB)
- Reassign MySQL/MariaDB to 240-242, 244 (was 241-244)
- Reassign MongoDB to 250-253 (was 251-254)
New exit codes added (based on GitHub issues analysis):
- 6: curl couldn't resolve host (DNS failure)
- 7: curl failed to connect (network unreachable)
- 22: curl HTTP error (404, 429 rate limit, 500)
- 28: curl timeout (very common in download failures)
- 35: curl SSL error
- 102: APT lock held by another process
- 124: Command timeout
- 141: SIGPIPE (broken pipe)
Also update OOM detection to include exit code 134 (SIGABRT)
which is commonly seen in Node.js heap overflow issues.
Fixes based on analysis of ~500 GitHub issues.
* fix(exit-codes): sync error_handler.func and api.func with conflict-free code ranges
- Add curl error codes (6, 7, 22, 28, 35)
- Add APT lock code (102), timeout (124), signals (134, 141)
- Move Python codes: 210-212 → 160-162 (avoid Proxmox conflict)
- Move PostgreSQL codes: 231-234 → 170-173
- Move MySQL/MariaDB codes: 241-244 → 180-183
- Move MongoDB codes: 251-254 → 190-193
- Keep Node.js at 243-249, Proxmox at 200-231
- Both files now synchronized with identical mappings
* feat(exit-codes): add systemd and build error codes (150-154)
- 150: Systemd service failed to start
- 151: Systemd service unit not found
- 152: Permission denied (EACCES)
- 153: Build/compile failed (make/gcc/cmake)
- 154: Node.js native addon build failed (node-gyp)
Based on issue analysis: 57 service failures, 25 build failures, 22 node-gyp issues
* fix(build): restore smart recovery and add OOM/DNS retry paths
* feat(build): APT in-place repair, exit 1 subclassification, new exit codes
- Add APT/DPKG in-place recovery: detects exit 100/101/102/255 and exit 1
with APT log patterns, offers to repair dpkg state and re-run install
script without destroying the container
- Add exit 1 subclassification: analyzes combined log to identify root
cause (APT, OOM, network, command-not-found) and routes to appropriate
recovery option
- Add exit 10 hint: shows privileged mode / nesting suggestion
- Add exit 127 hint: extracts missing command name from logs
- Refactor recovery menu: use named option variables (APT_OPTION,
OOM_OPTION, DNS_OPTION) instead of hardcoded option numbers, supports
up to 6 dynamic options cleanly
- Map missing exit codes in api.func: curl 27/36/45/47/55, signals
129 (SIGHUP) / 131 (SIGQUIT), npm 239
* feat(api+build): map 25 more exit codes, add SIGHUP trap, network/perm hints
api.func:
- Map 25+ new exit codes that were showing as 'Unknown' in telemetry:
curl: 3, 16, 18, 24, 26, 32-34, 39, 44, 46, 48, 51, 52, 57, 59, 61,
63, 79, 92, 95; signals: 125, 132, 144, 146
- Update code 8 description (FTP + apk untrusted key)
- Update header comment with full supported ranges
build.func:
- Add SIGHUP trap: reports 'failed/129' to API when terminal is closed,
should significantly reduce the 2841 stuck 'installing' records
- Add exit 52 (empty reply) and 57 (poll error) to network issue
detection for DNS override recovery option
- Add exit 125/126 hint: suggests privileged mode for permission errors
* fix: sync error_handler fallback, Alpine APK repair, retry limit
error_handler.func:
- Sync fallback explain_exit_code() with api.func: add 25+ codes that
were missing (curl 16/18/24/26/27/32-34/36/39/44-48/51/52/55/57/59/
61/63/79/92/95, signals 125/129/131/132/144/146, npm 239, code 3/8)
- Ensures consistent error descriptions even when api.func isn't loaded
build.func:
- Alpine APK repair: detect var_os=alpine and run 'apk fix && apk
cache clean && apk update' instead of apt-get/dpkg commands
- Show 'Repair APK state' instead of 'APT/DPKG' in menu for Alpine
- Retry safety counter: OOM x2 retry limited to max 2 attempts
(prevents infinite RAM doubling via RECOVERY_ATTEMPT env var)
- Show attempt count in rebuild summary
* fix(build): preserve exit code in ERR trap to prevent false exit_code=0
The ERR trap called ensure_log_on_host before post_update_to_api,
which reset \True to 0 (success). This caused ~15-20 records/day to be
reported as 'failed' with exit_code=0 instead of the actual error code.
Root cause chain:
1. Command fails with exit code N → ERR trap fires (\True = N)
2. ensure_log_on_host succeeds → \True becomes 0
3. post_update_to_api 'failed' '\True' → sends 'failed/0' (wrong!)
4. POST_UPDATE_DONE=true → EXIT trap skips the correct code
Fix: capture \True into _ERR_CODE before ensure_log_on_host runs.
* Implement telemetry settings and repo source detection
Add telemetry configuration and repository source detection function.
2026-02-17 12:14:46 +01:00
community-scripts-pr-app[bot]
d274a269b5
Update .app files ( #12022 )
...
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2026-02-17 10:45:09 +01:00
community-scripts-pr-app[bot]
cbee9d64b5
Update CHANGELOG.md ( #12024 )
...
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-17 09:41:45 +00:00
community-scripts-pr-app[bot]
ffcda217e3
Update CHANGELOG.md ( #12023 )
...
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-17 09:41:25 +00:00
community-scripts-pr-app[bot]
438d5d6b94
Update date in json ( #12021 )
...
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2026-02-17 09:41:19 +00:00
push-app-to-main[bot]
104366bc64
Databasus ( #12018 )
...
* Add databasus (ct)
* Update databasus.sh
* Update databasus-install.sh
* Fix backup and restore paths for Databasus config
---------
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 >
2026-02-17 10:40:58 +01:00
community-scripts-pr-app[bot]
9dab79f8ca
Update CHANGELOG.md ( #12017 )
...
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-17 08:08:35 +00:00
CanbiZ (MickLesk)
2dddeaf966
Call get_lxc_ip in start() before updates ( #12015 )
2026-02-17 09:08:09 +01:00
community-scripts-pr-app[bot]
fae06a3a58
Update CHANGELOG.md ( #12016 )
...
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-17 08:07:22 +00:00
Tobias
137272c354
fix: pterodactyl-panel add symlink ( #11997 )
2026-02-17 09:06:59 +01:00
community-scripts-pr-app[bot]
52a9e23401
chore: update github-versions.json ( #12013 )
...
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-17 06:22:15 +00:00
community-scripts-pr-app[bot]
c2333de180
Update CHANGELOG.md ( #12007 )
...
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-16
2026-02-17 00:22:47 +00:00
community-scripts-pr-app[bot]
ad8974894b
chore: update github-versions.json ( #12006 )
...
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-17 00:22:21 +00:00
community-scripts-pr-app[bot]
38af4be5ba
Update CHANGELOG.md ( #12005 )
...
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-16 21:38:03 +00:00
Chris
80ae1f34fa
Opencloud: Pin version to 5.1.0 ( #12004 )
2026-02-16 22:37:35 +01:00
community-scripts-pr-app[bot]
06bc6e20d5
chore: update github-versions.json ( #12001 )
...
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-16 18:13:41 +00:00
community-scripts-pr-app[bot]
4418e72856
Update CHANGELOG.md ( #11999 )
...
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-16 16:14:29 +00:00
CanbiZ (MickLesk)
896714e06f
core/vm's: ensure script state is sent on script exit ( #11991 )
...
* Ensure API update is sent on script exit
Add exit-time telemetry handling across scripts to avoid orphaned "installing" records. Introduce local exit_code capture in api_exit_script and cleanup handlers and, when POST_TO_API_DONE is true but POST_UPDATE_DONE is not, post a final status (marking failures on non-zero exit codes, or marking done/failed in VM cleanups based on exit code). Changes touch misc/build.func, misc/vm-core.func and various vm/*-vm.sh cleanup functions to reliably send post_update_to_api on normal or early exits.
* Update api.func
* fix(telemetry): add missing exit codes to explain_exit_code()
- Add curl error codes: 4, 5, 8, 23, 25, 30, 56, 78
- Add code 10: Docker/privileged mode required (used in ~15 scripts)
- Add code 75: Temporary failure (retry later)
- Add BSD sysexits.h codes: 64-77
- Sync error_handler.func fallback with canonical api.func
2026-02-16 17:14:00 +01:00
community-scripts-pr-app[bot]
96389a02cb
chore: update github-versions.json ( #11996 )
...
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-16 12:14:25 +00:00
community-scripts-pr-app[bot]
a4e6286260
Update .app files ( #11993 )
...
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2026-02-16 12:49:30 +01:00
community-scripts-pr-app[bot]
a6617cc6a1
Update CHANGELOG.md ( #11995 )
...
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-16 11:49:19 +00:00
community-scripts-pr-app[bot]
f1377e6cb0
Update CHANGELOG.md ( #11994 )
...
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-16 11:49:03 +00:00
community-scripts-pr-app[bot]
56cff01240
Update date in json ( #11992 )
...
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2026-02-16 11:48:56 +00:00
push-app-to-main[bot]
26ba17c8c3
RomM ( #11987 )
...
* Add romm (ct)
* Update romm.sh
* Update romm-install.sh
* Revise author line in romm.sh
Updated author attribution format in romm.sh
---------
Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
Co-authored-by: Tobias <96661824+CrazyWolf13@users.noreply.github.com >
Co-authored-by: CanbiZ (MickLesk) <47820557+MickLesk@users.noreply.github.com >
2026-02-16 12:48:37 +01:00
community-scripts-pr-app[bot]
2bd4b063d9
Update CHANGELOG.md ( #11990 )
...
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-16 10:47:03 +00:00
Slaviša Arežina
40bd7dc366
Fix sed command for DB_FILE configuration ( #11988 )
2026-02-16 11:46:37 +01:00
community-scripts-pr-app[bot]
a81ebcb16c
Update CHANGELOG.md ( #11986 )
...
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-16 09:54:09 +00:00
community-scripts-pr-app[bot]
cebdbcc35d
Update CHANGELOG.md ( #11985 )
...
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-16 09:53:53 +00:00
CanbiZ (MickLesk)
42475ed4f6
slskd: fix exit position ( #11963 )
2026-02-16 10:53:41 +01:00
community-scripts-pr-app[bot]
11eba0093f
Update CHANGELOG.md ( #11984 )
...
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-16 09:53:29 +00:00
CanbiZ (MickLesk)
f6e535c7b7
cryptpad: restore config earlier and run onlyoffice upgrade ( #11964 )
2026-02-16 10:53:21 +01:00
community-scripts-pr-app[bot]
58329f99ea
Update CHANGELOG.md ( #11983 )
...
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-16 09:53:04 +00:00
CanbiZ (MickLesk)
558220fb0e
Vaultwarden: export VW_VERSION as version number ( #11966 )
2026-02-16 10:52:56 +01:00
community-scripts-pr-app[bot]
61aee12a82
Update CHANGELOG.md ( #11982 )
...
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-16 09:52:40 +00:00
CanbiZ (MickLesk)
215c441129
Improve Zabbix agent service detection ( #11968 )
2026-02-16 10:52:34 +01:00
community-scripts-pr-app[bot]
32afe0c2e4
Update CHANGELOG.md ( #11981 )
...
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-16 09:52:18 +00:00
summoningpixels
73ee5f8f19
Update Wishlist LXC webpage to include reverse proxy info ( #11973 )
2026-02-16 10:52:09 +01:00
CanbiZ (MickLesk)
34db7c652f
github: add "website" label if "json" changed ( #11975 )
2026-02-16 10:51:49 +01:00
community-scripts-pr-app[bot]
c5c6e660ba
Update CHANGELOG.md ( #11980 )
...
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-16 09:30:31 +00:00
CanbiZ (MickLesk)
ae8dd5ba36
tools.func: persist /usr/local/bin in shell PATHs ( #11970 )
2026-02-16 10:30:05 +01:00
community-scripts-pr-app[bot]
c975b25ad5
Update .app files ( #11978 )
...
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2026-02-16 10:15:43 +01:00
community-scripts-pr-app[bot]
4e3ee020e4
Update CHANGELOG.md ( #11979 )
...
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-16 09:14:49 +00:00
push-app-to-main[bot]
90ce773247
LinkDing ( #11976 )
...
* Add linkding (ct)
* Update messages for LinkDing in script
* Update date_created to 2026-02-16
* Update linkding-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 >
2026-02-16 10:14:24 +01:00
CanbiZ (MickLesk)
704f8d7e10
hotfix pipefail issue alpine-teamspeak
...
Replace the final '| head -1' in both install and ct scripts with 'awk 'NR==1'' to pick the first matching Teamspeak release line. In the ct script the previous temporary toggling of pipefail was also removed, simplifying the command. This improves compatibility and reduces reliance on an extra utility in minimal environments.
2026-02-16 08:57:06 +01:00
community-scripts-pr-app[bot]
d7fbbbde0f
Update CHANGELOG.md ( #11974 )
...
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-16 07:51:33 +00:00
CanbiZ (MickLesk)
2edd2ffaf8
fix: remove duplicate error handler from alpine-install.func ( #11971 )
...
- Remove legacy error_handler(), on_exit(), on_interrupt(), on_terminate() and set/trap definitions from alpine-install.func (already provided by error_handler.func which is sourced on line 10)
- The local error_handler() expected positional args as required, but catch_errors() sets trap as 'error_handler' (without args), causing unbound variable error with set -u (nounset)
- error_handler.func uses default values which is set -u safe
- Also align legacy trap in install.func network_check() to standard format
Fixes #11929
2026-02-16 08:51:05 +01:00
community-scripts-pr-app[bot]
cba1a0bb6b
Update CHANGELOG.md ( #11972 )
...
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-16 07:50:08 +00:00
summoningpixels
97bc69452d
Update OpenCloud LXC webpage to include services ports for reverse proxy users ( #11969 )
...
Included it directly in the reverse proxy warning note
2026-02-16 08:49:42 +01:00
community-scripts-pr-app[bot]
4257954cfa
Update CHANGELOG.md ( #11967 )
...
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-02-16 07:29:32 +00:00
CanbiZ (MickLesk)
39354352ff
Migrate update script to Seerr; prompt rerun ( #11965 )
...
Update ct/jellyseerr.sh and ct/overseerr.sh to switch the container update handler to the Seerr script. The here-doc now uses a single-quoted EOF to avoid shell expansion and includes an explicit shebang for the generated /usr/bin/update. Instead of auto-executing the new update script, the code now informs the user to run 'update' again and exits (overseerr exits with 0). Also includes minor whitespace cleanup (removed trailing spaces on cd lines). This prevents unexpected immediate execution and ensures the generated script runs with the intended shell.
2026-02-16 08:29:04 +01:00