Skip to content

Releases: cipi-sh/cipi

Version 4.1.18

06 Apr 07:05

Choose a tag to compare

[4.4.18] — 2026-04-06

Fixed

  • App crontabs wiped by migration 4.4.14 — The sed command in migration 4.4.14 used | as delimiter while the replacement string contained || (bash OR for cipi-app-notify). sed interpreted the first | of || as end-of-replacement, failed to parse, and produced empty output — which crontab -u <user> - then installed as an empty crontab, wiping both the Laravel Scheduler (schedule:run) and the deploy trigger for every app. Fixed the 4.4.14 sed to use # as delimiter. Migration 4.4.18 detects apps missing schedule:run and re-creates the full crontab (scheduler + deploy trigger + failure notification).

Version 4.4.17

03 Apr 21:26

Choose a tag to compare

[4.4.17] — 2026-04-03

Fixed

  • Panel API database commands / sudo: a terminal is required/etc/sudoers.d/cipi-api allowed www-data to run only cipi app|deploy|alias|ssl and cat apps.json, not cipi db. Any sudo cipi db … from PHP (sync GET /api/dbs or queue jobs) therefore asked for a password and failed without a TTY. The whitelist now includes db list, db create, db delete, db backup, db restore (two args), and db password. New installs get this from setup.sh; existing servers via migration 4.4.17 (runs on cipi self-update).

Version 4.4.15

03 Apr 19:23

Choose a tag to compare

[4.4.15] — 2026-04-03

Changed

  • Root crontab S3 backup/prune — all appscipi backup configure now appends default root cron lines that run cipi backup run and cipi backup prune --weeks=4 (no per-app name), unless a cipi backup run line already exists. Migration 4.4.15 rewrites existing root crontab entries from cipi backup run <app> / cipi backup prune <app> --weeks=N to the global form and drops duplicate lines after normalization.

Version 4.4.13

01 Apr 23:18

Choose a tag to compare

[4.4.13] — 2026-04-02

Fixed

  • Root-owned Laravel logs (shared/storage/logs/laravel-*.log) — Old logrotate create 0640 root root left rotated log files owned by root:root. The app user could not read them, breaking spatie/laravel-backup (ZipArchive Permission denied) and other tools that access logs. ensure_app_logs_permissions now reclaims root-owned files in both logs/ and shared/storage/logs/, restoring ownership to the app user. Migration 4.4.13 runs this for all apps.

Version 4.4.7

01 Apr 22:50

Choose a tag to compare

[4.4.7] — 2026-04-02

Fixed

  • Migration / common.sh when sourced standalone — If CIPI_LOG was unset (e.g. migration 4.4.6 sourcing common.sh), mkdir -p "${CIPI_LOG}" expanded to an empty path. common.sh now defaults CIPI_CONFIG and CIPI_LOG before loading the vault.
  • Deploy deploy:writable / chmod on Laravel logs — ACLs applied with setfacl -R and default ACLs on shared/storage/logs caused chmod to fail with Operation not permitted on existing laravel-*.log files. Directory-only ACLs for cipi are kept; per-file and default ACLs on that tree are removed. Migration 4.4.7 clears those ACLs on existing servers and reapplies the corrected layout.

Version 4.4.6

01 Apr 22:43

Choose a tag to compare

[4.4.6] — 2026-04-02

Fixed

  • App log access (logs/, Laravel storage/logs) — App home directories are 750 (app:app), so the cipi user could not traverse /home/<app>/ to read logs without root. Nginx vhost logs are written by www-data; logrotate used create 0640 root …, so after rotation files could be owned by root and no longer writable/readable as intended. New installs and migration 4.4.6 set logs/ to app:www-data with setgid 2775, apply ACLs so cipi can traverse the home and read logs, replace logrotate create with copytruncate (keeps correct ownership), and repair existing root-owned log files under /home/*/logs/.

Added

  • ensure_app_logs_permissions in lib/common.sh — Called from cipi app create and sync app import so new apps get the same layout from day one.

Version 4.4.5

23 Mar 16:25

Choose a tag to compare

[4.4.5] — 2026-03-23

Added

  • PHP Redis extension (phpredis) — The installer and cipi php install <ver> now include the redis package (php*-redis), so the phpredis extension is available for Laravel and other apps using the native Redis client
  • Migration 4.4.5 — On cipi self-update, existing servers automatically install php*-redis for every PHP version already present (7.4–8.5 with FPM), then reload PHP-FPM

Changed

  • Post-install summary — The final screen after setup.sh no longer prints the Stack block (Nginx, MariaDB, Redis, PHP, Node.js, Composer, Deployer versions); it goes from Server (IP, OS) straight to credentials and next steps

Version 4.4.4

20 Mar 17:09

Choose a tag to compare

[4.4.4] — 2026-03-20

Added

  • Optional Git for custom apps — On cipi app create --custom, the Git repository prompt can be left empty to provision SFTP-only hosting (no clone): htdocs is created with a placeholder page, branch is omitted, and cipi deploy explains that there is no repository until you set one with cipi app edit <app> --repository=....

Version 4.3.3

18 Mar 22:01

Choose a tag to compare

[4.3.3] — 2026-03-18

Added

  • cipi app create --custom — Creates a custom app with classic deploy (no zero-downtime): code is deployed into htdocs (no current/shared symlinks). During creation you only choose document root (default /, or e.g. www, dist, public). Nginx is fixed: index index.html index.php, try_files $uri $uri/ /index.php?$args, error_page 404 /404.html (no prompts for try_files or entry point). Custom apps have no database, no .env, no cron, no queue workers, no webhook; post-creation summary shows only SSH, deploy key, and next steps.

Changed

  • App typescipi app create now supports only Laravel (default) and --custom.
  • cipi app show — Displays type "Custom" and docroot when applicable; Webhook line is shown only for Laravel apps.
  • cipi app env — Exits with an error for custom apps (no .env).
  • cipi app reset-db-password — Exits with an error for custom apps (no database).
  • cipi app delete — Skips database drop for custom apps (none was created).

Version 4.3.2

14 Mar 09:53

Choose a tag to compare

[4.3.2] — 2026-03-14

Added

  • Server IP in app creation summarycipi app create now shows the server's public IP address right below the domain in the post-creation summary, making it easy to configure DNS records without leaving the terminal
  • MariaDB connection URL in app creation summarycipi app create now displays a ready-to-use mariadb+ssh:// connection URL after the database credentials; the URL includes SSH credentials, server IP, database credentials, and database name in a single copyable string (e.g. mariadb+ssh://user:sshpass@1.2.3.4/user:dbpass@127.0.0.1/user), useful for connecting from database clients like TablePlus, DBeaver, or Sequel Pro via SSH tunnel

Changed

  • PHP 8.5 as sole pre-installed version — The installer now installs only PHP 8.5 instead of both 8.4 and 8.5; PHP 8.5 is the default CLI version and the runtime used by the Cipi API FPM pool; other PHP versions (7.4–8.4) can still be installed on demand via cipi php install <version>
  • Default PHP for new apps set to 8.5cipi app create now defaults to PHP 8.5 when no --php flag is provided

Fixed

  • MariaDB version "N/A" in post-install summarygrep -oP (Perl regex) is not available in all environments; replaced with portable awk parsing and redirected stderr to stdout (2>&1) since mariadb --version may write to stderr