If you want a backend-as-a-service you can run on your own hardware, two names dominate the shortlist: Supabase and Appwrite. Both are open source, both ship Docker Compose files, and both promise to free you from per-seat pricing and vendor lock-in. But they make fundamentally different bets — on the database, on the deployment model, and on how much operational work lands on you. This comparison walks through those differences honestly, including where Appwrite genuinely wins, so you can pick the right tool instead of the one with the loudest marketing. If you land on Supabase, our self-hosted Supabase management platform exists to take the operational sting out of it.
The core difference: Postgres vs a document model
Everything else flows from this one decision.
Supabase is PostgreSQL. When you self-host Supabase, you get a real, unabstracted Postgres instance. You write SQL, you use extensions (pgvector, PostGIS, pg_cron, TimescaleDB), you enforce access with Row Level Security, and PostgREST auto-generates a REST API from your schema. If you already know relational databases, there is almost nothing new to learn.
Appwrite is a document-oriented API over MariaDB. You define collections and attributes through Appwrite's console or SDK, and query them through Appwrite's own API — you generally do not touch SQL directly. This is closer to the Firebase Firestore mental model: flexible, schema-light, and pleasant for simple CRUD, but it abstracts the database away from you.
Neither model is wrong. If your data is relational — joins, transactions, aggregations, reporting — Postgres is a decisive advantage, and it's a big part of why we think self-hosting changes the calculus versus Firebase-style backends. If your data is mostly independent documents and you value a simpler query surface, Appwrite's model can feel lighter.
Deployment: one service vs an orchestra
Here is where Appwrite has a real, honest edge.
A self-hosted Supabase stack is not one program. It's roughly seven coordinated services:
- PostgreSQL — the database
- GoTrue — authentication
- PostgREST — the auto-generated REST API
- Realtime — websocket subscriptions
- Storage — file storage
- Kong — the API gateway
- Studio — the admin dashboard
They talk to each other over a shared network, share JWT secrets, and all have to be healthy for the platform to work. Appwrite, by contrast, is far closer to a single-service deployment — its Docker image is smaller and idles on less RAM, which is why it's popular on tiny VPS instances and edge hardware. docker compose up genuinely gets you further, faster, with Appwrite.
If minimal moving parts is your top priority, that matters. But it's worth being precise about what that simplicity buys you, because the gap narrows the moment you go to production. Backups, TLS, upgrades, monitoring, and firewalling are your job on both platforms — that operational reality doesn't disappear because the initial up command was shorter. We wrote a whole post on the operational burden self-hosting quietly hands you; most of it applies to Appwrite too.
Feature-by-feature
| Area | Self-hosted Supabase | Self-hosted Appwrite |
|---|---|---|
| Database | PostgreSQL (full SQL, extensions) | Document API over MariaDB |
| Auth | GoTrue — email, OAuth, SSO/SAML, MFA | Built-in — email, OAuth, phone, MFA |
| APIs | Auto REST (PostgREST) + GraphQL | REST/GraphQL over the document model |
| Realtime | Postgres changes over websockets | Realtime events over websockets |
| Storage | S3-compatible object storage | Built-in file storage + image transforms |
| Functions | Edge Functions (Deno) | Functions (many runtimes) |
| Messaging | SMTP + third-party providers | Built-in messaging (SMS/email/push, many providers) |
| Vector/AI | pgvector, native | Add-on / less mature |
| Ecosystem | Very large — tutorials, templates, tooling | Growing, smaller |
Two things stand out. Appwrite's built-in Messaging — SMS, email, and push through ten-plus providers, with scheduling and segmentation — is genuinely more batteries-included than Supabase, where you wire up SMTP and providers yourself. On the other side, Supabase's extension ecosystem is unmatched for self-hosters: adding pgvector for AI embeddings or PostGIS for geospatial queries is a one-line change to a database you already control, with no separate service to run.
The operational reality (true for both)
The self-hosting community is refreshingly honest that "open source and free to run" is not the same as "free." Once either platform is holding real user data, you own:
- Backups — and, more importantly, tested restores. A backup you've never restored is a hope, not a plan.
- TLS and custom domains — certificates that renew before they expire.
- Upgrades — applying security patches without breaking your running instance.
- Monitoring — knowing a container died before your users tell you.
- Network security — locking down ports so your database isn't on the public internet.
This is the part comparison articles usually skip, and it's the part that actually decides whether self-hosting is worth it. Supabase's larger surface area (seven services) means more to monitor and back up; Appwrite's smaller footprint means less. But the responsibilities are identical. Before you commit to either, read our honest breakdown of what self-hosting Supabase actually costs — the dollar figure is smaller than managed cloud, but the time figure is real.
When Appwrite is the better call
Being honest: pick Appwrite if
- Your data is document-shaped and you don't need SQL, joins, or reporting.
- You want the lightest possible deployment on constrained hardware.
- Built-in multi-channel messaging out of the box saves you meaningful work.
- Your team prefers Appwrite's SDK-first developer experience over writing SQL.
When self-hosted Supabase wins
Pick Supabase if
- Your data is relational, or you want the option to treat it that way later.
- You want Postgres extensions —
pgvectorfor AI, PostGIS for maps,pg_cronfor scheduling. - Row Level Security as your authorization model appeals to you.
- You value the larger ecosystem: more tutorials, templates, integrations, and hiring pool.
- You may eventually migrate to or from Supabase Cloud and want portability. (See our self-hosted vs cloud comparison.)
For most teams building a general-purpose product with relational data, Supabase's Postgres foundation and ecosystem tip the balance — as long as you have a plan for the operational side.
Where Supascale fits
The single strongest argument for Appwrite is that Supabase is more work to run. Supascale is our answer to exactly that. It gives self-hosted Supabase the managed-feeling layer it's missing — without giving up ownership of your infrastructure:
- Automated S3 backups with one-click restore, so "tested restore" isn't a manual chore.
- Custom domains with free, auto-renewing SSL certificates.
- A UI for OAuth providers (Google, GitHub, Discord, and more) instead of hand-editing env files.
- Selective service deployment — run only the services you need, shrinking that seven-service footprint toward Appwrite-like simplicity.
- A full REST API for automating the whole lifecycle.
It's a one-time license starting at $99 for unlimited projects — no per-project, per-server, or per-seat fees — which closes most of the "Supabase is harder to operate" gap that pushes people toward Appwrite in the first place. You keep Postgres and the ecosystem; you drop most of the toil.
FAQ
Is Appwrite easier to self-host than Supabase? Yes, for the initial deployment — Appwrite is a smaller, lighter stack. But production responsibilities (backups, TLS, upgrades, monitoring) are the same on both, and tooling like Supascale narrows the day-two gap considerably.
Can I run either on a small VPS? Both can run on modest hardware. Appwrite idles on less RAM, so it's friendlier to the smallest instances. For Supabase sizing, see our system requirements and installation guide.
Which is better for AI applications? Supabase, in most cases — pgvector makes it a first-class vector database with no extra service, whereas AI features are less mature on Appwrite.
Further Reading
- How to deploy Supabase on your own server: a step-by-step guide
- What features are missing in self-hosted Supabase?
- Self-hosted Supabase for indie hackers: a practical guide
- Installation docs
Summary of choices made:
- Topic: "Supabase vs Appwrite: Self-Hosting Comparison" — Appwrite is the closest self-hosted BaaS competitor and had no existing post (the Firebase comparison exists, but Appwrite/PocketBase/Nhost were all gaps). It targets the HIGH-priority "supabase alternative" keyword and fits the Comparisons category cleanly.
- Duplicate check: verified against all 151 files in
content/posts/— no Appwrite, PocketBase, or Nhost comparison exists. - Honesty angle: gives Appwrite genuine wins (lighter deployment, built-in messaging, smaller footprint) rather than a strawman, per the "no marketing fluff" guideline.
- Internal links (7):
/features,/pricing, plus five contextual blog/doc links (Firebase comparison, operational burden, true cost, self-hosted vs cloud, installation docs) — one in the first 100 words, distributed throughout, with a Further Reading section. - No hand-written CTA/Related Posts block (template owns those); pricing figures match the source-of-truth tiers.
- Word count: ~1,450 words, within the 1200–1800 target.
Sources used for the research: UI Bakery, 13labs, Appwrite blog, Encore.
