You're building a mobile app and Firebase looks convenient — until the bill scales, the data lives in Google's region, and your client asks where user accounts are stored for a privacy review. You could stitch together auth, a database, file uploads, and push notifications yourself. Or you could run Appwrite on a server you control.
Appwrite is an open-source backend platform — ~56k GitHub stars — that bundles auth, databases, storage, cloud functions, messaging, and realtime subscriptions behind one API and a management console. Think Firebase or Supabase, but self-hostable on Docker with the same feature set Appwrite runs in their cloud.
What it actually does
Appwrite gives your frontend (web, mobile, Flutter, whatever) a backend without you writing login flows from scratch every project.
Auth — email/password, magic links, OAuth (Google, GitHub, etc.), anonymous sessions, MFA. Session management and verification flows included.
Databases — structured collections with queries, indexes, relationships. Pick MongoDB or MariaDB at install time (that choice is permanent — plan before you click Install).
Storage — file buckets with permissions, encryption options, image transforms. Hook S3-compatible backends if you outgrow local disk.
Functions — deploy serverless-style functions triggered by events or schedules.
Realtime — subscribe to database or channel changes from client SDKs.
SDKs exist for JavaScript, Flutter, Apple platforms, Android, and more. Your app talks to Appwrite's REST API; you manage projects, API keys, and permissions in the web console.
Why self-host Appwrite?
Data location you can name. User emails, uploaded documents, chat logs — self-hosted Appwrite on a Canadian VPS means you can answer "where is it stored?" without hand-waving about a US cloud region.
Predictable cost at scale. Appwrite Cloud is fine for prototypes. Production traffic on your own box trades per-request SaaS pricing for RAM, disk, and someone's time to patch Docker.
One backend, many apps. Agencies building multiple client apps can run one Appwrite instance with separate projects per client — shared infrastructure, isolated API keys and databases.
Feature parity with cloud. Appwrite designed self-hosting as first-class, not a crippled community edition. You get the same product surface; you own uptime and backups.
What running it takes
This is not a single-container app. A full Appwrite stack spins up roughly 15–20 Docker services — API, workers, Redis, your chosen database, Traefik for routing, and more. Budget accordingly.
Official minimums: 2 CPU cores, 4 GB RAM, 2 GB swap. Realistic production: **8 GB RAM**, 4 cores, 50 GB+ disk once uploads accumulate.
Install via the web wizard:
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.0
Open port 20080, walk through hostname, database choice (MongoDB or MariaDB), and admin credentials. The wizard writes docker-compose.yml and .env — back up both, especially _APP_OPENSSL_KEY_V1. Change that key later and encrypted data (including passwords) becomes unreadable.
Put HTTPS in front with a real domain. Close port 20080 after setup if it was only for the installer. Back up the database and Docker volumes — Appwrite's docs cover MongoDB and MariaDB dump commands.
Updates mean pulling new images and running docker compose up — read release notes; backend platforms move fast.
Who it's for (and who should skip it)
Good fit: mobile and web teams wanting Firebase-style speed without Firebase's hosting terms, Canadian startups needing auth + DB + storage in one package, agencies standardizing backend patterns across client apps.
Maybe skip it: if you already have Postgres + a auth library you love (Supabase self-host might fit better). If nobody on the team will maintain a multi-container Docker stack, managed Appwrite Cloud or a simpler BaaS is less risky. If you need only static hosting — wrong tool; look at Coolify instead.
Hosting it in Canada
We deploy multi-container stacks on Canadian Docker hosting — Appwrite included when clients want auth, storage, and APIs on infrastructure we monitor and back up. Sizing starts at 8 GB RAM for a comfortable production instance; we'll talk disk growth for file uploads honestly.
Tell us how many apps and expected user count — we'll say whether one VPS holds it or you need a split database server.