Skip to content
3.2 release 🎉
 Web Apps facility rewrite, significant improvements to functionality.

NEW:
[Bootstrapper] BSARGS= environment variable for passing off --extra-vars=$BSARGS to ansible-playbook, e.g. `env BSARGS="--force=yes" upcp -sb`
[CLI] "serialize" output/input format added. Uses builtin PHP serialization to pass objects around unadulterated.
[Dashbord] add Argos glance.
[DNS] Katapult, Hetzner DNS providers. Katapult is an upcoming premium VPS, Hetzner provides free DNS service.
[dns] verify(), verified(), challenges() API calls for third-party DNS providers that require additional challenges.
[git] add_ignore(), list_ignored_files()manage ignored files for git repository.
[web] get_all_hostnames_from_path()given a docroot, find all hostnames that serve from this base location.
[webapp] general purpose Web App module. Don't know the web app installed under a document root, but want to update it? cpcmd -d mydomain.com webapp:update mydomain.com. All family methods are exposed through this module except install().
[webapp] get_reconfigurable()get a reconfigurable value either transient or fixture.
[Web Apps] learn, write, release are now callable from API. wordpress:fortify("mydomain.com","","learn", [10]);
[Web Apps] fortification_modes()list all Fortification modes available to an app.
[Web Apps] Nextcloud 1-click support.
[Web Apps] Manifests. Bolt on Fortification and database snapshot/rollback support to any document root on your account. Manifest Fortification may define additional modes in addition to an app's base modes.
[Web Apps] notification controls via Account > Settings.
[Web Apps] third-party support. See @apisnetworks/apiscp-webapp-demo for a sample application.
[WordPress] AST parser allows for tighter integration with wp-config.php. Changing Fortification to "write" mode for example rewrite FS_METHOD to 'direct' automatically. May be used in hooks as well (see WordPress.md).
[WordPress] Site duplication and rename support. Easily migrate a WP site from staging to production with one click!

FIXED:
[file] stat calls could report an invalid user if the user were removed and recreated with the same site ID/user ID combination.
[DeleteDomain] flush global error log prior to deletion. Epehemeral account generation may erroneously report failure if global state is error prior to deletion.
[Migrations] update IPv6 on migration
[Web Apps] corrupted sites during update will no longer terminate an update batch.

CHANGED:
[Core] bump PHP to 7.4.
[Datastream] support 2^22 PIDs, which allows for worker pinning when PID exceeds 65536.
[Let's Encrypt] disable wildcard SSL if null driver is used.
[Laravel] Update Laravel to 6/LTS, Horizon to 3.
[mysql, pgsql] clone() may now duplicate a database into an empty destination.
[mysql, pgsql] export() may now export a database onto an empty file.
[PHP] libsodium always enabled for PHP 7.2+.
[Postfix] CentOS 8/systemd sendmail compatibility. RestrictAddressFamilies requires AF_NETLINK support. Setting PrivateDevices or RestrictAddressFamilies, in addition to other directives, irrevocably enables NoNewPrivileges=yes, which prevents postdrop setgid helper from temporarily granting the invoking process "postdrop" membership. This requires either opening /var/spool/postfix/maildrop to world or using ACLs to grant apache user write/execute permissions to directory. Pursuing this route blocks future developments in multi-user pools as well as running pool same-user (cPanel compatibility mode), leaving supplementary group addition the only appropriate route.
[PostgreSQL] PostGIS install-time option via `pgsql_has_postgis`.
[PowerDNS] pdns server no longer explicitly enabled if using PowerDNS provider unless `powerdns_enabled` is set to true.
[Rampart] disabling FTP/mail services disables respective log monitoring profiles.
[UI] convert collapse to flyout menu. Minor UI tweaks.
[UI] "search" promoted into reusable component.
[Web Apps] report Fortification mode in meta gutter.