Repository navigation
Releases: EasyEngine/easyengine
Release list
EasyEngine v4.13.2
EasyEngine v4.13.2
A security and bug-fix release. Update with ee cli update.
Security
- Site names are validated and quoted in the shell commands EasyEngine runs, in core and in the site packages.
- Clone and sync quote every value they pass to local and remote commands and validate the site details read from the other host.
- Each site's database user on the global database now has access only to its own database. A migration fixes existing sites; customised or shared grants are left alone with a warning.
- Admin-tools sites no longer mount the EasyEngine database into their containers. A migration updates existing admin-tools sites.
ee log showfollows logs without a shell and skips log links that leave the site's log directory.- Secrets (passwords, API keys, tokens) are kept out of
ee.log. The log directory is now readable by root only, and a migration restricts existing logs and masks secrets that earlier versions wrote to them. ee site cloneno longer writes the new site's database password toee.log.- Backup metadata no longer holds site passwords (database, admin and the legacy site auth password); a migration strips them from local copies.
ee @alias,--sshand--httptargets are refused instead of silently running the command on the local server.- The admin-tools auth stays independent of the global auth.
Fixes
ee site cloneandee site syncwork when the other host has no sites yet (they failed with "Unable to get site list"), and a clone no longer deletes an existing destination site when that host's site list can't be read.- Self-signed SSL: the root is now a real CA (on OpenSSL 3.2+, e.g. Ubuntu 26.04 and Debian 13, every self-signed site certificate was rejected); existing roots are repaired with the same key.
- Let's Encrypt HTTP-01 validation works under a strict umask.
ee site update --ssl=leright afteree site createkeeps the www redirect and the www name in the certificate.- The phar no longer ships the packages' test files.
Behaviour changes
- New site names must be valid hostnames (at most 64 characters, IDN names in punycode). Existing sites keep working.
- Clone and sync refuse database credentials containing quotes,
$, backticks or\, and need EasyEngine on both hosts. After this update an oldereerefuses non-clicommands, so clone and sync over ssh need v4.13.2 on both hosts. ee log show --naccepts only a line count (+N/-Nallowed).- A bare
--sslon clone meansle. - Clone and sync stop with "Unable to get site list" when the other host's
ee site listoutput can't be read, for example on the first command right after EasyEngine was updated there. Run the command again. ee admin-tools disablereports a failed container recreate instead of recording admin-tools as disabled.
Upgrade notes
- Admin-tools sites have their php and nginx containers recreated during the update: expect a few seconds of 502 on those sites.
- If the global database isn't running during the update, the grant migration prints the SQL statements to run instead of failing.
What's Changed
easyengine
- chore(release): prepare v4.13.2 #1948 @mrrobot47
- fix(log): mask secret values in logged info tables #1947 @mrrobot47
- fix(phar): leave the packages' tests and features out of the phar #1946 @mrrobot47
- fix(runner): refuse remote targets instead of running the command locally #1945 @mrrobot47
- fix(log): keep secrets out of ee.log and make the log readable by root only #1944 @mrrobot47
- fix(docker): quote site name in volume create and lookup commands #1943 @mrrobot47
- docs(readme): add the zip PHP module and match the installer CI distros #1942 @joelabreo227
site-command
- fix(site): use a new file for every www check EasyEngine/site-command#517 @mrrobot47
- fix(ssl): keep the HTTP-01 challenge files readable under a strict umask EasyEngine/site-command#516 @mrrobot47
- fix(backup): leave site credentials out of backup metadata EasyEngine/site-command#515 @mrrobot47
- fix(site): keep database passwords out of the log EasyEngine/site-command#514 @mrrobot47
- fix(ssl): mark the self-signed root as a CA and repair existing roots EasyEngine/site-command#513 @mrrobot47
- fix(site): restrict each site's database grant to its own database EasyEngine/site-command#512 @mrrobot47
- fix(clone): mask the other site's credentials in logged clone and sync commands EasyEngine/site-command#511 @mrrobot47
- fix(clone): quote clone and sync commands and validate the other host's site details EasyEngine/site-command#510 @mrrobot47
- fix(site): validate new site names and quote site-derived values in shell commands EasyEngine/site-command#509 @mrrobot47
- ci: fix the Behat workflow setup EasyEngine/site-command#508 @mrrobot47
- fix(clone): allow ee site clone onto a host with no existing sites EasyEngine/site-command#501 @mrrobot47
site-type-wp
- fix(site): keep site credentials out of the log EasyEngine/site-type-wp#244 @mrrobot47
- fix(site): validate the site name and quote values in WordPress create commands EasyEngine/site-type-wp#243 @mrrobot47
- ci: fix the Behat workflow setup EasyEngine/site-type-wp#242 @mrrobot47
site-type-php
- fix(site): keep site credentials out of the log EasyEngine/site-type-php#118 @mrrobot47
- fix(site): validate the site name and quote remote database check commands EasyEngine/site-type-php#117 @mrrobot47
- ci: fix the Behat workflow setup EasyEngine/site-type-php#116 @mrrobot47
admin-tools-command
- fix(admin-tools): stop mounting the EasyEngine database into site containers EasyEngine/admin-tools-command#54 @mrrobot47
auth-command
- fix(auth): keep the admin-tools auth independent of the global auth EasyEngine/auth-command#60 @mrrobot47
config-command
- fix(config): print config values without writing them to the log EasyEngine/config-command#14 @mrrobot47
log-command
- fix(log): follow logs without a shell and skip links that leave the log directory EasyEngine/log-command#8 @mrrobot47
EasyEngine v4.13.1
Highlights
- Complete WordPress 7.x core. New and restored WordPress sites get a complete core, checked with
wp core verify-checksums, and existing WordPress 7.x sites with truncated core files are repaired on upgrade (site-type-wp#241, site-command#504). - Failed Let's Encrypt alias changes roll back. When a certificate can't be issued for new alias domains, the aliases, certificate and redirect files stay as they were and the command exits with an error, instead of reporting success and revoking the certificate still in use (site-command#505).
ee site ssl-verifyno longer breaks the proxy. A request on an already-finalized order could deploy a certificate next to a new key that didn't match it, which stopped nginx-proxy reloads for all sites. The previous key is now kept when a request fails, and a certificate that doesn't match its key is never deployed (site-command#506).- More reliable SSL handling. Custom certificates are validated and installed on
ee site update --ssl=custom, stale ACME orders are rebuilt on retry, concurrent SSL commands no longer race, and warnings now show the actual Let's Encrypt error (site-command#489, site-command#492, site-command#493, site-command#498, site-command#486). - Safer site creation. In the rare case where two site names map to the same database name or volume prefix, a failed create no longer removes the other site's database, user or volumes (site-command#503, site-type-wp#240, site-type-php#115).
- IP whitelist and cron fixes. An invalid CIDR prefix in
ee auth --ipis rejected instead of stopping proxy reloads (auth-command#59), and the cron scheduler no longer restarts in a loop when there are no cron jobs (cron-command#60). - Updated images: PHP 8.3.35, Redis 8.10.2, postfix on Debian 13.7 and newrelic-daemon on Alpine 3.24.2.
Upgrade notes
Cron jobs saved with ee cron update run on their intended schedule
ee cron update stored a five-field schedule without the seconds field, so it was read as a six-field one: * * * * * ran every second instead of once a minute. The scheduler config is regenerated on upgrade, so these jobs now fire on their intended schedule (cron-command#60).
IP whitelist entries are checked and cleaned up
ee auth create --ip lists are now split on any whitespace or comma, and a repeated IP is stored once. Entries with an invalid CIDR prefix (such as 192.0.2.1/abc, /99 or an IPv6 prefix over 128) are refused. On upgrade, a migration removes invalid entries from existing whitelist files and normalizes the ones nginx accepts (such as 10.0.0.0/08). The database rows are kept; an invalid one is skipped with a warning that names the command to remove it (auth-command#59).
WordPress 7.x sites with truncated core files are repaired
On upgrade, a migration runs wp core verify-checksums on each WordPress site that has wp-includes/php-ai-client/, and repairs the truncated core files in place. Content and database are not touched. Disabled or stopped sites, and sites that can't be checked, get a warning with the command to check them later (site-type-wp#241).
Colliding site names
Existing sites, including pairs that already share a database name or volume prefix, are left as they are. New creates that would collide are refused: a site whose volume prefix or compose project another site uses, or a --dbname/--dbuser that is already taken. A default database name that is already taken gets a _2 (then _3, …) suffix (site-command#503).
Let's Encrypt needs a valid le-mail
Issuing or renewing a Let's Encrypt certificate now stops with a clear error when le-mail is empty or not a valid address, including the nightly ssl-renew --all. Check it with ee config get le-mail and set it with ee config set le-mail <email> if needed (site-command#496).
WordPress and PHP sites get new images
Every WordPress and PHP site is recreated on the new postfix image during the upgrade, and sites on PHP 8.3 also move to PHP 8.3.35. Expect a short interruption per site.
Fixes
SSL and Let's Encrypt
- A failed Let's Encrypt alias change restores the certificate, ACME and redirect files, keeps the aliases unchanged and exits non-zero. Only certificates that an alias change actually replaced are revoked (site-command#505).
ee site update --ssl=lefails when no certificate was issued, andee site ssl-renew <site>exits non-zero when the renewal fails. A failure inee site update --ssl=…puts the site back to HTTP-only before anything is saved (site-command#505).- A site's certificate and ACME files, including those of its aliases, are removed on
ee site deleteand--ssl=off, also for wildcard sites.--ssl=offis refused while other sites inherit the certificate, works on sites stored as wildcard, and a self-signed site can turn SSL back on afterwards (site-command#505). - Certificates without a subject CN are parsed, and ACME challenge types EasyEngine can't solve no longer break certificate orders (site-command#505).
- When a first certificate request fails, the previous key is restored, and a 403 from Let's Encrypt gives a warning with its reason instead of a PHP fatal error. Certificate keys are no longer written to
ee.logwhen a request fails (site-command#506). ee site update --ssl=customnow copies the certificate and key; before, it turned on HTTPS without them (site-command#489).- Custom certificates are checked before install: an invalid PEM file, a broken chain or a key that doesn't match the certificate is refused, and an expired certificate or one expiring within 30 days gives a warning (site-command#492).
ee site ssl-verifyis refused on sites without Let's Encrypt SSL, so it can no longer replace a custom certificate. On a site without SSL it points toee site update <site> --ssl=le(site-command#487).ee site ssl-verifyrebuilds a stored ACME order that has expired or failed, instead of failing on every retry (site-command#493).- Certificates are copied to nginx-proxy through temporary files, so a failed copy no longer leaves a mismatched key and certificate. The file permissions are kept on renewal (site-command#491).
- SSL commands wait for each other: a second one waits up to 120 seconds (600 for
ssl-renew) and then stops with a clear message (site-command#498). le-mailis validated before registering with Let's Encrypt, and renewals use the currentle-mail(site-command#496, site-command#497).- SSL warnings include the Let's Encrypt error, and the misleading "Challenge Authorization failed" line is gone from renewal failures (site-command#486). The renewal message now says "less than 35 days", matching the actual threshold (site-command#485).
ssl-renew --allpauses 1–5 seconds between due renewals, reports Let's Encrypt rate limits as such, and carries on with the next site when one is rate-limited (site-command#499).- A warning is shown when the Let's Encrypt account key is missing while certificates issued under it still exist, instead of silently creating a new account (site-command#500).
- Self-signed certificate generation quotes the site name and file paths it passes to
openssl(site-command#495). - The SSL flag migration no longer marks sites with custom, self-signed or inherited SSL as Let's Encrypt, on installs that still have to run it (site-command#490).
Proxy
- A proxy cache update that fails keeps a valid nginx-proxy config: the files it wrote are restored, and the config test is retried once (site-command#505).
- Alias changes reload nginx-proxy instead of restarting it, and sites without SSL stay HTTP-only when their aliases change (site-command#505).
- After a site is deleted, nginx-proxy is reloaded, so its
www.redire...
EasyEngine v4.13.0
Highlights
- HTTP auth and IP whitelists now cover every domain a site serves. Until now,
ee authonly protected a site's own domain: the subsites of a WordPress subdomain multisite (*.example.com) and a site's alias domains were served with the global auth or with no auth at all. In v4.13.0, auth and whitelists apply to subdomain multisite subsites, plain alias domains and*.aliaswildcard aliases, and stay in sync when aliases are added or removed (auth-command#57, site-command#502). - No more auth leaking between sites. The nginx-proxy wildcard lookup no longer guesses from the host name: an unrelated site such as
shop.example.comno longer asks for the credentials of the multisiteexample.com, and subsites of multisites with 4+ labels (*.ms.dev.example.com) are now matched correctly (dockerfiles#354). - Existing sites are fixed on upgrade. A migration regenerates every site's auth and whitelist files, so subsites and aliases that were unprotected become protected with the site's existing credentials, without any manual step. The upgrade never applies a site's wildcard auth to another site, not even while the old nginx-proxy is still running (auth-command#58).
- Safer upgrades. When an upgrade fails before all containers are upgraded (for example because an image can't be pulled), EasyEngine now also undoes the auth file changes made earlier in the same run, so the host is left as it was and the next attempt starts cleanly (easyengine#1936).
- No slow requests after upgrading. Sites whose containers are recreated during the upgrade no longer serve intermittent ~3 s (sometimes 10 s+) requests until their nginx is reloaded by hand (easyengine#1937).
- Safer proxy reloads. EasyEngine now only reloads nginx-proxy when the regenerated config passes
nginx -t. A broken config is no longer loaded into the running proxy; ee warns with the nginx error instead (site-command#494). - Updated images: nginx-proxy 1.11.6, PHP 8.2.34 / 8.3.33 / 8.4.26 / 8.5.11, PHP 8.1.34 with refreshed Debian 13 packages, Redis 8.10.1, postfix on Debian 13.6, and a final rebuild of the PHP 7.4 and 8.0 images with the last Debian 11 security updates.
Upgrade notes
nginx-proxy: wildcard auth files are now looked up only for *.X hosts
dockerfiles#354 changes how the proxy picks the htpasswd and ACL file for a host:
htpasswd/<host>(andvhost.d/<host>_acl) if it exists;- for a host that is literally
*.X(a subdomain multisite or a*.Xalias):htpasswd/_wildcard.X(andvhost.d/_wildcard.X_acl); - otherwise the global
htpasswd/default(andvhost.d/default_acl).
The label-counting fallback added in v4.11.0 (dockerfiles#298), which tried _wildcard.<last 3 labels> and then _wildcard.<last 2 labels> for any host, is removed. The same mapping is now used for the IP whitelist include, including the /ee-admin/ and mailhog locations. Setups managed with ee auth are not affected: before this release, EasyEngine never wrote _wildcard.X files, so only hand-made files relied on the old fallback.
PHP sites get new images
Every site on PHP 8.1, 8.2, 8.3, 8.4 or 8.5 is recreated on its new easyengine/php<version>:v4.13.0 image during the upgrade: PHP 8.2.34, 8.3.33, 8.4.26 and 8.5.11, and PHP 8.1.34 (unchanged) with up-to-date Debian 13 packages. All five images are based on Debian 13.7. PHP 8.1 is end of life upstream and its official base image is no longer rebuilt, so the EasyEngine image now applies the Debian security updates itself at build time; plan to move 8.1 sites to a newer PHP version.
Sites on PHP 7.4 and 8.0 are recreated on the new easyengine/php7.4:v4.13.0 and easyengine/php8.0:v4.13.0 images during the upgrade, like every other WordPress and PHP site. PHP itself doesn't change (7.4.33 and 8.0.30, both end of life upstream); the images are rebuilt on the last Debian 11 security snapshot, which brings up to two years of Debian security updates that the old images (built 2024-09-13 and 2025-02-13) didn't have. Debian 11 is now end of life too, so this is the last build of these two images: future releases keep them at v4.13.0. Move these sites to a supported PHP version with ee site update <site> --php=8.4 (or 8.2, 8.3, 8.5) when you can.
New features
auth-command
- HTTP auth and IP whitelists now apply to all domains of a site: subdomain multisite subsites, alias domains and
*.aliaswildcard aliases. Plain aliases get their own files; only subdomain multisites and*.Xaliases get_wildcardfiles (auth-command#57). - Auth files follow alias changes: files for a new alias are written before the proxy starts serving it, removed again if the alias update fails, and removed for deleted aliases (auth-command#57).
- New upgrade migration that regenerates every site's auth and whitelist files (auth-command#57, auth-command#58).
site-command
- New hooks around alias domain updates (
site_alias_domains_before_update,site_alias_domains_updated,site_alias_domains_update_failed) for packages that keep per-domain proxy files (site-command#502). - Alias domain names are now validated on
ee site update --add-alias-domainsandee site create --type=html --alias-domains: only a hostname or*.hostnameis accepted, labels can't start with-or_or end with-, and the reserved namesdefault/default_admin_toolsare refused. Invalid names are listed in the error before anything changes. Existing invalid aliases can still be deleted (site-command#502).
core
- New hook
after_docker_image_migration, fired during an upgrade right after the image migration, once the updated global containers run. Packages can use it for changes that need the new containers (easyengine#1936).
Fixes
core
- A failed upgrade now also reverts the container migrations that ran earlier in the same run (for example when an image can't be pulled), and removes their records so the next attempt runs them again. Before, they stayed applied on the old containers and were never re-run. Once the image migration has completed, a later failure keeps them (easyengine#1936).
- After the upgrade recreates a WordPress or PHP site's containers, its nginx is reloaded, so it no longer keeps sending some requests to the removed temporary php container (each took ~3 s, sometimes 10 s+, until
ee site reload <site> --nginx). The same reload runs for each site when a failed upgrade rolls the sites back. If a reload fails, ee warns with the site name and the command to run (easyengine#1937).
auth-command
- Site delete now removes all of the site's auth and whitelist rows and every htpasswd and ACL file it used (the cleanup hook existed but was never loaded, so these were left behind) (auth-command#57).
- Usernames and passwords are shell-escaped when the htpasswd files are written: passwords with spaces,
$or;were silently cut or broke the command (auth-command#57). - Passwords and usernames are no longer written to
ee.log(auth-command#57). - htpasswd files are written atomically (temp file and rename), so a failed write keeps the previous file, including the global
defaultfile (auth-command#57). - Sites without auth or whitelist entries of their own no longer keep stale files, and correctly fall back to the global auth (auth-command#57).
- The upgrade migration backs up the auth files and restores them exactly if the upgrade fails. It holds the
_wildcard.*files back while the old nginx-proxy template runs and puts them in place once the new proxy is up, so sibling sites never pick up another site's wildcard auth during an upgrade, even when the upgrade fails or is interrupted. If a site's auth changed in between (for example after an interrupted upgrade), its files are regenerated from the current settings instead (auth-command#58).
site-command
- nginx-proxy is only reloaded when
nginx -tpasses, and the test now checks the regenerated config rather than the previous one. On failure, ee warns with the nginx error and skips the reload (site-command#494). - Adding or removing alias domains on a site with custom, self-signed or inherited SSL no longer aborts halfway with "Only Letsencrypt certificate renewal is supported." (which left the containers and the database out of sync). Let's Encrypt sites still get a renewed certificate, custom-cert sites get a warning to supply a certificate covering the new aliases, and self-signed sites keep HTTPS (site-command#488).
- Blank entries in alias lists (
a.com,,b.com,) are dropped instead of...
EasyEngine v4.12.0
What's Changed
- chore(release): prepare v4.12.0 #1928 @mrrobot47
- feat(cli): configure logrotate during migration #1927 @mrrobot47
- fix(cli): avoid phar autoload during self-update #1926 @mrrobot47
- ci: add GitHub Actions CI with ShellCheck, bats unit tests, and a host-prep matrix EasyEngine/installer#48 @mrrobot47
- feat: add option to wait on apt locks EasyEngine/installer#47 @L0RD-ZER0
- chore(deps): bump jwilder/nginx-proxy from 1.11.0 to 1.11.2 in /nginx-proxy EasyEngine/dockerfiles#338 @dependabot
- chore(deps): bump actions/checkout from 6 to 7 EasyEngine/dockerfiles#337 @dependabot
- chore(deps): bump alpine from 3.23.4 to 3.24.1 in /newrelic-daemon EasyEngine/dockerfiles#336 @dependabot
- fix: clean up downloaded helper scripts after install EasyEngine/installer#46 @mrrobot47
- Fix host PHP setup for Ubuntu 26.04 (+ deterministic version control) EasyEngine/installer#45 @mrrobot47
- fix: run apt non-interactively during installation EasyEngine/installer#44 @mrrobot47
- docs(readme): refresh outdated requirements, distros, links, and command list #1924 @mrrobot47
- docs: regenerate README for current PHP version support EasyEngine/site-type-php#112 @mrrobot47
- docs: regenerate README for current PHP version support EasyEngine/site-type-wp#237 @mrrobot47
- chore(deps): bump php from 8.5.0-fpm to 8.5.7-fpm in /php/8.5 EasyEngine/dockerfiles#334 @mrrobot47
- fix(php): remove stale PHP version fallbacks EasyEngine/site-type-php#111 @mrrobot47
- feat(php): make PHP 8.4 the default version EasyEngine/site-type-wp#236 @mrrobot47
- chore(deps): bump mariadb from 12.1 to 12.3 in /mariadb EasyEngine/dockerfiles#332 @dependabot
EasyEngine v4.11.0
What's Changed
- chore(composer): update site-command to v3.7.6 #1923 @mrrobot47
- fix(restore): raise PHP memory_limit for wp core download to prevent OOM EasyEngine/site-command#479 @mrrobot47
- chore(composer): update site-command to v3.7.5 #1922 @mrrobot47
- fix(backup): support older rclone on restore and add a backup --list preflight EasyEngine/site-command#478 @mrrobot47
- chore(composer): update site-command to v3.7.4 #1921 @mrrobot47
- Release/v4.11.0 #1920 @mrrobot47
- chore(deps): bump php from 8.4.21-fpm to 8.4.22-fpm in /php/8.4 EasyEngine/dockerfiles#333 @dependabot
- chore(deps): bump redis from 8.6.4 to 8.8.0 in /redis EasyEngine/dockerfiles#331 @dependabot
- chore(deps): bump openresty/openresty from 1.29.2.5-bookworm to 1.31.1.1-bookworm in /nginx EasyEngine/dockerfiles#330 @dependabot
- chore(deps): bump redis from 8.6.2 to 8.6.4 in /redis EasyEngine/dockerfiles#329 @mrrobot47
- chore(deps): bump php from 8.4.20-fpm to 8.4.21-fpm in /php/8.4 EasyEngine/dockerfiles#328 @mrrobot47
- chore(deps): bump php from 8.3.30-fpm to 8.3.31-fpm in /php/8.3 EasyEngine/dockerfiles#327 @mrrobot47
- chore(deps): bump php from 8.2.30-fpm to 8.2.31-fpm in /php/8.2 EasyEngine/dockerfiles#326 @mrrobot47
- chore(deps): bump jwilder/nginx-proxy from 1.10.1 to 1.11.0 in /nginx-proxy EasyEngine/dockerfiles#325 @mrrobot47
- chore(deps): bump alpine from 3.23.3 to 3.23.4 in /newrelic-daemon EasyEngine/dockerfiles#324 @mrrobot47
- fix(postfix): update package names for Debian 13 (trixie) compatibility EasyEngine/dockerfiles#323 @mrrobot47
- chore(deps): bump openresty from 1.27.1.1-buster to 1.29.2.5-bookworm in /nginx EasyEngine/dockerfiles#322 @mrrobot47
- chore(deps): bump php from 8.5.0-fpm to 8.5.7-fpm in /php/8.5 EasyEngine/dockerfiles#321 @mrrobot47
- fix: cap rclone backup/restore memory to prevent OOM kills EasyEngine/site-command#477 @mrrobot47
- chore(deps): bump composer/composer from 2.2.26 to 2.2.28 #1918 @dependabot
- chore(deps): bump php from 8.4.16-fpm to 8.4.20-fpm in /php/8.4 EasyEngine/dockerfiles#320 @dependabot
- chore(deps): bump mcuadros/ofelia from 0.3.20 to 0.3.22 in /cron EasyEngine/dockerfiles#319 @dependabot
- chore(deps): bump redis from 8.4.0 to 8.6.2 in /redis EasyEngine/dockerfiles#318 @dependabot
- fix: resolve unbound variable error for tmp_phar and tmp_checksum under set -u EasyEngine/installer#43 @mrrobot47
- fix: replace apt with apt-get and consolidate apt-get update EasyEngine/installer#42 @mrrobot47
- fix: fail fast and validate SHA-512 checksum on phar download EasyEngine/installer#41 @mrrobot47
- chore(deps): bump debian from 13.2-slim to 13.4-slim in /postfix EasyEngine/dockerfiles#317 @dependabot
- chore(deps): bump jwilder/nginx-proxy from 1.9.0 to 1.10.1 in /nginx-proxy EasyEngine/dockerfiles#315 @dependabot
- chore(deps): bump docker/login-action from 3 to 4 EasyEngine/dockerfiles#314 @dependabot
- chore(deps): bump docker/setup-qemu-action from 3 to 4 EasyEngine/dockerfiles#313 @dependabot
- chore(deps): bump docker/build-push-action from 6 to 7 EasyEngine/dockerfiles#312 @dependabot
- chore(deps): bump docker/setup-buildx-action from 3 to 4 EasyEngine/dockerfiles#311 @dependabot
- chore(deps): bump alpine from 3.23.2 to 3.23.3 in /newrelic-daemon EasyEngine/dockerfiles#304 @dependabot
- chore(deps): bump symfony/process from 5.4.47 to 5.4.51 #1915 @dependabot
- chore(deps-dev): bump phpunit/phpunit from 9.5.28 to 9.6.33 #1914 @dependabot
- chore(deps): bump php from 8.3.29-fpm to 8.3.30-fpm in /php/8.3 EasyEngine/dockerfiles#302 @dependabot
- feat(nginx-proxy): Add SSL_STAPLING env var to control OCSP stapling EasyEngine/dockerfiles#299 @mrrobot47
- feat(nginx-proxy): Add wildcard HTTP auth support for WordPress multisite EasyEngine/dockerfiles#298 @mrrobot47
EasyEngine v4.10.2
What's Changed
- Release/v4.10.2 #1911 @mrrobot47
- Add retry mechanism with exponential backoff for Docker availability check #1910 @mrrobot47
- Improvements for handling site disabled state in backup EasyEngine/site-command#475 @mrrobot47
- chore(deps): bump composer/composer from 2.2.24 to 2.2.26 #1909 @dependabot
- chore(deps): bump mcuadros/ofelia from 0.3.19 to 0.3.20 in /cron EasyEngine/dockerfiles#295 @dependabot
- chore(deps): bump php from 8.4.15-fpm to 8.4.16-fpm in /php/8.4 EasyEngine/dockerfiles#294 @dependabot
- chore(deps): bump php from 8.1.33-fpm to 8.1.34-fpm in /php/8.1 EasyEngine/dockerfiles#293 @dependabot
- chore(deps): bump php from 8.2.29-fpm to 8.2.30-fpm in /php/8.2 EasyEngine/dockerfiles#292 @dependabot
- chore(deps): bump php from 8.3.28-fpm to 8.3.29-fpm in /php/8.3 EasyEngine/dockerfiles#291 @dependabot
- chore(deps): bump alpine from 3.23.0 to 3.23.2 in /newrelic-daemon EasyEngine/dockerfiles#290 @dependabot
EasyEngine v4.10.1
What's Changed
- Release/v4.10.1 #1908 @mrrobot47
- feat(backup): add global lock to prevent concurrent backup OOM crashes EasyEngine/site-command#474 @mrrobot47
- fix(backup): handle 7z exit codes correctly to avoid false failures EasyEngine/site-command#473 @mrrobot47
- feat(pra): fetch latest release from GitHub API with fallback EasyEngine/admin-tools-command#53 @mrrobot47
EasyEngine v4.10.0
What's Changed
- Release/v4.10.0 #1907 @mrrobot47
- feat(config): add PHP 8.5 configuration zip file EasyEngine/site-command#471 @mrrobot47
- Backup cleanup improvement EasyEngine/site-command#470 @mrrobot47
- feat: php-fpm 8.5 support EasyEngine/site-type-wp#235 @L0RD-ZER0
- feat: php-fpm 8.5 support EasyEngine/site-type-php#110 @L0RD-ZER0
- feat: php-fpm 8.5 support EasyEngine/site-command#469 @L0RD-ZER0
- feat: php-fpm 8.5 support EasyEngine/dockerfiles#289 @L0RD-ZER0
- feat: php-fpm 8.5 support #1906 @L0RD-ZER0
- Error Tracking for Backup Failure Callbacks to EasyEngine dashboard EasyEngine/site-command#472 @mrrobot47
- feat(dash-command): add EasyEngine version to server data EasyEngine/dash-command#1 @mrrobot47
- fix(backup): follow symlinks to backup complete config content EasyEngine/site-command#468 @mrrobot47
- Enhance and stabilize API retry handling EasyEngine/site-command#467 @mrrobot47
- feat(dash): add retry logic for EasyEngine Dashboard API requests EasyEngine/site-command#466 @mrrobot47
- chore(deps): bump alpine from 3.22.1 to 3.23.0 in /newrelic-daemon EasyEngine/dockerfiles#288 @dependabot
- feat: EasyEngine Dashboard API callback for async backups EasyEngine/site-command#465 @mrrobot47
- Improve disk space error message clarity EasyEngine/site-command#464 @mrrobot47
- chore(deps): bump php from 8.4.13-fpm to 8.4.15-fpm in /php/8.4 EasyEngine/dockerfiles#287 @dependabot
- chore(deps): bump debian from 13.0-slim to 13.2-slim in /postfix EasyEngine/dockerfiles#286 @dependabot
- chore(deps): bump php from 8.3.26-fpm to 8.3.28-fpm in /php/8.3 EasyEngine/dockerfiles#285 @dependabot
- chore(deps): bump actions/checkout from 5 to 6 EasyEngine/dockerfiles#284 @dependabot
- chore(deps): bump redis from 8.2.2 to 8.4.0 in /redis EasyEngine/dockerfiles#283 @dependabot
- chore(deps): bump mariadb from 11.5 to 12.1 in /mariadb EasyEngine/dockerfiles#282 @dependabot
- fix(clone): Prevents overwriting wp-config.php when cloning a remote site with a custom public directory EasyEngine/site-command#462 @rodrigo-gpereira
- fix(clone-utils): update database import command to use mysql EasyEngine/site-command#461 @mrrobot47
- Add --skip-ssl option to db export command EasyEngine/site-type-wp#234 @mrrobot47
- fix(clone-utils): add --skip-ssl option to db export/import commands EasyEngine/site-command#460 @mrrobot47
- chore(deps): bump jwilder/nginx-proxy from 1.8.0 to 1.9.0 in /nginx-proxy EasyEngine/dockerfiles#279 @dependabot
- chore(deps): bump redis from 8.2.1 to 8.2.2 in /redis EasyEngine/dockerfiles#276 @dependabot
- Adjust DNS record name for wildcard domains EasyEngine/site-command#459 @mrrobot47
- fix(formatter): improve JSON output formatting #1903 @mrrobot47
- feat(migrations): implement concurrent docker image pulls #1902 @mrrobot47
- chore(deps): bump php from 8.4.12-fpm to 8.4.13-fpm in /php/8.4 EasyEngine/dockerfiles#275 @dependabot
- chore(deps): bump mcuadros/ofelia from 0.3.18 to 0.3.19 in /cron EasyEngine/dockerfiles#274 @dependabot
- chore(deps): bump php from 8.3.25-fpm to 8.3.26-fpm in /php/8.3 EasyEngine/dockerfiles#273 @dependabot
EasyEngine v4.9.3
What's Changed
- Release/v4.9.3 #1901 @mrrobot47
- feat: ssl-info command to show SSL details and DNS challange records EasyEngine/site-command#457 @mrrobot47
- feat(site): update add_site_redirects to handle redirect for non-ssl EasyEngine/site-command#458 @mrrobot47
- Add migration to fix SSL flag in DB for edge cases EasyEngine/site-command#456 @mrrobot47
- feat(redirects): check for SSL cert/key before adding redirects EasyEngine/site-command#455 @mrrobot47
- Add ssl-dns-info command to display DNS-01 TXT record values post site creation EasyEngine/site-command#454 @mrrobot47
- Add config unset and list commands with format support EasyEngine/config-command#13 @mrrobot47
- Fix/cert return EasyEngine/site-command#453 @mrrobot47
- fix typo EasyEngine/site-command#421 @gingerbeardman
EasyEngine v4.9.2
What's Changed
- feat(backup/restore): add --skip-ssl option to database commands EasyEngine/site-command#452 @mrrobot47