Repository navigation
chore: prepare Appwrite 1.9.8 security patch - #14726
Conversation
🟢 Tier S · Ready to merge
Prepares Appwrite 1.9.8 as a maintenance security release, carrying the outbound TLS trust and SVG sanitizer updates into release notes, installation examples, and migration metadata while retaining compatibility with Console 8.7.37 and migration V25. The follow-up increments the response-cache buster so cached avatar and preview responses are regenerated after the sanitizer update. Latest changes: The follow-up increments APP_CACHE_BUSTER from 4327 to 4328 and documents invalidation of cached avatar and preview responses in CHANGES.md.
📂 Walkthrough · 5
Reviewed the commits since |
There was a problem hiding this comment.
Patch-release bump to 1.9.8 with updated install tags, console image, migration map entry, and changelog.
Key findings
- 🟡 Bump
APP_CACHE_BUSTERalongside the version update — constants.php:53
| @@ -51,7 +51,7 @@ | |||
| const APP_FILE_ACCESS = 24 * 60 * 60; // 24 hours | |||
| const APP_CACHE_UPDATE = 24 * 60 * 60; // 24 hours | |||
| const APP_CACHE_BUSTER = 4327; | |||
There was a problem hiding this comment.
🟡 bug · medium
Bump APP_CACHE_BUSTER alongside the version update
The patch bumps APP_VERSION_STABLE to 1.9.8 and the console image to 8.9.2 but leaves APP_CACHE_BUSTER at 4327 (app/init/constants.php:53). The release checklist explicitly requires incrementing APP_CACHE_BUSTER in the same step as the version bump, and it participates in the response cache key (src/Appwrite/Utopia/Request.php:246). Stale cached responses keyed under the old buster can be served after the upgrade.
📋 Prompt for AI Agents
In app/init/constants.php line 53, change const APP_CACHE_BUSTER = 4327; to const APP_CACHE_BUSTER = 4328;. The patch-release checklist requires incrementing the cache buster whenever APP_VERSION_STABLE is bumped; it also keys the response cache in src/Appwrite/Utopia/Request.php, so bumping it invalidates stale cached responses after the 1.9.8 upgrade.
✨ Benchmark resultsComparing 1.9.x (before) to release/1.9.8 (after). Before
After
Delta
Top API waits |

Appwrite 1.9.8 is a security patch for self-hosted deployments following the eMudhra certificate compromise. It retains Console 8.7.37 for compatibility with the 1.9 server APIs. Upgrading from 1.9.7 keeps the existing migration class and introduces no schema changes.
Highlights
Fixes
enshrined/svg-sanitizeto 1.1.1 to address reported sanitizer advisories (fix(1.9.x): remove compromised eMudhra CA trust #14718).Under the hood
ca-certificatesandca-certificates-bundleat20261020-r0or newer and regenerate the certificate store.Removed
No environment variables, collections, or public APIs are removed.
Install
docker run -it --rm \ --publish 20080:20080 \ --volume /var/run/docker.sock:/var/run/docker.sock \ --volume "$(pwd)"/appwrite:/usr/src/code/appwrite:rw \ --entrypoint="install" \ appwrite/appwrite:1.9.8Upgrade
Back up your database and persistent storage before upgrading. From the parent directory of an existing 1.9.7 installation, run:
docker run -it --rm \ --publish 20080:20080 \ --volume /var/run/docker.sock:/var/run/docker.sock \ --volume "$(pwd)"/appwrite:/usr/src/code/appwrite:rw \ --entrypoint="upgrade" \ appwrite/appwrite:1.9.8 cd appwrite docker compose exec appwrite migrateThe patch reuses migration V25. No new configuration is required. Outbound HTTPS endpoints that still present a compromised certificate chain will fail verification; those endpoints must replace their certificate chain.
Full Changelog: 1.9.7...1.9.8
Release preparation and validation
1.9.x; candidate commit709b5674f2. The exact release SHA must be recorded again after the prep PR merges.latest=falsepublishing guard. This branch predatesbin/releaseand its installer reads the root Compose file;app/views/install/compose.phtmldoes not exist.VERSION=1.9.8; runtimeAPP_VERSION_STABLEreports1.9.8.20261020-r0. Normal HTTPS succeeds and the compromised chains are rejected in the candidate images. Initial network timeouts were distinguished from TLS rejections and the affected probes were retried.git diff --checkpass.APP_CACHE_BUSTERstays unchanged as required by currentdocs/releases.md; TLS trust changes do not alter cached response output.Required before publishing
1.9.7with persisted volumes and non-default ports; migration run twice; seeded data verified through public APIs.No GitHub release or version tag has been created. Publishing, release-branch merge-back, specs dispatch/merges, Console publishing, and upgrading oss.appwrite.org remain separate steps under
docs/releases.md.Console compatibility review: retain 8.7.37. Newer legacy Console versions introduce MFA policy and OAuth provider controls whose server endpoints are absent on 1.9.x. The old pinned Console is retained rather than exposing unsupported controls in a security backport.
Related: appwrite-labs/cloud#6671
Console/docs preparation: #14733.