Files
templates/blueprints/appwrite
Chirag Aggarwal 5523024b95 feat(appwrite): update template to 1.9.5 (#970)
* feat(appwrite): update template to 1.9.5

Move default datastore to MongoDB (DocumentsDB), add worker-screenshots,
worker-executions and task-interval, bump all images to 1.9.5, expand v5
function runtimes, and provide mongo bootstrap files via config.mounts.
MariaDB kept as a supported alternative. PostgreSQL/embedding (VectorsDB)
and bundled Traefik intentionally excluded.

* fix(appwrite): re-add compose version header and add mongodb tag

Address review: restore "version: 3.8" header (repo convention across
blueprints) and add the mongodb tag to meta.json to reflect the new
default datastore.

* (fix): add container_name to appwrite executor so it can find itself

The openruntimes executor v0.25 discovers its own container by listing
containers whose name matches its hostname (exc1). Without
container_name, compose names the container <project>-openruntimes-executor-1,
the lookup fails with 'Own container not found' and the executor
crash-loops, breaking all function/site builds and executions with
'Could not resolve host: exc1'. Matches upstream appwrite 1.9.5 compose.

Verified end-to-end on a fresh Dokploy v0.29.8 server: executor healthy,
function build + execution succeed.

* (fix): route wildcard sites/functions subdomains to appwrite

Dokploy domains only support exact hosts, so Appwrite-generated preview
and execution URLs (<id>.sites.<domain>, <id>.functions.<domain>) hit
Dokploy traefik with no matching router: 404 over HTTP and the traefik
default self-signed certificate over HTTPS ('site is insecure').

Add HostRegexp routers on the appwrite service for *.sites and
*.functions domains on both web and websecure entrypoints. HTTPS for
these subdomains still requires the user to provide a wildcard
certificate (DNS-01 resolver or uploaded wildcard/Origin CA cert);
with tls=true routers in place traefik picks it up via SNI once added.

Verified on a live Dokploy v0.29.8 deployment: site subdomains route
correctly over HTTP and HTTPS after adding the labels.

* (chore): remove wildcard routing comment

* (fix): drop container_name, use service-name hostname for executor self-discovery

container_name is disallowed by repo conventions and fails CI validation.
The executor discovers its own container by matching gethostname()
against Docker container names (substring filter), so hostname
openruntimes-executor matches <project>-openruntimes-executor-1 and
_APP_EXECUTOR_HOST can use the DNS-resolvable service name.

Also read the MongoDB healthcheck password from the container env
(MONGO_INITDB_ROOT_PASSWORD) instead of interpolating _APP_DB_ROOT_PASS
at render time, so shell-special characters in generated passwords
cannot break authentication.

Both verified on a live Dokploy v0.29.8 deployment: executor healthy,
function execution succeeds, mongodb healthcheck passes.

---------

Co-authored-by: ChiragAgg5k <chirag@appwrite.io>
2026-07-07 15:43:53 -06:00
..