Deploy Appwrite (Full Stack)

Appwrite 2.2 full stack: auth, DB, storage, realtime. Firebase alternative

Deploy Appwrite (Full Stack)

Just deployed

Just deployed

Just deployed

Just deployed

Just deployed

Just deployed

Just deployed

Just deployed

Just deployed

Just deployed

Just deployed

Just deployed

Deploy and Host Appwrite on Railway

Appwrite is an open source backend-as-a-service: authentication, databases, file storage, realtime subscriptions, and messaging behind one API, with a web console to manage it all. This template deploys the full Appwrite 2.2 self-hosted stack as 13 wired services with one public domain.

About Hosting Appwrite

Appwrite is normally a 30+ container Docker Compose stack with a traefik reverse proxy routing by hostname and path. On Railway it runs as a set of small services: the API, the console, realtime, a combined queue worker, scheduled tasks, PostgreSQL (main database), MongoDB (DocumentsDB), Redis, and two Appwrite helper services. A tiny Caddy router replaces traefik: it owns the public domain and splits /v1 API traffic from console pages and /v1/realtime websockets, so SDKs, the console, and realtime all share one domain exactly like upstream.

First boot takes 2 to 4 minutes while MongoDB initializes its replica set and Appwrite provisions its schemas. If the console loads before the API is ready, wait a minute and refresh.

Common Use Cases

  • Backend for web and mobile apps: email/password and OAuth auth, teams, databases with permissions, file storage, realtime subscriptions.
  • Self-hosted Firebase-style backend for prototypes and side projects.
  • Internal tools backend with the console as admin UI.

Dependencies for Appwrite Hosting

Deployment Dependencies

No external accounts or keys are required. All secrets are generated at deploy time. Everything runs on Railway's private network; only the router has a public domain.

Implementation Details

After deploy, open the public domain, create the root account (first signup), then an organization and a project. Use https:///v1 as the API endpoint in your SDKs.

Deliberate cuts, honestly documented:

  • Functions and Sites do not work. They need Docker socket access, which Railway does not expose.
  • Usage statistics are disabled (_APP_USAGE_STATS=disabled). To re-enable, add your own ClickHouse and set _APP_CONNECTIONS_DB_USAGE, _APP_CONNECTIONS_DB_EXECUTIONS, and _APP_USAGE_STATS=enabled.
  • Custom domains for projects do not work (upstream relies on traefik issuing certificates). The main domain is unaffected.
  • Storage is local disk. Uploads and downloads work through the API service. For production, set _APP_STORAGE_DEVICE=S3 and the _APP_STORAGE_S3_* variables.
  • Email is not configured. Set _APP_SMTP_* on the appwrite, worker, and maintenance services for password recovery and invites.

Troubleshooting:

  • Boot logs show a ~30 second "execution schema setup" retry loop. Harmless: that store backs function execution logs, which are not in use.
  • Do not lower _APP_WORKER_MAX_COROUTINES below 8 on the worker; the queue connection pool is sized by it and jobs will start failing.
  • The PostgreSQL volume must stay mounted at /var/lib/postgresql (PG18 layout).

Why Deploy Appwrite on Railway?

Railway turns a 30-container compose file into a one-click deploy: private networking between services, persistent volumes, generated secrets, and a single managed domain with TLS. No VPS, no reverse proxy config, no certificate management.


Template Content

More templates in this category

View Template
Rocky Linux
Hosted Rocky Linux 9 workspace with SSH and persistent storage. 🚀

codestorm
47
View Template
Foundry Virtual Tabletop
A Self-Hosted & Modern Roleplaying Platform

Lucas
71
View Template
Letta Code Remote
Run a Letta Code agent 24/7. No inbound ports, just deploy.

Letta
51