[PR #970] [MERGED] feat(appwrite): update template to 1.9.5 #15298

Closed
opened 2026-07-13 17:00:11 -05:00 by GiteaMirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/Dokploy/templates/pull/970
Author: @ChiragAgg5k
Created: 7/1/2026
Status: Merged
Merged: 7/7/2026
Merged by: @Siumauricio

Base: canaryHead: appwrite-1.9.5


📝 Commits (6)

  • 7e4710f feat(appwrite): update template to 1.9.5
  • 81b46fa fix(appwrite): re-add compose version header and add mongodb tag
  • fbb36d9 (fix): add container_name to appwrite executor so it can find itself
  • 71f8c9a (fix): route wildcard sites/functions subdomains to appwrite
  • fc33a98 (chore): remove wildcard routing comment
  • 25ffae4 (fix): drop container_name, use service-name hostname for executor self-discovery

📊 Changes

3 files changed (+486 additions, -105 deletions)

View changed files

📝 blueprints/appwrite/docker-compose.yml (+389 -56)
📝 blueprints/appwrite/template.toml (+95 -48)
📝 meta.json (+2 -1)

📄 Description

What

Updates the Appwrite template from 1.8.0 to 1.9.5 (self-hosted release).

1.9.x moves the default datastore from MariaDB to MongoDB (DocumentsDB) and adds new workers/tasks, so this is a substantial update rather than a version bump.

Changes

  • Images: appwrite/appwrite1.9.5, appwrite/console8.7.5, appwrite/assistant0.8.4, appwrite/browser0.3.2, openruntimes/executor0.25.1, redis7.4.7-alpine.
  • New default DB — MongoDB 8.2.5: replica set bootstrapped via healthcheck, keyfile volume, and mongo-init.js / mongo-entrypoint.sh provided through [[config.mounts]]. MariaDB is kept as a supported alternative (_APP_DB_ADAPTER=mariadb).
  • New services: appwrite-worker-screenshots, appwrite-worker-executions, appwrite-task-interval.
  • Env vars updated to 1.9.5 parity (edition, pool adapter, console domain/schema, VectorsDB keys, trusted headers, interval/webhook/screenshot/migration settings, GraphQL introspection, per-worker coroutine tuning); obsolete vars removed (InfluxDB/StatsD, legacy _APP_FUNCTIONS_CPUS/MEMORY/ENVS, etc.).
  • Function runtimes (v5): node-22, python-3.12, php-8.3, ruby-3.3, dart-3.5, go-1.23, rust-1.83, bun-1.1, deno-1.46, java-21.0, dotnet-8.0. _APP_EXECUTOR_IMAGES pre-pulls a lean subset (node/python/php/static); the rest pull on demand.
  • Not included: PostgreSQL (VectorsDB) and the embedding service — vector features stay disabled; every depends_on: appwrite-embedding was removed so Compose still starts. The upstream bundled Traefik is omitted (Dokploy provides routing via [[config.domains]]).

Testing

Rendered the template as Dokploy does (resolved .env, wrote the mount files, shared dokploy-network) and brought up all 29 services locally:

  • MongoDB replica-set bootstrap → healthy
  • First-boot migrations against Mongo (appwrite DB, 32 collections)
  • appwrite doctor healthcheck passes; GET /v1/health/version200 {"version":"1.9.5"}
  • Account create (201) + email session (201) — Mongo read/write/auth end to end
  • Console container serving; all workers/tasks/schedulers/mariadb/redis up, no crash-loops

Note: an earlier revision reported the executor crash-looping on macOS only — the actual root cause was the executor's container self-discovery (it matches gethostname() against Docker container names), fixed here by using hostname: openruntimes-executor so it matches the Compose-generated container name.

Verified on a live Dokploy deployment (v0.29.8, Ubuntu 24.04)

  • openruntimes-executor healthy, no restarts
  • Function build + execution end to end (node-22, returns 200)
  • Static site deploy + preview URL routed through the wildcard Traefik routers over HTTP and HTTPS
  • Main/console/API domains with HTTPS via Dokploy's normal Let's Encrypt toggle
  • MongoDB healthcheck with env-based password

Sites & functions wildcard HTTPS

The template routes *.sites.<domain> and *.functions.<domain> to Appwrite automatically (HostRegexp labels on the appwrite service), so site previews and function execution URLs work out of the box over HTTP.

Wildcard certificates cannot be issued by Dokploy's built-in Let's Encrypt (HTTP-01 cannot issue wildcards, and Appwrite's own certificates worker intentionally skips its generated subdomains). For HTTPS on these subdomains, users must obtain a wildcard cert for *.sites.<domain> and *.functions.<domain> (e.g. Let's Encrypt DNS-01 via lego/acme.sh/certbot, or their DNS provider) and add it in Dokploy → Settings → Certificates — Traefik then serves it automatically via SNI. The main/API/console domains get certificates through Dokploy's regular per-domain Let's Encrypt toggle, no extra steps.


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/Dokploy/templates/pull/970 **Author:** [@ChiragAgg5k](https://github.com/ChiragAgg5k) **Created:** 7/1/2026 **Status:** ✅ Merged **Merged:** 7/7/2026 **Merged by:** [@Siumauricio](https://github.com/Siumauricio) **Base:** `canary` ← **Head:** `appwrite-1.9.5` --- ### 📝 Commits (6) - [`7e4710f`](https://github.com/Dokploy/templates/commit/7e4710f1f0e408d0761e47aba325f02d2f698cd0) feat(appwrite): update template to 1.9.5 - [`81b46fa`](https://github.com/Dokploy/templates/commit/81b46fa5df0337eb558c143a700860b1cd8cb4bf) fix(appwrite): re-add compose version header and add mongodb tag - [`fbb36d9`](https://github.com/Dokploy/templates/commit/fbb36d91420ceace99453b3eaf032fe46799b5ad) (fix): add container_name to appwrite executor so it can find itself - [`71f8c9a`](https://github.com/Dokploy/templates/commit/71f8c9ad8baeec16b6e0ee428895ce39f06346db) (fix): route wildcard sites/functions subdomains to appwrite - [`fc33a98`](https://github.com/Dokploy/templates/commit/fc33a986d1a0ffae87ca7962d3a8bfd469cc73d8) (chore): remove wildcard routing comment - [`25ffae4`](https://github.com/Dokploy/templates/commit/25ffae4b17daaf17ad5cc7de6a11c8f5b7951e3c) (fix): drop container_name, use service-name hostname for executor self-discovery ### 📊 Changes **3 files changed** (+486 additions, -105 deletions) <details> <summary>View changed files</summary> 📝 `blueprints/appwrite/docker-compose.yml` (+389 -56) 📝 `blueprints/appwrite/template.toml` (+95 -48) 📝 `meta.json` (+2 -1) </details> ### 📄 Description ## What Updates the **Appwrite** template from `1.8.0` to `1.9.5` ([self-hosted release](https://appwrite.io/blog/post/appwrite-1-9-5-self-hosted-release)). 1.9.x moves the default datastore from MariaDB to **MongoDB** (DocumentsDB) and adds new workers/tasks, so this is a substantial update rather than a version bump. ### Changes - **Images:** `appwrite/appwrite` → `1.9.5`, `appwrite/console` → `8.7.5`, `appwrite/assistant` → `0.8.4`, `appwrite/browser` → `0.3.2`, `openruntimes/executor` → `0.25.1`, `redis` → `7.4.7-alpine`. - **New default DB — MongoDB `8.2.5`**: replica set bootstrapped via healthcheck, keyfile volume, and `mongo-init.js` / `mongo-entrypoint.sh` provided through `[[config.mounts]]`. MariaDB is kept as a supported alternative (`_APP_DB_ADAPTER=mariadb`). - **New services:** `appwrite-worker-screenshots`, `appwrite-worker-executions`, `appwrite-task-interval`. - **Env vars** updated to 1.9.5 parity (edition, pool adapter, console domain/schema, VectorsDB keys, trusted headers, interval/webhook/screenshot/migration settings, GraphQL introspection, per-worker coroutine tuning); obsolete vars removed (InfluxDB/StatsD, legacy `_APP_FUNCTIONS_CPUS/MEMORY/ENVS`, etc.). - **Function runtimes (v5):** `node-22, python-3.12, php-8.3, ruby-3.3, dart-3.5, go-1.23, rust-1.83, bun-1.1, deno-1.46, java-21.0, dotnet-8.0`. `_APP_EXECUTOR_IMAGES` pre-pulls a lean subset (node/python/php/static); the rest pull on demand. - **Not included:** PostgreSQL (VectorsDB) and the embedding service — vector features stay disabled; every `depends_on: appwrite-embedding` was removed so Compose still starts. The upstream bundled Traefik is omitted (Dokploy provides routing via `[[config.domains]]`). ## Testing Rendered the template as Dokploy does (resolved `.env`, wrote the mount files, shared `dokploy-network`) and brought up all 29 services locally: - ✅ MongoDB replica-set bootstrap → healthy - ✅ First-boot migrations against Mongo (`appwrite` DB, 32 collections) - ✅ `appwrite` `doctor` healthcheck passes; `GET /v1/health/version` → `200 {"version":"1.9.5"}` - ✅ Account create (`201`) + email session (`201`) — Mongo read/write/auth end to end - ✅ Console container serving; all workers/tasks/schedulers/mariadb/redis up, no crash-loops > Note: an earlier revision reported the executor crash-looping on macOS only — the actual root cause was the executor's container self-discovery (it matches `gethostname()` against Docker container names), fixed here by using `hostname: openruntimes-executor` so it matches the Compose-generated container name. ## Verified on a live Dokploy deployment (v0.29.8, Ubuntu 24.04) - ✅ `openruntimes-executor` healthy, no restarts - ✅ Function build + execution end to end (`node-22`, returns `200`) - ✅ Static site deploy + preview URL routed through the wildcard Traefik routers over HTTP and HTTPS - ✅ Main/console/API domains with HTTPS via Dokploy's normal Let's Encrypt toggle - ✅ MongoDB healthcheck with env-based password ## Sites & functions wildcard HTTPS The template routes `*.sites.<domain>` and `*.functions.<domain>` to Appwrite automatically (`HostRegexp` labels on the `appwrite` service), so site previews and function execution URLs work out of the box over HTTP. Wildcard **certificates** cannot be issued by Dokploy's built-in Let's Encrypt (HTTP-01 cannot issue wildcards, and Appwrite's own certificates worker intentionally skips its generated subdomains). For HTTPS on these subdomains, users must obtain a wildcard cert for `*.sites.<domain>` and `*.functions.<domain>` (e.g. Let's Encrypt DNS-01 via lego/acme.sh/certbot, or their DNS provider) and add it in **Dokploy → Settings → Certificates** — Traefik then serves it automatically via SNI. The main/API/console domains get certificates through Dokploy's regular per-domain Let's Encrypt toggle, no extra steps. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
GiteaMirror added the pull-request label 2026-07-13 17:00:11 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/templates#15298