Commit Graph

297 Commits

Author SHA1 Message Date
Michel Roegl-Brunner
47d63e92bf build.func: Replace storage variable with searchdomain variable (#11322) 2026-01-29 13:29:25 +01:00
Alexander
cca0d9e584 Fix whiptail menu loop when other interfaces are present (#11237) 2026-01-28 17:35:24 +01:00
Lavacano
bac7f07a74 The added sed command s/^[- ]*// removes any leading dashes or spaces from the description (#11285) 2026-01-28 17:31:26 +01:00
CanbiZ (MickLesk)
910723c745 Revert "fix(build): use pct mount to fix Debian 13 root ownership"
This reverts commit 6267250e49.
2026-01-28 14:54:30 +01:00
CanbiZ (MickLesk)
6267250e49 fix(build): use pct mount to fix Debian 13 root ownership 2026-01-28 14:54:15 +01:00
CanbiZ (MickLesk)
b35437c391 fix(build): fix Debian 13 root ownership from host before customization 2026-01-28 14:44:00 +01:00
CanbiZ (MickLesk)
ff4f5f6a0a core: update dynamic values in LXC profile on update_motd_ip (#11268)
* feat(build.func): update dynamic values in LXC profile on update_motd_ip

- Updates only OS/Hostname/IP lines in /etc/profile.d/00_lxc-details.sh
- Checks if values changed before updating (avoids unnecessary I/O)
- Preserves user customizations (app name, GitHub link, custom lines)
- Only updates if file exists and contains 'community-scripts' marker
- Fixes outdated OS version display after in-place upgrades (e.g., Bookworm → Trixie)
- Now reads OS name/version from /etc/os-release at login time

Fixes community-scripts/ProxmoxVE issue with static MOTD after OS upgrade

* add update_motd_ip in routine
2026-01-28 13:26:20 +01:00
CanbiZ (MickLesk)
fa29f74c31 feat(build.func): add nesting warning for systemd-based distributions (#11208) 2026-01-26 22:21:09 +01:00
CanbiZ (MickLesk)
eb596d2364 core: add IPv6 fallback support to get_current_ip functions | add check for SSH_KEYS_FILE in user_defaults (#11067)
* fix(core): add IPv6 fallback support to get_current_ip functions

Fixes IP detection in IPv6-only environments by adding fallback:
- Try IPv4 first (existing behavior)
- Fall back to IPv6 via interface lookup (eth0 scope global)
- Fall back to IPv6 routing with Google/Cloudflare DNS targets

Closes #issue-ipv6-only-environment

* fix(build): use SSH_AUTHORIZED_KEY from user defaults when no SSH_KEYS_FILE exists

When using 'User Defaults' with var_ssh_authorized_key set in default.vars,
the SSH key was not being installed because install_ssh_keys_into_ct() only
checked for SSH_KEYS_FILE (which is only created in Advanced Settings).

Now the function also checks SSH_AUTHORIZED_KEY and creates a temporary
SSH_KEYS_FILE if needed.

Fixes #11062
2026-01-23 09:05:17 +01:00
CanbiZ (MickLesk)
7395a44277 Run TypeScript compilation in Joplin Server scripts
Added 'yarn run tsc' to both update and install scripts for Joplin Server to ensure TypeScript sources are compiled. Also removed an unused variable from build.func for code cleanup.
2026-01-21 13:07:20 +01:00
CanbiZ (MickLesk)
fe2384a2fa Initialize variables in create_lxc_container
Added initialization for ONLINE_TEMPLATE and ONLINE_TEMPLATES arrays at the start of the create_lxc_container function to ensure variables are defined before use.
2026-01-21 12:42:19 +01:00
CanbiZ (MickLesk)
5384adf0c3 Remove unnecessary set +u/set -u in create_lxc_container
only as test exist
2026-01-21 12:40:55 +01:00
CanbiZ (MickLesk)
ed18776710 fix unbound var: ONLINE_TEMPLATES 2026-01-21 12:39:57 +01:00
CanbiZ (MickLesk)
88557d53f4 core: allow empty tags & improve template search (#11020) 2026-01-21 12:01:34 +01:00
CanbiZ (MickLesk)
cb2141ebe2 Revert "Revert "core: add retry logic for template lock in LXC container crea…" (#11013)
This reverts commit 7699f4f6ad.
2026-01-20 23:41:53 +01:00
CanbiZ (MickLesk)
7699f4f6ad Revert "core: add retry logic for template lock in LXC container creation (#1…" (#11011)
This reverts commit d71f24bddb.
2026-01-20 23:35:39 +01:00
CanbiZ (MickLesk)
d71f24bddb core: add retry logic for template lock in LXC container creation (#11002) 2026-01-20 22:36:32 +01:00
CanbiZ (MickLesk)
6dd5fbd7da core: add input validations for several functions (#10995) 2026-01-20 15:03:14 +01:00
CanbiZ (MickLesk)
ff5263981b core: implement ensure_profile_loaded function (#10999) 2026-01-20 14:59:41 +01:00
CanbiZ (MickLesk)
9e69c7a76e feat(core): add RFC 1123/952 compliant hostname/FQDN validation (#10977) 2026-01-19 22:39:57 +01:00
CanbiZ (MickLesk)
6e66359d8f Improve password handling and validation logic (#10925) 2026-01-18 21:19:53 +01:00
CanbiZ
56e0783385 Show container ID warning only for user-specified IDs
The warning about a container ID being in use is now only shown if the user manually specified an ID, not when the ID is auto-assigned. This reduces unnecessary warnings during automated container creation.
2026-01-12 18:52:08 +01:00
CanbiZ
305a2ef449 Validate storage space only if container storage set
Storage space validation now occurs only when CONTAINER_STORAGE is defined, preventing premature validation before storage selection in certain modes. This avoids unnecessary errors and aligns validation with actual container creation logic.
2026-01-12 18:44:46 +01:00
CanbiZ
7f6ebeb119 Update build.func 2026-01-12 18:41:19 +01:00
CanbiZ (MickLesk)
ff76d83fa7 feat(storage): Add unified storage validation & fix GB/MB display (#10745) 2026-01-12 18:12:55 +01:00
CanbiZ (MickLesk)
c8f6786783 core: remove dupliocated pve_version in advanced installs (#10743) 2026-01-12 18:11:25 +01:00
CanbiZ (MickLesk)
1ccf90cb27 core: validate container ID before pct create to prevent failures (#10729)
* feat: validate container ID before pct create to prevent failures

Add validation to ensure container IDs are not already in use before attempting to create containers. This prevents pct create failures when an ID is already assigned to a VM/LXC or used in LVM volumes.

Changes:
- Add validate_container_id() and get_valid_container_id() functions to build.func
- Validate ID in base_settings() for default installation method
- Validate ID in advanced_settings() dialog with user prompt for next available ID
- Add validation to turnkey.sh with interactive dialog
- Add validation to all-templates.sh with automatic ID correction

Checks performed:
- Container config file existence (/etc/pve/lxc/*.conf)
- VM config file existence (/etc/pve/qemu-server/*.conf)
- LVM logical volume usage

Fixes issue where container creation would fail if the suggested/chosen ID was already in use.

* feat: validate container ID before pct create to prevent failures

Add validation to ensure container IDs are not already in use before attempting to create containers. This prevents pct create failures when an ID is already assigned to a VM/LXC or used in LVM volumes.

Changes:
- Add validate_container_id() and get_valid_container_id() functions to build.func
- Validate ID in base_settings() for default installation method
- Validate ID in advanced_settings() dialog with user prompt for next available ID
- Add validation to turnkey.sh with interactive dialog
- Add validation to all-templates.sh with automatic ID correction

Checks performed:
- Container config file existence (/etc/pve/lxc/*.conf)
- VM config file existence (/etc/pve/qemu-server/*.conf)
- LVM logical volume usage

Fixes issue where container creation would fail if the suggested/chosen ID was already in use.

* Update turnkey.sh

* Update build.func
2026-01-12 14:04:28 +01:00
MickLesk
0d9e3c56e0 export gpu for hwaccel 2026-01-06 20:15:22 +01:00
Tobias
c1fe8b91b4 chore: bump copyright to 2026 - happy new year (#10585)
* chore: bump copyright to 2026 - happy new year

* fix

* meilisearch fix source url

* livebook: fix space

* fix source cmd

* fix source cmd
2026-01-06 13:28:12 +01:00
Rémi Bédard-Couture
cd8991875b Export IPV6_METHOD to trigger verb_ip6() function (#10538) 2026-01-04 23:11:29 +01:00
James Polley
8526a25541 Set default LANG in locale configuration (#9440) (#10378)
Ensures LANG is set to en_US.UTF-8 by default if not already defined before updating /etc/locale.gen.

Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com>
2025-12-28 09:04:05 +01:00
CanbiZ (MickLesk)
f1c6f573aa fix(build): correct local template discovery and simplify pattern logic (#10282) 2025-12-24 14:23:10 +01:00
CanbiZ (MickLesk)
ad18ca0ff7 [Core] Auto-cleanup after all update_script executions (#10141) 2025-12-19 22:44:03 +01:00
CanbiZ
60635feeab quickfix; trim timezone 2025-12-16 17:11:14 +01:00
CanbiZ (MickLesk)
44ea7cecb8 core: IP-Range-Scan Support (app.vars / default.vars) (#10038) 2025-12-16 16:52:37 +01:00
CanbiZ
7ab0327376 fix(build): map Etc/* timezones to 'host' for pct compatibility (#10020) 2025-12-16 11:28:12 +01:00
CanbiZ
3568cf52f9 fix(build): App Defaults force mode and prevent unbound variables (#9971)
- load_vars_file() now supports force parameter to override existing variables
- App Defaults uses force=yes to properly apply saved user preferences
- Added safety check for SSH_KEYS_FILE in install_ssh_keys_into_ct()
- Initialize ENABLE_GPU, ENABLE_NESTING, ENABLE_KEYCTL, ENABLE_MKNOD, PROTECT_CT, CT_TIMEZONE in base_settings()
- Added fallback defaults in echo_default() to prevent unbound variable errors when advanced_settings is skipped
2025-12-15 13:02:28 +01:00
CanbiZ
e651c14f76 fix(build): App Defaults now override script defaults with force mode 2025-12-15 09:46:49 +01:00
CanbiZ
35793051a1 core: load app defaults before applying base_settings / fix composer cleanup after install/update (#9965)
* fix(build): load app defaults before applying base_settings

App defaults were loaded after base_settings, causing saved values to be ignored.
Now loads var_* from app defaults file before calling base_settings.

* fix(cleanup): suppress composer root warning in cleanup_lxc

Composer's clear-cache command prompts for confirmation when run as root,
causing scripts to hang at 'Cleaning up' stage. Set COMPOSER_ALLOW_SUPERUSER=1
to suppress the interactive prompt.

Fixes #9952 (Heimdall Dashboard), also affects BentoPDF and other PHP apps.

* Fix COMPOSER_ALLOW_SUPERUSER export in cleanup_lxc

Exports COMPOSER_ALLOW_SUPERUSER before running composer clear-cache to ensure the environment variable is set correctly during cleanup.
2025-12-15 09:37:01 +01:00
CanbiZ
7fae5d71f5 fix(build): skip -features flag when empty (#9871)
Fixes '400 too many arguments' error when creating privileged containers without nesting/fuse features enabled.
2025-12-11 10:52:11 +01:00
CanbiZ
bea9a62cce Feature: extend advanced settings with more options & inherit app defaults (#9776) 2025-12-09 16:01:31 +01:00
CanbiZ
3fb9d02f36 fix: always show SSH access dialog in advanced settings (#9765)
- SSH access dialog is now always displayed regardless of password or SSH keys
- Added step indicator to SSH settings dialogs for consistency
- configure_ssh_settings() now accepts optional step_info parameter
- Updated documentation for SSH configuration functions

Fixes #9753
2025-12-08 14:20:05 +01:00
CanbiZ
4d4ced6b63 feat: Add var_gpu flag for GPU passthrough configuration (#9764)
* feat: Add var_gpu flag for GPU passthrough configuration

Changes:
- Add var_gpu variable to CT scripts for explicit GPU control
- Remove hardcoded GPU_APPS list - GPU detection now uses var_gpu flag
- Add var_gpu to VAR_WHITELIST for persistence in default.vars and app.vars
- Add GPU Passthrough option (Step 19) to advanced_settings wizard (now 20 steps)
- Update documentation

Apps with var_gpu=yes (GPU enabled by default):
- Media: jellyfin, plex, emby, channels, ersatztv, tunarr
- Transcoding: tdarr, unmanic, fileflows
- AI/ML: ollama, openwebui
- NVR: frigate, immich

Usage:
- Disable GPU: var_gpu=no bash -c '$(curl -fsSL ...jellyfin.sh)'
- Enable GPU: var_gpu=yes bash -c '$(curl -fsSL ...debian.sh)'
- Via default.vars: echo 'var_gpu=yes' >> /usr/local/community-scripts/default.vars
- Via advanced settings wizard (Step 19)

* fix: tput rmcup timing, GPU line indentation, echo_default GPU display

* style: add GPU icon variable for consistent formatting
2025-12-08 13:52:30 +01:00
CanbiZ
5a6a30e594 Remove Debian from GPU passthrough (#9754) 2025-12-07 21:11:12 +01:00
CanbiZ
d2e9997d0d Improve NVIDIA device detection for container passthrough (#9670) 2025-12-05 12:44:23 +01:00
CanbiZ
e73f35e2c8 var. core fixes (bash to sh in fix_gpu_gids ...) (#9666)
* Switch container exec from bash to sh in fix_gpu_gids

Replaces bash with sh for container execution in fix_gpu_gids and updates device matching logic to use a POSIX-compliant case statement. This improves compatibility with containers that may not have bash installed.

* fix(apt): auto-recover from interrupted dpkg operations

When a previous installation is interrupted (e.g., by script error or
user cancellation), dpkg can be left in an inconsistent state requiring
'dpkg --configure -a' to fix.

This change:
- Adds dpkg --configure -a check to ensure_apt_working()
- Adds dpkg --configure -a to retry logic in install_packages_with_retry()
- Adds dpkg --configure -a to retry logic in upgrade_packages_with_retry()

Fixes: Omada Controller update failing after interrupted installation
Reported-in: #9663
2025-12-05 09:17:19 +01:00
CanbiZ
0f7c201b57 core: extend storage type support (rbd, nfs, cifs) and validation (iscidirect, isci, zfs, cephfs, pbs) (#9646)
* core: enhance storage type validation and error codes

Improve storage validation for LXC container creation with
explicit checks for unsupported storage types.

Changes:
- Add validation for storage types that don't support containers:
  - iscsidirect (exit 212) - VMs only
  - iscsi/zfs (exit 213) - no rootdir support
  - cephfs (exit 219) - use RBD instead
  - pbs (exit 224) - backups only
- Add connectivity check for network storage (linstor, rbd, nfs, cifs)
- Simplify storage content validation using pvesm status
- Reorganize Proxmox error codes (200-231) for consistency
- Update error messages to be more descriptive and actionable

This helps users identify storage compatibility issues early
before container creation fails with cryptic errors.

* Update build.func
2025-12-04 19:41:01 +01:00
CanbiZ
a826769899 Three-tier defaults system | security improvements | error_handler | improved logging | improved container creation | improved architecture (#9540)
* Refactor Core

Refactored misc/alpine-install.func to improve error handling, network checks, and MOTD setup. Added misc/alpine-tools.func and misc/error_handler.func for modular tool installation and error management. Enhanced misc/api.func with detailed exit code explanations and telemetry functions. Updated misc/core.func for better initialization, validation, and execution helpers. Removed misc/create_lxc.sh as part of cleanup.

* Delete config-file.func

* Update install.func

* Refactor stop_all_services function and variable names

Refactor service stopping logic and improve variable handling

* Refactor installation script and update copyright

Updated copyright information and adjusted package installation commands. Enhanced IPv6 disabling logic and improved container customization process.

* Update install.func

* Update license comment format in install.func

* Refactor IPv6 handling and enhance MOTD and SSH

Refactor IPv6 handling and update OS function. Enhance MOTD with additional details and configure SSH settings.

* big core refactor

* Enhance IPv6 configuration menu options

Updated IPv6 Address Management menu options for clarity and added a new option for fully disabling IPv6.

* Update default Node.js version to 24 LTS

* Update misc/alpine-tools.func

Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com>

* indention

* remove debugf and duplicate codes

* Update whiptail backtitles and error codes

Removed '[dev]' from whiptail --backtitle strings for consistency. Refactored custom exit codes in build.func and error_handler.func: updated Proxmox error codes, shifted MySQL/MariaDB codes to 260-263, and removed unused MongoDB code. Updated error descriptions to match new codes.

* comments

* Refactor error handling and clean up debug comments

Standardized bash variable checks, removed unnecessary debug and commented code, and clarified error handling logic in container build and setup scripts. These changes improve code readability and maintainability without altering functional behavior.

* Update build.func

* feat: Improve LXC network checks and LINSTOR storage handling

Enhanced LXC container network setup to check for both IPv4 and IPv6 addresses, added connectivity (ping) tests, and provided troubleshooting tips on failure. Updated storage validation to support LINSTOR, including cluster connectivity checks and special handling for LINSTOR template storage.

---------

Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com>
2025-12-04 07:52:18 +01:00
CanbiZ
d2a103c230 Set default LANG in locale configuration (#9440)
Ensures LANG is set to en_US.UTF-8 by default if not already defined before updating /etc/locale.gen.
2025-11-25 20:32:18 +01:00
CanbiZ
156d6e46a1 core: Improve timezone detection 2025-11-22 17:56:50 +01:00