Commit Graph
100 Commits
Author SHA1 Message Date
CanbiZ (MickLesk) 2326520d17 Archlinux-VM: fix LVM/LVM-thin storage and improve error reporting | VM's add correct exit_code for analytics (#11842)
* fix(archlinux-vm): fix LVM/LVM-thin storage and improve error reporting

- Add catch-all (*) case for storage types (LVM, LVM-thin, zfspool)
  Previously only nfs/dir/cifs and btrfs were handled, leaving
  DISK_EXT, DISK_REF, and DISK_IMPORT unset on LVM/LVM-thin storage
- Fix error_handler to send numeric exit_code to API instead of
  bash command text (which caused 'Unknown error' in telemetry)
- Replace fragile pvesm alloc for EFI disk with Proxmox-managed
  :0,efitype=4m (consistent with docker-vm.sh)
- Modernize disk import: auto-detect qm disk import vs qm importdisk,
  parse output to get correct disk reference instead of guessing names
- Use --format flag (double dash) consistent with modern Proxmox API
- Remove unused FORMAT variable (EFI type now always set correctly)
- Remove fragile eval-based disk name construction

* fix(vm): fix LVM/LVM-thin storage and error reporting for all VM scripts

- Add catch-all (*) case to storage type detection in all VM scripts
  that were missing it (debian-vm, debian-13-vm, ubuntu2204/2404/2504,
  nextcloud-vm, owncloud-vm, opnsense-vm, pimox-haos-vm)
- Add catch-all to mikrotik-routeros (had zfspool but not lvm/lvmthin)
- Fix error_handler in ALL 14 VM scripts to send numeric exit_code
  to post_update_to_api instead of bash command text, which caused
  'Unknown error' in telemetry because the API expects a number
