Announcement2.0.0-rc.3
Appwrite 2.0.0-rc.3 Release Candidate
Third release candidate for Appwrite 2.0.0 self-hosted deployment. Includes critical fixes for PostgreSQL durability settings, S3 storage build output handling, Git installation security and isolation, console authentication improvements, and performance optimizations for realtime events and billing accuracy.
Third release candidate for self-hosted 2.0.0. Pre-release — not recommended for production.
Highlights
Changes since 2.0.0-rc.2.
- PostgreSQL no longer ships with durability turned off. The bundled compose passed
fsync=off,synchronous_commit=offandfull_page_writes=off, so a crash or power loss could leave the database corrupt. All three are gone. - Builds survive non-local storage. With
_APP_STORAGE_DEVICEset to any S3-compatible backend, build output went to a local path nothing reads, leaving deployments ready with nothing to run. A failed upload now fails the build. - Git installations are isolated per project. Installation repository endpoints are scoped to the owning project and the GitHub App installation state is signed, so a callback cannot be replayed onto someone else's project.
- The Git installation callback no longer dead-ends. GitHub, GitLab, Gitea and Bitbucket all redirect back to the console with an actionable error.
- Self-hosted GitLab works.
_APP_VCS_GITLAB_ENDPOINTfor repository integration,_APP_CONSOLE_GITLAB_ENDPOINTfor console sign-in. - Google sign-in to the console, via
_APP_CONSOLE_GOOGLE_APP_IDand_APP_CONSOLE_GOOGLE_SECRET. - Index listing returns the right indexes. Lookups used collection id instead of sequence, so collections sharing an id across databases could see each other's indexes.
- Transactions reject array queries up front instead of throwing on commit.
- Integer attribute
min/maxare capped to what the column can hold. teams.totalmatches confirmed memberships. Four paths could drift it, most visibly deleting a membership after a primary-owner transfer.- Buckets are no longer left half-created when their files collection fails.
- Realtime is cheaper per event — one Swoole worker, the document encoded once per event instead of once per subscriber, presence stored as flags.
- Build billing is accurate — skipped when the build never started, capped at the build timeout, tagged with the resource id.
- Execution logs dual-write to ClickHouse. Off by default; reads stay on the project database and mirror failures are never fatal.
_APP_EXECUTIONS_DUAL_WRITE,_APP_CONNECTIONS_DB_EXECUTIONS,_APP_POOL_SIZE_EXECUTIONS. - The console works over plain HTTP again.
crypto.randomUUIDis only exposed on secure origins, so on a self-hosted install reached over HTTP at a LAN IP or an internal hostname every project page died with a full-page error. That is a setup the installer explicitly provisions, since it turns HTTPS off for loopback,.local,.internaland bare IPs. - New console 1.1.8, Open Runtimes executor 0.29.0, orchestrator 1.9.2, utopia-php/database 7.3.4.
Removed
GET /v1/health/executions.
Try it
docker run -it --rm \
--volume /var/run/docker.sock:/var/run/docker.sock \
--volume "$(pwd)"/appwrite:/usr/src/code/appwrite:rw \
--entrypoint="install" \
appwrite/appwrite:2.0.0-rc.3
Upgrading from 1.9.x uses the same command with --entrypoint="upgrade". Back up your data first.
Most useful things to exercise: functions and sites with _APP_STORAGE_DEVICE pointed at an S3-compatible backend, and connecting one Git installation from more than one project.
release-candidateself-hosteddatabasestoragesecuritygit
Source: original entry ↗