Skip to content

Version 5.0.14

Choose a tag to compare

@andreapollastri andreapollastri released this 06 Aug 00:44

[5.0.14] — 2026-08-06

Fixed

  • cipi self-update / cipi api update hung forever on panel API package update — bare ssh-keyscan github.com (no timeout) blocked before Composer, and VCS composer update had no wall-clock limit (stderr was often discarded). Now: timed keyscan + official GitHub host-key fallback, Composer guard (timeout + COMPOSER_PROCESS_TIMEOUT), timed queue stop/migrate, and cipi api update updates cipi/api only (full rebuild remains cipi api upgrade). Self-update delegates to _api_update_package / _gui_update_package so the first upgrade pass already gets the fix.
  • systemctl list-unit-files --quiet UNIT is not an existence check — it exits 0 even when zero units match, so PostgreSQL (and optional PHP-FPM units) could be treated as present. Detection now uses systemctl cat via systemd_unit_exists for DB engines and cipi service.
  • cipi db engines — prints ASCII not_installed instead of an em dash, so API/GUI parsers cannot mis-read the status column.

[5.0.13] — 2026-08-06

Fixed

  • cipi self-update aborted with _cipi_composer_prepare_github: command not found and left the panel on HTTP 500 — upgrading from older builds (e.g. v5.0.2) kept the pre-update self-update/common.sh helpers in memory while sourcing the new gui.sh, which called a helper that did not exist yet. After the blanket chown -R root:root /opt/cipi, GUI .env / storage stayed root-owned and PHP-FPM returned 500. lib/gui.sh now has the same inline fallback as the API (_gui_composer_prepare_github), ensure_cipi_gui_permissions also restores .env ownership, and self-update always reclaims panel permissions at the end even if the Composer step fails. Migration 5.0.13 reclaims API/GUI ownership on update.

[5.0.12] — 2026-08-06

Fixed

  • cipi php switch could leave the panel on nginx 502 — it now rewrites the API and (when installed) GUI FPM pools onto the target PHP (listen = /run/php/cipi-api.sock / cipi-gui.sock), removes them from other versions, stops the old FPM to release the socks, recreates /run/php + both sockets via the new php*-fpm, waits until they exist, and rolls back both pools if either socket never appears.

[5.0.11] — 2026-08-06

Fixed

  • cipi php switch failed with unable to remove '/etc/alternatives/php.dpkg-tmp': Read-only file system — same remount-ro class as SMTP/basicauth/vault. Switch now remounts ///etc writable before update-alternatives, clears stale *.dpkg-tmp leftovers, retries once on RO errors, and prints an actionable recovery hint.

[5.0.10] — 2026-08-06

Fixed

  • cipi php switch false failure after a successful CLI switchupdate-alternatives --set php often prints using /usr/bin/phpX.Y … then exits non-zero when a slave alternative (phar/phpdbg/…) is missing or broken. The panel API treated that as hard failure even though /usr/bin/php already pointed at the new version. Switch now verifies the resolved binary and continues when the master link is correct. Re-running switch when CLI is already on the target version still migrates a leftover API FPM pool.

[5.0.9] — 2026-08-06

Fixed

  • Panel API PUT /api/php/default failed with sudo: a terminal is required to read the password/etc/sudoers.d/cipi-api allowed php list|install|remove but not php switch, so www-data could not set the system default PHP without a TTY. Added cipi php switch * to the whitelist. Migration 5.0.9 regenerates sudoers on cipi self-update.

[5.0.8] — 2026-08-06

Fixed

  • Panel API cipi/api updatescipi self-update / cipi api update now pull cipi/api from GitHub via Composer VCS when no bundled /opt/cipi/cipi-api copy exists (same model as cipi/gui). Only runs if the panel API is already installed (/opt/cipi/api/artisan); it never installs the API on servers that do not use it. Fixes servers stuck on Packagist while GitHub already has 1.16+.
  • Non-interactive CLI flagsparse_args strips wrapping quotes from --key='value' arguments built by the panel API (escapeshellarg), so cipi smtp configure --host=… and similar commands receive clean values.
  • Migration 5.0.8 — reduced to a noop (the previous script duplicated self-update and could abort with ensure_cipi_api_permissions: command not found).
  • ssh_dir: unbound variable during self-update_cipi_composer_prepare_github / _api_composer_prepare_github used local ssh_dir=… kh="${ssh_dir}/…", which under set -u expands ssh_dir before it is assigned and aborted the API/GUI composer step.