2026-02-12 20:06:02 +01:00
CanbiZ (MickLesk) f7cf7c8adc fix(telemetry): prevent stuck 'installing' status in error_handler.func (#11845)
The catch_errors() function in CT scripts overrides the API telemetry
traps set by build.func. This caused on_exit, on_interrupt, and
on_terminate to never call post_update_to_api, leaving telemetry
records permanently stuck on 'installing'.

Changes:
- on_exit: Report orphaned 'installing' records on ANY exit where
  post_to_api was called but post_update_to_api was not
- on_interrupt: Call post_update_to_api('failed', '130') before exit
- on_terminate: Call post_update_to_api('failed', '143') before exit

All calls are guarded by POST_UPDATE_DONE flag to prevent duplicates.
2026-02-12 20:05:27 +01:00
CanbiZ (MickLesk)andsim-san 291ed4c5ad fix(emqx): increase disk to 6GB and add optional MQ disable prompt (#11844)
EMQX 6.1+ preallocates significant disk space for the MQ feature,
causing high CPU/disk usage on small containers (emqx/emqx#16649).

- Increase default disk from 4GB to 6GB
- Add read -rp prompt during install to optionally disable MQ feature
  via mq.enable=false in emqx.conf (reduces disk/CPU overhead)
- Setting is in install script (not CT script) per reviewer feedback

Co-authored-by: sim-san <sim-san@users.noreply.github.com>
2026-02-12 20:04:47 +01:00
CanbiZ (MickLesk) 403a839ac0 fix(tools): auto-detect binary vs armored GPG keys in setup_deb822_repo (#11841)
The UniFi GPG key at dl.ui.com/unifi/unifi-repo.gpg is already in binary
format. setup_deb822_repo unconditionally ran gpg --dearmor which expects
ASCII-armored input, corrupting binary keys and causing apt to fail with
'Unable to locate package unifi'.

setup_deb822_repo now downloads the key to a temp file first and uses
the file command to detect whether it is already a binary PGP/GPG key.
Binary keys are copied directly; armored keys are dearmored as before.

This also reverts unifi-install.sh back to using setup_deb822_repo for
consistency with all other install scripts.
2026-02-12 20:03:33 +01:00
CanbiZ (MickLesk)andChris 2a03c86384 Tailscale: fix DNS check and keyrings directory issues (#11837)
* fix(tailscale-addon): fix DNS check and keyrings directory issues

- Source /etc/os-release instead of grep to handle quoted values properly
- Use VERSION_CODENAME variable instead of VER for correct URL
- Add fallback DNS resolution methods (host, nslookup, getent) when dig is missing
- Create /usr/share/keyrings directory if it doesn't exist
- Skip DNS check gracefully when no DNS tools are available

Fixes installation failures with 'dig: command not found' and
'No such file or directory' for keyrings path

* Update tools/addon/add-tailscale-lxc.sh

Co-authored-by: Chris <punk.sand7393@fastmail.com>

* Update tools/addon/add-tailscale-lxc.sh

Co-authored-by: Chris <punk.sand7393@fastmail.com>

---------

Co-authored-by: Chris <punk.sand7393@fastmail.com>
2026-02-12 19:12:23 +01:00
CanbiZ (MickLesk) 1c3a3107f1 Deluge: add python3-setuptools as dep (#11833)
* fix(deluge): add python3-setuptools for pkg_resources on Python 3.13

* Ensure dependencies before updating Deluge
2026-02-12 14:50:56 +01:00
CanbiZ (MickLesk) ee2c3a20ee fix(dispatcharr): migrate from requirements.txt to uv sync (pyproject.toml) (#11831) 2026-02-12 14:50:42 +01:00
CanbiZ (MickLesk) 5ee4f4e34b fix(api): prevent duplicate post_to_api submissions (#11836)
Add POST_TO_API_DONE idempotency guard to post_to_api() to prevent
the same telemetry record from being submitted twice with the same
RANDOM_UUID. This mirrors the existing POST_UPDATE_DONE pattern in
post_update_to_api().

post_to_api() is called twice in build.func:
- After storage validation (inside CONTAINER_STORAGE check)
- After create_lxc_container() completes

When both execute, the second call fails with a random_id uniqueness
violation on PocketBase, generating server-side errors.
2026-02-12 13:45:32 +01:00
CanbiZ (MickLesk) 3676157a7c Debian13-VM: Optimize First Boot & add noCloud/Cloud Selection (#11810)
* fix(debian-13-vm): disable systemd-firstboot and add autologin via virt-customize

Newer Debian 13 (Trixie) nocloud images (Jan 29+) have systemd-firstboot
enabled, which blocks the boot process by prompting for timezone and root
password on the serial console. The noVNC console stalls after auditd checks.

Fix by using virt-customize (like docker-vm.sh) to:
- Disable systemd-firstboot.service and mask it
- Pre-seed timezone to Etc/UTC
- Configure autologin on ttyS0 and tty1 for nocloud images
- Set hostname and clear machine-id for unique IDs
- Install libguestfs-tools if not present

Fixes #11807

* feat(debian-13-vm): add cloud-init selection dialog for default and advanced settings

Add select_cloud_init() function consistent with docker-vm.sh that prompts
the user to choose between Cloud-Init (genericcloud image) and nocloud
(with auto-login) in both default and advanced settings.

Previously, default settings hardcoded CLOUD_INIT=no without asking.
2026-02-12 13:26:20 +01:00
CanbiZ (MickLesk) e437e50882 Merge branch 'main' of https://github.com/community-scripts/ProxmoxVE 2026-02-12 13:25:49 +01:00
CanbiZ (MickLesk) 6e9a94b46d quickfix: missing fields for db 2026-02-12 13:25:42 +01:00
CanbiZ (MickLesk) 406d53ea2f core: remove old Go API and extend misc/api.func with new backend (#11822)
* Remove Go API and extend misc/api.func

Delete the Go-based API (api/main.go, api/go.mod, api/go.sum, api/.env.example) and significantly enhance misc/api.func. The shell telemetry file now includes telemetry configuration, repo source detection, GPU/CPU/RAM detection, expanded explain_exit_code mappings, and refactored post_to_api/post_to_api_vm to send non-blocking telemetry to telemetry.community-scripts.org while respecting DIAGNOSTICS/DEV_MODE and adding richer metadata (cpu/gpu/ram/repo_source). Also updates header/author info and improves privacy/robustness and error handling.

* Start install timer and refine error reporting

Call start_install_timer during build startup and overhaul exit/error reporting.

Changes:
- Invoke start_install_timer early in misc/build.func to track install duration.
- Update api_exit_script comments to reference PocketBase/api.func and adjust ERR/SIGINT/SIGTERM traps to post numeric exit codes (use $? / 130 / 143) instead of command strings.
- Replace the previous explain_exit_code implementation with a conditional fallback: only define explain_exit_code if not already provided (api.func is the canonical source). Expanded and reorganized exit code mappings (curl, timeout, systemd, Node/Python/Postgres/MySQL/MongoDB, Proxmox, etc.).
- In error_handler: stop echoing the container log path (host shows combined log), and post a "failed" update to the API with the exit code before offering container cleanup.

Rationale: these changes make telemetry more consistent and robust (numeric codes), provide a safe fallback for exit descriptions when api.func isn't loaded, and ensure failures are reported to the API prior to any automatic cleanup.

* Report install start/failure to telemetry API

Add telemetry hooks in misc/build.func: call post_to_api at installation start to capture early or immediately-failing installs, and call post_update_to_api with status "failed" and the install exit code when a container installation fails. This improves visibility into install failures for monitoring/telemetry.
2026-02-12 11:55:13 +01:00
CanbiZ (MickLesk) d09dd0b664 dispatcharr: include port 9191 in success-message (#11808) 2026-02-11 22:05:32 +01:00
CanbiZ (MickLesk) db69c7b0f8 fix(kasm): Support new version URL format without hash suffix (#11787)
Kasm changed their release URL format starting with v1.18.1:
- Old format: kasm_release_1.18.0.09f70a.tar.gz (with hash)
- New format: kasm_release_1.18.1.tar.gz (without hash)

The script now tries both detection methods:
1. First tries to find URL with hash suffix (old format)
2. Falls back to detecting version from service_images URLs and
   constructing the new URL format

This fixes the update detection for Kasm v1.18.1 and future versions.

Fixes #11785
2026-02-11 13:32:48 +01:00
CanbiZ (MickLesk) 53dbb9d705 fix(elementsynapse): prevent systemd invoke failure during apt install in LXC (#11758) 2026-02-10 15:26:22 +01:00
CanbiZ (MickLesk) 76c7e3a67f fix(workflow): include addon scripts in github-versions extraction (#11757) 2026-02-10 15:19:09 +01:00
CanbiZ (MickLesk) 1357a6f26e fix(msg_menu): redirect menu display to /dev/tty to prevent capture in command substitution 2026-02-09 17:12:56 +01:00
CanbiZ (MickLesk) 14755d5efe fix: add --clear to uv venv calls for uv 0.10 compatibility (#11723)
uv 0.10 requires --clear flag to overwrite existing virtual environments.
Without it, update scripts fail when the venv already exists.

Affected: 13 ct/ update scripts, 25 install/ scripts, glances addon
2026-02-09 15:54:22 +01:00
CanbiZ (MickLesk) 9ed365e9eb fix(koillection): add missing setup_composer in update script (#11734) 2026-02-09 15:53:21 +01:00
CanbiZ (MickLesk) a330afde03 fix(umlautadaptarr): use release appsettings.json instead of hardcoded copy (#11725)
The install script overwrote the correct appsettings.json shipped in the
release archive with a hardcoded copy that was missing newer required
fields (ApiKey, ProxyPort, EnableChangedTitleCache) and had structural
differences (Lidarr/Readarr as arrays instead of objects), causing the
service to fail on startup.

- Remove hardcoded appsettings.json from install script (release archive
  already ships the correct version)
- Backup and restore appsettings.json during updates to preserve user
  configuration

Closes #11665
2026-02-09 14:15:29 +01:00
CanbiZ (MickLesk)andSlaviša Arežina 03571fb26c Refactor: wger (#11722)
* Refactor wger installation script for new services

Updated installation script for wger, changing dependencies and configuration for PostgreSQL, Gunicorn, and Celery. Adjusted paths and service configurations for better compatibility.

* Fix license URL in wger-install.sh

* Fix resource defaults and enhance update process

Updated default resource values and improved backup and restore process for wger installation.

* add json

* Update ct/wger.sh

Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com>

* Update wger.sh

* Update install/wger-install.sh

Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com>

---------

Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com>
2026-02-09 14:12:22 +01:00
CanbiZ (MickLesk) 157e69b365 fix(addons): ensure curl is installed before use in all addon scripts (#11718) 2026-02-09 14:11:51 +01:00
CanbiZ (MickLesk) c2cb89ddc5 fix(netbird): add systemd ordering to start after Docker (#11716)
When Docker is installed in the same LXC, Docker sets the FORWARD chain
policy to DROP on startup. If Netbird starts before Docker finishes
initializing its iptables rules, Docker overrides the Netbird routing
rules, causing traffic routing to fail despite the tunnel being up.

Add a systemd drop-in override that ensures netbird.service starts after
docker.service (only if Docker is installed). This prevents the race
condition and ensures correct iptables ordering after reboot.

Closes #11354
2026-02-09 14:11:07 +01:00
CanbiZ (MickLesk) 59e27bfc8a hotfix nginxui remove jwt 2026-02-09 11:39:46 +01:00
CanbiZ (MickLesk) 7715a02f05 remove whiptail from update scripts for unattended update support (#11712)
* Simplify Alpine update scripts to run upgrade

Remove interactive whiptail menus, loops and newt dependency checks from ct/alpine-docker.sh, ct/alpine-zigbee2mqtt.sh, and ct/alpine.sh. Each update_script now simply calls header_info, runs $STD apk -U upgrade, displays a success message and exits, simplifying and automating the update flow.

* feat(update-scripts): replace whiptail with msg_menu for unattended updates

Remove all whiptail dialogs from ct update_script() functions and replace
with msg_menu() - a lightweight read-based menu that supports:
- PHS_SILENT=1: auto-selects first (default) option for unattended mode
- Interactive: numbered menu with 10s timeout and default fallback

Converted scripts (whiptail menu → msg_menu):
- plex.sh, npmplus.sh, cronicle.sh, meilisearch.sh, node-red.sh
- homeassistant.sh, podman-homeassistant.sh
- vaultwarden.sh, alpine-vaultwarden.sh
- loki.sh, alpine-loki.sh
- alpine-grafana.sh, alpine-redis.sh, alpine-valkey.sh
- alpine-nextcloud.sh

Simplified scripts (removed unnecessary whiptail for single-action updates):
- alpine.sh, alpine-docker.sh, alpine-zigbee2mqtt.sh

Special handling:
- gitea-mirror.sh: replaced yesno/msgbox with read -rp confirmations,
  exit 75 in silent mode for major version upgrades requiring interaction
- vaultwarden.sh/alpine-vaultwarden.sh: passwordbox replaced with
  read -r -s -p, skipped in silent mode with warning
- nginxproxymanager.sh: exit 1 → exit 75 for disabled script

Infrastructure:
- Added msg_menu() helper to misc/build.func
- Added exit code 75 handling in update-apps.sh (skip, not fail)

Closes #11620

* refactor(update-scripts): remove menus where sequential updates suffice

- alpine-nextcloud: add apk upgrade as the update action (was missing)
- meilisearch: run meilisearch + UI updates sequentially (like bar-assistant)
- npmplus: run alpine upgrade + docker pull sequentially, no menu
- vaultwarden: update VaultWarden + Web-Vault sequentially, remove admin
  token option (interactive-only, not suitable for unattended updates)
- alpine-vaultwarden: just run apk upgrade, remove admin token menu
2026-02-09 11:05:31 +01:00
CanbiZ (MickLesk) 1439d98ec4 fix(hwaccel): add libmfx-gen1.2 to Intel Arc setup for QSV support (#11707)
Add missing libmfx-gen1.2 package to _setup_intel_arc() for both
Ubuntu and Debian. Without this package, QSV hardware acceleration
fails with 'Error creating a MFX session: -9'.

The package was already present in _setup_intel_modern() (Gen9+)
but missing from the Arc GPU path.

Closes #11701
2026-02-09 11:04:22 +01:00
CanbiZ (MickLesk) 4e96bb664f Nginx-UI: better User Handling | ACME (#11715)
* fix(nginx-ui): remove admin user hack, use setup wizard instead

The previous install script started nginx-ui for 3 seconds, stopped it,
and ran reset-password to create an admin user. This caused:
- Race condition: the internal setup wizard could trigger during the brief
  start window, conflicting with the reset-password approach
- Admin users unable to login after the setup wizard fired
- Settings lockup due to overloaded app.ini with hardcoded nginx paths
  that conflict with UI-managed settings

Changes:
- Remove start/stop/reset-password hack from install script
- Simplify app.ini to match upstream defaults (minimal config)
- Let users complete the natural setup wizard on first visit
- Update JSON: remove default credentials, add setup wizard note
- Add setup wizard hint to CT script output

The setup wizard properly handles admin account creation and ACME email
configuration, which are both needed for full functionality.

Ref: ProxmoxVED#1408

* Update nginx-ui.sh
2026-02-09 10:52:33 +01:00
CanbiZ (MickLesk) f07c221ca4 NginxProxymanager: use better-sqlite3 (#11708)
* fix(nginxproxymanager): update for better-sqlite3 and setup wizard

NPM switched to better-sqlite3 as the knex database client.
The old sqlite3 client causes 'Internal Error' on user creation.

- Update production.json in install/update to use better-sqlite3
- Add sed patch in update script to fix existing production.json
- Add useNullAsDefault: true to match upstream knex config
- Remove default credentials from JSON (NPM now uses setup wizard)
- Add note about setup wizard for first-time users

Ref: NginxProxyManager/nginx-proxy-manager@0b2fa82
Closes #11681

* Update nginxproxymanager.json

* Remove disabled script error messages

Removed error messages related to OpenResty APT repository issues.
2026-02-09 10:33:44 +01:00
CanbiZ (MickLesk) 88e84f71a6 ComfyUI: Dynamic Fetch PyTorch Versions (#11657) 2026-02-08 11:36:04 +01:00
CanbiZ (MickLesk) 68711bf392 Semaphore: switch from Debian to Ubuntu 24.04 (#11670) 2026-02-08 11:35:33 +01:00
CanbiZ (MickLesk) 319e6ee46f remove nginx disabled flag 2026-02-07 23:15:46 +01:00
CanbiZ (MickLesk) 173aaeeb06 NocoDB: pin to v0.301.1 (#11655)
* Pin NocoDB to version 0.301.1 due to ipaddr.js module error in 0.301.2

* Pin NocoDB version to 0.301.1 in github-versions.json

* Remove version pin note from nocodb.json (handled in github-versions.json)

* Add version pin to check_for_gh_release in NocoDB CT

Prevents the update check from looking for versions newer than 0.301.1
2026-02-07 20:44:17 +01:00
CanbiZ (MickLesk) e70de7d95f feat(tools): fallback to previous release when asset is missing (#11660)
When fetch_and_deploy_gh_release fails to find a matching asset in the
target release (binary/prebuild/singlefile modes), scan up to 15 older
releases for a compatible asset. Prompts the user with a 60s timeout
(default: yes) before using the fallback version.

Addresses issues like SigNoz #11652 where the latest release has no
matching OTel collector binary.
2026-02-07 20:37:50 +01:00
CanbiZ (MickLesk) 263cbbeb86 Pin Memos to v0.25.3 - last version with release binaries (#11658)
* Pin Memos to v0.25.3 - last version with release binaries

v0.26.0 removed release binaries (issue usememos/memos#5552)
Pinning to v0.25.3 (Nov 25, 2025) which has 7 binary assets available

This is a temporary solution until v0.27.0 releases with binaries
as indicated by MickLesk in issue #11474

* Pin Memos scripts to v0.25.3 instead of latest

Both CT update script and install script now explicitly use v0.25.3
instead of 'latest' to ensure binaries are available

* Add version pin to check_for_gh_release in Memos CT

Prevents the update check from looking for versions newer than v0.25.3
2026-02-07 19:41:55 +01:00
CanbiZ (MickLesk) 48d743910a Downgrade: OpenProject | NginxProxyManager | Semaphore to Debian 12 due to persistent SHA1 issues (#11654)
* Downgrade OpenProject and NginxProxyManager to Debian 12 due to SHA1 signature issues

* Downgrade Semaphore to Debian 12 due to SHA1 signature issues in Ansible PPA
2026-02-07 19:41:37 +01:00
CanbiZ (MickLesk) 9c9771f684 Semaphore: Change Ubuntu release from 'jammy' to 'noble' (#11625) 2026-02-06 17:58:03 +01:00
CanbiZ (MickLesk) 70c9df24d9 Pangolin: replace build:sqlite with db:generate + build (#11616)
* Replace build:sqlite with db:generate + build

Update build flow in ct/pangolin.sh and install/pangolin-install.sh to use `npm run db:generate` followed by `npm run build` instead of the old `npm run build:sqlite`. Also normalize a DB generation invocation by replacing `npm run db:sqlite:generate` with `npm run db:generate` in the installer. These changes consolidate DB generation and use the standard build step.

* Update pangolin-install.sh

* db push on update
2026-02-06 14:25:44 +01:00
CanbiZ (MickLesk)andChris 2af418c729 PVE LXC Apps Updater (#11533)
* Add PVE LXC Apps Updater script and metadata

Add a new Proxmox LXC Apps Updater: frontend/public/json/update-apps.json registers the app for the UI (install script points to tools/pve/update-apps.sh) and provides documentation/notes for usage and environment variables. Add tools/pve/update-apps.sh (MIT, authors noted) — a full-featured updater for community-scripts managed LXC containers that supports interactive Whiptail selection or environment-driven automation (var_backup, var_backup_storage, var_container, var_unattended, var_skip_confirm, var_auto_reboot). Features include exportable JSON config, optional vzdump backups, detection of service/update script from the community repo, temporary CPU/RAM adjustments for build requirements, unattended update mode, restore-from-backup on failure, and reporting/optional reboot of containers that require it.

* Fix source command syntax in update-apps.sh

* Update tools/pve/update-apps.sh

Co-authored-by: Chris <punk.sand7393@fastmail.com>

* Update tools/pve/update-apps.sh

Co-authored-by: Chris <punk.sand7393@fastmail.com>

* Update tools/pve/update-apps.sh

Co-authored-by: Chris <punk.sand7393@fastmail.com>

* Update tools/pve/update-apps.sh

Co-authored-by: Chris <punk.sand7393@fastmail.com>

* Update tools/pve/update-apps.sh

Co-authored-by: Chris <punk.sand7393@fastmail.com>

* Update tools/pve/update-apps.sh

Co-authored-by: Chris <punk.sand7393@fastmail.com>

* Update tools/pve/update-apps.sh

Co-authored-by: Chris <punk.sand7393@fastmail.com>

* Update tools/pve/update-apps.sh

Co-authored-by: Chris <punk.sand7393@fastmail.com>

---------

Co-authored-by: Chris <punk.sand7393@fastmail.com>
2026-02-06 08:54:21 +01:00
CanbiZ (MickLesk) cb939861b8 github: extend docs / contribution / templates (#10921)
* Enhance setup-fork.sh with --full mode and misc/ targeting

Added a new --full flag to setup-fork.sh to allow updating all files, not just those in misc/. Updated documentation and usage examples to clarify the new behavior. Improved file search and replacement logic for broader compatibility and flexibility.

* add AI.md

* fix links in AI.md

* Update contribution docs and templates for best practices

Refreshed AI.md with new reference scripts, expanded checklist, and improved AI assistant tips. Updated container and install script templates for modern defaults (Debian 13, larger disk, two tags), clarified helper function usage, and improved update/backup patterns. Enhanced JSON template with realistic metadata, new fields, and example notes.

* Update fetch_and_deploy_gh_release usage in docs and templates

Standardize the usage of fetch_and_deploy_gh_release by specifying all arguments, including mode, version, and target directory, in AI.md and template scripts. This clarifies the function's usage and ensures consistency across documentation and install/update templates.

* Revise contribution docs and update CT template

Expanded and clarified contribution documentation for forking, local development, cherry-picking, and AI-assisted code generation. Improved explanations for setup-fork.sh, local testing, and PR submission. Enhanced the container script template with detailed comments, clearer update_script structure, and step-by-step guidance for maintainers and contributors.

* Update fork and release instructions in contribution docs

Replaced placeholder GitHub repo references with 'YourUsername/YourRepo' throughout documentation for clarity. Expanded explanations in FORK_SETUP.md and README.md to clarify the difference between development and production script execution, and emphasized the importance of cherry-picking only relevant files for PRs. Updated install script template examples to use the new repo placeholder.

* Update GitHub repo placeholders in docs and templates

Replaced 'YourUsername/YourRepo' with 'owner/repo' in documentation and template scripts for consistency and clarity. This change standardizes example usage and reduces confusion for contributors.

* Move user submitted guides to guides directory

Renamed USER_SUBMITTED_GUIDES.md from docs/contribution to docs/guides for improved documentation organization.

* Update contribution docs for improved workflow and clarity

Revised multiple documentation files to clarify the recommended development workflow: contributors must test scripts via curl from their GitHub fork (not local bash), use setup-fork.sh for URL rewriting, and submit only new files using cherry-pick. Expanded and modernized install and JSON metadata template guides, emphasizing use of helper functions, resource requirements, and the JSON generator tool. Added detailed step-by-step instructions, best practices, and updated examples throughout.

* Update contribution docs for new file structure

Updated documentation to reflect the migration of install scripts from install_scripts/ to install/, and JSON metadata from config/ to frontend/public/json/. Adjusted all relevant paths, instructions, and examples to match the new directory structure for improved clarity and consistency.

* Update contribution docs for fork setup and metadata

Revised documentation to standardize use of 'bash docs/contribution/setup-fork.sh --full' for fork configuration, clarified install script execution flow, and updated JSON metadata template and field references. Improved helper function docs, resource requirements, and category lists. Updated references and instructions throughout for consistency and accuracy.

* Docs: add GPU/TUN, update endpoints & tool refs

Documentation updates across guides and function references:

- Added var_gpu and var_tun configuration entries to CONFIGURATION_REFERENCE (GPU passthrough and TUN/TAP support), including features and prerequisites.
- Fixed repository URLs throughout UNATTENDED_DEPLOYMENTS and examples: replaced community-scripts/ProxmoxVED with community-scripts/ProxmoxVE and updated curl usage to the new paths.
- Added an "Advanced Configuration Variables" table and examples (var_os, var_version, var_gpu, var_tun, var_nesting) to UNATTENDED_DEPLOYMENTS; adjusted sample apps, hostnames, and container mappings in batch examples.
- Switched API endpoints in API_FUNCTIONS_REFERENCE and API_USAGE_EXAMPLES from http://api.community-scripts.org to https://api.community-scripts.org.
- Expanded BUILD_FUNC_FUNCTIONS_REFERENCE with container resource/ID management helper descriptions (validate_container_id, get_valid_container_id, maxkeys_check, get_current_ip, update_motd_ip).
- Large edits to TOOLS_FUNC_FUNCTIONS_REFERENCE: renamed/refactored helper signatures and docs (pkg_install -> install_packages_with_retry, pkg_update -> upgrade_packages_with_retry), added new tooling functions (fetch_and_deploy_gh_release, check_for_gh_release, prepare_repository_setup, verify_tool_version) and updated examples and feature notes.
- Updated vm/README.md to list additional VM scripts (new and reorganized examples).

These are documentation-only changes to clarify configuration options, correct links and endpoints, and expand the reference material for tooling and build helpers.

* Docs: expand developer/debugging and tools references

Add extensive documentation and examples across contribution, guides, templates and tools references. Key changes:
- Introduce a Developer Mode & Debugging section (dev_mode flags: trace, keep, pause, breakpoint, logs, dryrun, motd) in CONTRIBUTING.md with usage example.
- Provide a standard update_script() pattern and BookStack example in GUIDE.md to clarify update flow (stop services, backup, deploy, restore, migrate, restart).
- Add new helper entries (BookLore, KaraKeep) and advanced repository helpers (setup_deb822_repo, prepare_repository_setup, cleanup_tool_keyrings) plus utilities (setup_meilisearch, verify_tool_version) in HELPER_FUNCTIONS.md.
- Update install template to suggest PNPM, Java 21 and Meilisearch; update example DB setup notes in AppName-install.sh.
- Add var_diagnostics option and switch var_fuse to boolean/toggle wording in CONFIGURATION_REFERENCE.md; clarify privacy and defaults.
- Adjust example container definitions in UNATTENDED_DEPLOYMENTS.md (container entries and resource values).
- Change storage and flag variables and examples in BUILD_FUNC_USAGE_EXAMPLES.md (ssd-storage, var_fuse/var_tun, etc.).
- Expand TOOLS_FUNC_FUNCTIONS_REFERENCE.md with many setup_* function signatures, environment vars, clarified fetch_and_deploy_gh_release modes/parameters, and additional tool docs (nodejs, php, mariadb_db, postgresql_db, java, uv, yq, meilisearch, composer, build tools).

These updates improve onboarding, debugging guidance, and operational clarity for contributors and maintainers.
2026-02-05 16:45:41 +01:00
CanbiZ (MickLesk) c576728833 typos 2026-02-05 15:31:45 +01:00
CanbiZ (MickLesk) 06d9199d89 feat(sqlserver): add SQL Server 2025 with Ubuntu 24.04 support & refactor 2022 (#11546)
- Add new SQL Server 2025 scripts with Ubuntu 24.04 support
- Refactor both versions to use setup_deb822_repo
- Fix debuginfod profile causing update errors (#11522)
- Use apt instead of apt-get in CT scripts
- Consistent messaging and formatting
2026-02-05 11:55:32 +01:00
CanbiZ (MickLesk) 92506cdc34 feat(cloud-init): add interactive SSH key discovery and selection (#11547)
- Add SSH key discovery from standard paths (/root/.ssh, /etc/ssh)
- Add whiptail-based interactive key selection dialog
- Extract key fingerprints and comments for better identification
- Support multiple key selection with checkboxes
- Auto-skip private keys and known_hosts files
- Restore shell state after library load
2026-02-05 08:11:13 +01:00
CanbiZ (MickLesk) 129f2f6329 Refactor: Docker-VM (Multi-OS / Cloud-Init / Stabilization) (#9047)
* Upgrade to Debian 13 and clean up dependencies

Updated the script to use Debian 13 Qcow2 Disk Image and removed redundant installation of libguestfs-tools.

* Update URL for Debian Qcow2 Disk Image

* Update docker-vm.sh

* Update fmt.Println message from 'Hello' to 'Goodbye'

* add cloudinit function
2026-02-05 08:03:04 +01:00
CanbiZ (MickLesk) 338c054112 action: prevent duplicate History section in changelog-archive workflow 2026-02-04 14:04:34 +01:00
CanbiZ (MickLesk) 5210d1bb71 fix sorting in changelog-archive.yml 2026-02-04 13:59:57 +01:00
CanbiZ (MickLesk) c599fd7551 fix github - changelog double history 2026-02-04 13:58:19 +01:00
CanbiZ (MickLesk) fa86809863 core: create vm-core.func from dev (#11528) 2026-02-04 11:16:06 +01:00
CanbiZ (MickLesk) 97e37cfb1f Process oldest issues first; raise page cap
Add sort: 'updated' and order: 'asc' to the issues search so closed/unlocked items are processed oldest-first. Improve logging to show items per page and total_count. Increase the pagination limit from 10 to 100 (allowing up to ~10,000 results) and update related comments.
2026-02-03 10:32:18 +01:00
CanbiZ (MickLesk) 24b2a945d5 Paginate search and lock issues silently
Replace single-page search with paginated queries (per_page=100) and iterate pages up to GitHub's 1000-result limit. Remove the hardcoded cutoffDate and the logic that added comments; instead lock issues/PRs directly with lock_reason='resolved'. Add logging for pages processed, skipped items, failures, and a total locked count. This makes the workflow scalable for large repositories and avoids posting automatic comments.
2026-02-03 09:35:12 +01:00
CanbiZ (MickLesk) c612bfefcd Fetch Web-Vault directly to target dir
Simplify the Web-Vault update flow by creating /opt/vaultwarden/web-vault and calling fetch_and_deploy_gh_release with that path as the deployment target. Removes temporary directory creation, move and cleanup (mktemp/mv/rm -rf) and ensures the destination exists before downloading. Ownership and the success message are preserved.
2026-02-02 17:14:48 +01:00
CanbiZ (MickLesk) d7872a8240 Use temp dir for Web-Vault deployment
Deploy the Web-Vault release into a temporary directory before moving it into /opt/vaultwarden. The change creates a mktemp -d directory, passes that to fetch_and_deploy_gh_release, moves the extracted web-vault into /opt/vaultwarden/web-vault, and removes the temp dir. This prevents partial or mixed artifacts in /opt during the fetch/extract step and keeps the existing ownership/chown behavior.
2026-02-02 17:03:02 +01:00
CanbiZ (MickLesk) abfd57f486 hotfix vaultwarden 2026-02-02 16:47:16 +01:00
CanbiZ (MickLesk) 474f1e8886 Refactor: Vaultwarden (#11445)
* refactor(vaultwarden): modernize using tools.func helpers

- Use setup_rust instead of manual rustup installation
- Use fetch_and_deploy_gh_release for source tarball (no git clone)
- Use fetch_and_deploy_gh_release for Web-Vault prebuild download
- Use check_for_gh_release for update detection (automatic version tracking)
- Use get_latest_github_release (strip v prefix by default)
- Use ensure_dependencies for argon2
- Remove git from dependencies (no longer needed)
- Use heredoc with proper formatting for systemd service file
- Automatic version tracking via ~/.vaultwarden and ~/.vaultwarden_webvault

Fixes #11393

* minor fixes

* Enhance Vaultwarden installation script for web vault

* Update vaultwarden-install.sh

* Update vaultwarden.sh
2026-02-02 14:52:09 +01:00
CanbiZ (MickLesk) b86fabf8ab refactor(forgejo,readeck): use fetch_and_deploy_codeberg_release function (#11460) 2026-02-02 13:53:21 +01:00
CanbiZ (MickLesk) be42ee40fb Disable NPM install and update due to OpenResty SHA-1 signature issue (#11406) (#11471) 2026-02-02 13:11:34 +01:00
CanbiZ (MickLesk) 7fc77fe5be various scripts: use ensure_dependencies instead of apt (#11463)
* refactor(ct): replace apt install with ensure_dependencies in update_script functions

* refactor(ct): replace remaining apt install with ensure_dependencies

* refactor(ct): replace remaining apt install with ensure_dependencies

* refactor(ct): remove redundant dpkg checks before ensure_dependencies

* refactor(ct): remove ALL redundant checks before ensure_dependencies

* Update neo4j.sh
2026-02-02 13:01:17 +01:00
CanbiZ (MickLesk) 627587c54b feat(autocaliweb): migrate from GitHub to Codeberg (#11440)
- Add Codeberg API functions: codeberg_api_call, get_latest_codeberg_release, check_for_codeberg_release
- Add fetch_and_deploy_codeberg_release function for Codeberg releases
- Update autocaliweb install and update scripts to use Codeberg
- Update autocaliweb.json documentation and website URLs
2026-02-01 22:27:31 +01:00
CanbiZ (MickLesk) 98dc00a1a0 fix(2fauth): export PHP_VERSION for nginx config (#11441)
The PHP_VERSION variable was only available within the setup_php
function call scope. By setting it separately before the function
call, it remains available for the nginx configuration heredoc.

Fixes #11439
2026-02-01 22:26:18 +01:00
CanbiZ (MickLesk) 0fc4e6ed10 fix(koillection): add export APP_RUNTIME for composer post-install scripts 2026-01-30 14:27:29 +01:00
CanbiZ (MickLesk) 3fc0b29d88 fix(koillection): override FrankenPHP runtime with Symfony runtime
Koillection 1.8.0 configures FrankenPHP runtime in composer.json extra,
but we use Apache. Fix by:
- Adding APP_RUNTIME to .env.local for CLI commands
- Adding SetEnv APP_RUNTIME in Apache VirtualHost for web requests
- Creating uploads directory before chown
- Update script checks and adds runtime config for upgrades
2026-01-30 13:53:20 +01:00
CanbiZ (MickLesk) 80cba8d29d fix chown 2026-01-30 13:31:00 +01:00
CanbiZ (MickLesk) 90eb33c09e refactor(php): remove redundant PHP_MODULE entries (#11362)
- Add dom and gmp to BASE_MODULES in setup_php()
- Remove modules already covered by BASE_MODULES (cli,common,bcmath,curl,dom,gd,gmp,intl,mbstring,readline,xml,zip)
- Remove modules already covered by EXTENDED_MODULES (mysql,sqlite3,pgsql,redis,imagick,bz2,apcu)
- Remove modules already covered by BUILTIN (ctype,exif,ffi,fileinfo,gettext,iconv,pdo,tokenizer)
- Affected: 31 install scripts, 12 ct scripts
2026-01-30 13:05:05 +01:00
CanbiZ (MickLesk) c5e4b1a210 Refactor: Koillection (#11361) 2026-01-30 13:04:42 +01:00
CanbiZ (MickLesk) 191301f953 immich: Quickfix MAINT_MODE unset variable handling in immich.sh
Use default value for MAINT_MODE to prevent errors when the variable is unset. This ensures the maintenance mode check works reliably.
2026-01-30 11:14:06 +01:00
CanbiZ (MickLesk) 710884c90b fix(php): improve module handling and prevent installation failures (#11358)
Changes to setup_php():
- Add version detection for PHP 8.5+ built-in opcache
- Define BUILTIN_MODULES list for modules included in php-common
  (ctype, fileinfo, iconv, tokenizer, phar, posix, etc.)
- Filter out built-in modules before attempting installation
- Verify each package exists via apt-cache before adding to install list
- Skip unavailable packages with informational message instead of error
- Add extended default modules (mysql, sqlite3, pgsql, redis, imagick,
  bz2, apcu) to cover ~90% of typical use cases
- Improve error handling with graceful degradation

This prevents installation failures when:
- PHP version has module built into core (e.g., opcache in 8.5+)
- Module is provided by php-common (ctype, fileinfo, etc.)
- Package is renamed or unavailable in specific PHP version

Fixes #11359
2026-01-30 10:29:51 +01:00
CanbiZ (MickLesk) 313faa02fe fix(meilisearch): fix dump creation and improve migration handling
Bug fixes:
- dumpUid is only available AFTER the dump task completes, not in the
  initial POST /dumps response. Fixed the extraction logic to wait for
  task completion first, then extract dumpUid from the task result.
- Removed non-existent API endpoint /dumps/{uid}/import - Meilisearch
  only supports dump import via CLI flag --import-dump

Improvements:
- If dump creation fails, backup the data directory before proceeding
  instead of just overwriting (allows manual recovery)
- Better error messages with actual API response content
- Proper health check loop during import with process monitoring
- Clear user guidance about what to do after failed migration

Fixes #11349
2026-01-30 10:29:08 +01:00
CanbiZ (MickLesk) 49aa898edd fix(meilisearch): add data migration for version upgrades (#11356)
Meilisearch requires a dump/restore process when upgrading between
incompatible versions (different major.minor). The previous update
logic simply replaced the binary, causing database corruption.

This fix:
- Detects version changes that require migration
- Creates a data dump before upgrading
- Removes old incompatible data after binary update
- Imports the dump to restore data in new format
- Falls back to --import-dump CLI flag for older API versions
- Adds proper error handling and timeouts

Fixes #11349
2026-01-30 10:20:57 +01:00
CanbiZ (MickLesk) 94b9190e07 cloudflare: Remove deprecated DNS-over-HTTPS proxy option (#11068)
* Remove deprecated DNS-over-HTTPS proxy option from cloudflared installer

* docs(cloudflared): update notes - remove deprecated DoH proxy info

- DoH proxy-dns feature deprecated by Cloudflare (Feb 2026)
- Add tunnel setup instructions instead
2026-01-29 17:15:10 +01:00
CanbiZ (MickLesk) 09b343d150 docs(cloudflared): update notes - remove deprecated DoH proxy info
- DoH proxy-dns feature deprecated by Cloudflare (Feb 2026)
- Add tunnel setup instructions instead
2026-01-29 15:59:05 +01:00
CanbiZ (MickLesk) c464b95fa3 fix(pve-post-install): check file exists before removing no-nag-script
Fixes script interruption when selecting 'no' to disable subscription nag
on a fresh system where no-nag-script doesn't exist.
2026-01-29 15:56:51 +01:00
CanbiZ (MickLesk) 1b87ec7bfd Notifiarr: change installation check from apt to systemd service (#11319) 2026-01-29 14:58:49 +01:00
CanbiZ (MickLesk) cc70f84d27 feat(workflow): exclude automated PRs and bot issues from locking 2026-01-29 14:41:35 +01:00
CanbiZ (MickLesk) 33a531960e fix(workflow): use github-script for scheduled lock after 3 days 2026-01-29 14:30:32 +01:00
CanbiZ (MickLesk) 3294c58713 fix(workflow): use github-script for immediate lock on close 2026-01-29 14:29:19 +01:00
CanbiZ (MickLesk) 845aebd654 fix(workflow): use github.token for lock-threads action 2026-01-29 14:22:10 +01:00
CanbiZ (MickLesk) dd2def9384 fix(workflow): lock old issues silently, new issues with comment 2026-01-29 13:59:24 +01:00
CanbiZ (MickLesk) 82740302bc Update lock-issue workflow to use new exclusion key
Replaces 'issue-created-after' with 'exclude-issue-created-before' in the lock-issue GitHub Actions workflow for improved clarity and compatibility.
2026-01-29 13:57:33 +01:00
CanbiZ (MickLesk) 610509e834 fix(workflow): only lock issues created after 2026-01-27 2026-01-29 13:53:46 +01:00
CanbiZ (MickLesk) aed241fdc4 fix(workflow): use dessant/lock-threads for issue locking 2026-01-29 13:52:22 +01:00
CanbiZ (MickLesk) 25ecb12060 feat(jellyfin): add logrotate instead of reducing log level (#11326) 2026-01-29 13:40:32 +01:00
CanbiZ (MickLesk) 44f5656a56 Alpine-Valkey (#11320) 2026-01-29 13:31:14 +01:00
CanbiZ (MickLesk) 8e7dc349ac core: Add config file handling options | Fix Vikunja update with interactive overwrite (#11317) 2026-01-29 12:43:54 +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) 032dfacce2 fix(install): run chown in subshell to avoid ERR trap 2026-01-28 14:42:10 +01:00
CanbiZ (MickLesk) 0ace1009ad fix(frontend): wrap Tooltip in TooltipProvider 2026-01-28 14:37:29 +01:00
CanbiZ (MickLesk) 2938bb29f5 fix(install): ignore chown error in unprivileged containers 2026-01-28 14:34:22 +01:00
CanbiZ (MickLesk) c7669c39c3 Frontend: use github-versions.json for version display (#11281)
* fix(frontend): use github-versions.json for version display

- Update AppVersion type to match new format with slug field
- Switch from versions.json to github-versions.json API
- Simplify version matching by direct slug comparison
- Remove 'Loading versions...' text - show nothing if no version found

* feat(frontend): show tooltip for pinned versions

* fix(api): add github-versions endpoint and fix legacy versions route
2026-01-28 14:29:26 +01:00
CanbiZ (MickLesk) 2434e0ab3b feat(workflow): auto-approve and merge github-versions PR 2026-01-28 13:59:01 +01:00
CanbiZ (MickLesk) 49c1eef653 fix(install): fix Debian 13 LXC template root ownership bug (#11277)
The Debian 13 LXC template has a bug where / is owned by nobody instead
of root. This causes systemd-tmpfiles to fail with exit code 73 during
package installation (e.g. authelia).

Fix by checking and correcting / ownership at container setup.
2026-01-28 13:56:17 +01:00
CanbiZ (MickLesk) 21d09cfb17 github: add GitHub-based versions.json updater (#10021)
* feat(workflow): add GitHub-based versions.json updater

Replaces newreleases.io with direct GitHub API queries.
Extracts repos from fetch_and_deploy_gh_release calls in install scripts.
Runs 2x daily (06:00 and 18:00 UTC).

* feat(workflow): extend version crawler with multiple sources

- Method 1: fetch_and_deploy_gh_release calls (direct)
- Method 2: GitHub URLs extracted from all scripts
- Method 3: VM image sources (HAOS)
- Method 4: Docker Hub / GHCR versions
- Method 5: npm Registry versions

Also tries tags fallback when no releases exist.

* feat(workflow): rewrite with version-sources.json config

- Generates version-sources.json with structured metadata
- Each entry has: slug, type, source, script, version, date
- Extracts from: fetch_and_deploy_gh_release, GitHub URLs, npm, Docker
- Generates versions.json for backward compatibility
- Fully automatic, no manual mapping needed

* feat(workflow): add manual GitHub mappings and pveam support

- Method 5: Manual GitHub mappings for 36 apt-based apps
  (grafana, redis, postgresql, mariadb, influxdb, etc.)
- Method 6: Proxmox LXC templates (debian, ubuntu, alpine)
  via download.proxmox.com index
- Method 7: Special sources (HAOS VM)

Total coverage: ~310+ apps

* feat(workflow): expand manual GitHub mappings to 75 apps

Added mappings for:
- Apache projects (cassandra, couchdb, guacamole, tomcat)
- Media apps (tdarr, unmanic, shinobi)
- DevOps (coolify, dokploy, runtipi, sonarqube)
- Databases (mongodb, mysql, neo4j, rabbitmq)
- And 30+ more apps

Total manual mappings: 75

* feat: add manual placeholders for 34 unknown-source apps

- Added 34 apps with 'manual:-' type for apps without known sources
- Added manual type handler in version-fetch (returns '-' placeholder)
- Added manual counter to summary output
- Coverage now 100% (all 405 scripts included)

Manual entries can be updated later when sources are discovered.

* Refactor and update GitHub workflow files

Moved several workflow files to a 'bak' backup directory and renamed 'close-ttek-issues.yaml' to 'close-tteck-issues.yaml'. Refactored 'update-versions-github.yml' to focus on extracting and updating GitHub versions, simplified the extraction logic, and updated the workflow schedule to run four times daily. Minor variable and logic improvements were made in 'close-discussion.yml'.

* clean file

* chore: empty versions.json for workflow test
2026-01-28 13:50:18 +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) fa00a51110 fix(tools): prevent systemd-tmpfiles failure in unprivileged LXC during .deb install (#11271)
Set SYSTEMD_OFFLINE=1 for apt/dpkg in binary mode to prevent systemd-tmpfiles
'unsafe path transition' errors in unprivileged containers (Debian 13+/systemd 257+).
2026-01-28 13:25:07 +01:00
CanbiZ (MickLesk) 03e660fdef fix(tools.func): add PHP-FPM systemd override for LXC containers 2026-01-28 11:39:48 +01:00
CanbiZ (MickLesk) 3a5e2f9515 quickfix broken fpm install 2026-01-28 11:29:11 +01:00
CanbiZ (MickLesk) 3a04923479 various scripts: use setup_meilisearch function (#11259) 2026-01-28 11:09:56 +01:00
CanbiZ (MickLesk) 533ca924c9 tools.func: fix php "wait_for" hint (#11254) 2026-01-28 11:09:30 +01:00
CanbiZ (MickLesk) ddd0164c54 tools.func: add new function - setup_meilisearch (#11258) 2026-01-28 11:08:52 +01:00
CanbiZ (MickLesk) 6c1d1e1e71 Refactor: NPMPlus / Default Login (#11262) 2026-01-28 11:06:02 +01:00