Releases: cipi-sh/cipi
Releases · cipi-sh/cipi
Version 4.1.18
[4.4.18] — 2026-04-06
Fixed
- App crontabs wiped by migration 4.4.14 — The
sedcommand in migration 4.4.14 used|as delimiter while the replacement string contained||(bash OR forcipi-app-notify).sedinterpreted the first|of||as end-of-replacement, failed to parse, and produced empty output — whichcrontab -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.14sedto use#as delimiter. Migration 4.4.18 detects apps missingschedule:runand re-creates the full crontab (scheduler + deploy trigger + failure notification).
Version 4.4.17
[4.4.17] — 2026-04-03
Fixed
- Panel API database commands /
sudo: a terminal is required—/etc/sudoers.d/cipi-apiallowedwww-datato run onlycipi app|deploy|alias|sslandcat apps.json, notcipi db. Anysudo cipi db …from PHP (syncGET /api/dbsor queue jobs) therefore asked for a password and failed without a TTY. The whitelist now includesdb list,db create,db delete,db backup,db restore(two args), anddb password. New installs get this fromsetup.sh; existing servers via migration 4.4.17 (runs oncipi self-update).
Version 4.4.15
[4.4.15] — 2026-04-03
Changed
- Root crontab S3 backup/prune — all apps —
cipi backup configurenow appends default root cron lines that runcipi backup runandcipi backup prune --weeks=4(no per-app name), unless acipi backup runline already exists. Migration 4.4.15 rewrites existing root crontab entries fromcipi backup run <app>/cipi backup prune <app> --weeks=Nto the global form and drops duplicate lines after normalization.
Version 4.4.13
[4.4.13] — 2026-04-02
Fixed
- Root-owned Laravel logs (
shared/storage/logs/laravel-*.log) — Old logrotatecreate 0640 root rootleft rotated log files owned byroot:root. The app user could not read them, breakingspatie/laravel-backup(ZipArchive Permission denied) and other tools that access logs.ensure_app_logs_permissionsnow reclaims root-owned files in bothlogs/andshared/storage/logs/, restoring ownership to the app user. Migration 4.4.13 runs this for all apps.
Version 4.4.7
[4.4.7] — 2026-04-02
Fixed
- Migration /
common.shwhen sourced standalone — IfCIPI_LOGwas unset (e.g. migration 4.4.6 sourcingcommon.sh),mkdir -p "${CIPI_LOG}"expanded to an empty path.common.shnow defaultsCIPI_CONFIGandCIPI_LOGbefore loading the vault. - Deploy
deploy:writable/ chmod on Laravel logs — ACLs applied withsetfacl -Rand default ACLs onshared/storage/logscausedchmodto fail with Operation not permitted on existinglaravel-*.logfiles. Directory-only ACLs forcipiare 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
[4.4.6] — 2026-04-02
Fixed
- App log access (
logs/, Laravelstorage/logs) — App home directories are750(app:app), so thecipiuser could not traverse/home/<app>/to read logs without root. Nginx vhost logs are written bywww-data; logrotate usedcreate 0640 root …, so after rotation files could be owned byrootand no longer writable/readable as intended. New installs and migration 4.4.6 setlogs/toapp:www-datawith setgid2775, apply ACLs socipican traverse the home and read logs, replace logrotatecreatewithcopytruncate(keeps correct ownership), and repair existing root-owned log files under/home/*/logs/.
Added
ensure_app_logs_permissionsinlib/common.sh— Called fromcipi app createand sync app import so new apps get the same layout from day one.
Version 4.4.5
[4.4.5] — 2026-03-23
Added
- PHP Redis extension (phpredis) — The installer and
cipi php install <ver>now include theredispackage (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 installphp*-redisfor every PHP version already present (7.4–8.5 with FPM), then reload PHP-FPM
Changed
- Post-install summary — The final screen after
setup.shno 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
[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):htdocsis created with a placeholder page, branch is omitted, andcipi deployexplains that there is no repository until you set one withcipi app edit <app> --repository=....
Version 4.3.3
[4.3.3] — 2026-03-18
Added
cipi app create --custom— Creates a custom app with classic deploy (no zero-downtime): code is deployed intohtdocs(nocurrent/sharedsymlinks). 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 types —
cipi app createnow 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
[4.3.2] — 2026-03-14
Added
- Server IP in app creation summary —
cipi app createnow 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 summary —
cipi app createnow displays a ready-to-usemariadb+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.5 —
cipi app createnow defaults to PHP 8.5 when no--phpflag is provided
Fixed
- MariaDB version "N/A" in post-install summary —
grep -oP(Perl regex) is not available in all environments; replaced with portableawkparsing and redirected stderr to stdout (2>&1) sincemariadb --versionmay write to stderr