Self-Hosted Alternatives to Supabase

Why Replace Supabase?

Supabase’s free tier pauses your database after one week of inactivity. The Pro plan costs $25/month per project. If you run 3 projects, that’s $75/month before any usage charges. Exceed the included 8 GB database space, 250 MB file storage, or 50,000 monthly active users, and per-unit charges add up fast.

Supabase is itself built on open-source tools — PostgreSQL, PostgREST, GoTrue, Kong — which means you can run the same stack on your own server. But Supabase’s self-hosted option is complex (10+ containers, limited documentation, no Studio dashboard support until recently). Simpler alternatives exist that cover the same use cases with fewer moving parts.

FactorSupabase ProSupabase Self-HostedPocketBaseAppwrite
Monthly cost$25/project$0 + server$0 + server$0 + server
3 projects/year$900~$120 (VPS)~$60 (VPS)~$120 (VPS)
DatabasePostgreSQLPostgreSQLSQLiteMariaDB
AuthGoTrueGoTrueBuilt-inBuilt-in
StorageS3-backedS3-backedLocal filesystemLocal/S3
Real-timePostgreSQL CDCPostgreSQL CDCSSEWebSocket
Serverless functionsDeno Edge FunctionsLimitedGo hooksMulti-language
Deployment complexityManagedHigh (10+ containers)Minimal (1 binary)Medium (15+ containers)

Best Alternatives

PocketBase — Best Lightweight Replacement

PocketBase replaces Supabase’s core features — auth, database, real-time subscriptions, file storage — with a single Go binary. No PostgreSQL, no PostgREST, no separate auth service. One file, one process, 50 MB RAM. It uses SQLite instead of PostgreSQL, which means simpler backups (copy one file) but less raw query power for complex analytical queries.

PocketBase’s admin dashboard is clean and functional. Define collections (tables), set up field types, configure auth providers (Google, GitHub, Apple, OIDC), and manage files — all from the browser. The JavaScript and Dart SDKs provide real-time subscriptions via Server-Sent Events.

If you chose Supabase because PostgreSQL + real-time + auth “just works,” PocketBase provides the same developer experience with dramatically less infrastructure.

[Read our full guide: How to Self-Host PocketBase]

Appwrite — Best Feature-Complete Replacement

Appwrite matches more of Supabase’s feature surface: authentication with 30+ OAuth providers, document databases, file storage with image transformations, serverless functions in 10+ languages, real-time subscriptions, and a messaging service. The admin console is more polished than Supabase’s self-hosted Studio.

The trade-off is deployment size — Appwrite runs 15-20 containers versus Supabase’s 10+ containers. Both are heavy deployments, but Appwrite’s documentation for self-hosting is more complete and the setup is more battle-tested.

[Read our full guide: How to Self-Host Appwrite]

Supabase Self-Hosted — If You Need PostgreSQL Specifically

If your application relies on PostgreSQL features (PostGIS, pg_vector, advanced SQL, existing PostgreSQL extensions), running Supabase’s own open-source stack may be the best fit. Clone the supabase/supabase Docker setup, configure the .env, and bring up the stack. You get the exact same PostgREST API, GoTrue auth, and (recently) the Studio dashboard.

The challenge: Supabase’s self-hosted documentation is sparse compared to Appwrite or PocketBase. Edge Functions have limited self-hosted support. And managing 10+ containers (PostgreSQL, PostgREST, GoTrue, Kong, Realtime, Storage, Studio, Meta, etc.) adds operational overhead.

Migration Guide

From Supabase Cloud to PocketBase

  1. Export your PostgreSQL database using Supabase’s dashboard or pg_dump
  2. Transform your schema — Supabase tables map to PocketBase collections. Standard columns (text, number, boolean, date) transfer directly. PostgreSQL-specific types (JSONB, arrays, enums) need conversion.
  3. Export auth users — Supabase stores users in auth.users. Export and import into PocketBase’s user collection. Users will need to reset passwords.
  4. Download storage files — export from Supabase Storage and upload to PocketBase’s file storage
  5. Rewrite queries — Supabase client uses PostgREST syntax (.from('table').select('*')); PocketBase SDK uses a similar but different syntax (.collection('table').getList())
  6. Update real-time subscriptions — Supabase uses PostgreSQL CDC; PocketBase uses SSE. The subscription API is similar but the transport differs.

From Supabase Cloud to Appwrite

  1. Export PostgreSQL — same as above
  2. Import into Appwrite — create databases and collections in Appwrite’s console, import data via the API
  3. Migrate auth — export Supabase users, create them in Appwrite via the Server SDK
  4. Migrate storage — download files from Supabase Storage, upload to Appwrite Storage
  5. Rewrite functions — Supabase Edge Functions (Deno) need conversion to Appwrite Functions (Node.js/Python/etc.)

Cost Comparison

Supabase Pro (3 projects)PocketBaseAppwrite
Annual cost$900~$60 (VPS)~$120 (VPS)
3-year cost$2,700~$180~$360
Database size limit8 GB (then $0.125/GB)Disk capacityDisk capacity
Storage limit100 GB (then $0.021/GB)Disk capacityDisk capacity
Bandwidth limit250 GB (then $0.09/GB)VPS bandwidthVPS bandwidth
MAU limit50,000 (then $0.00325/MAU)UnlimitedUnlimited

What You Give Up

  • PostgreSQL ecosystem — PocketBase uses SQLite (no PostGIS, pg_vector, or PostgreSQL extensions). Appwrite uses MariaDB. If you need PostgreSQL specifically, use self-hosted Supabase.
  • Edge Functions — Supabase’s Deno-based edge functions run globally on Deno Deploy. Self-hosted alternatives run functions on your single server.
  • Supabase CLI and local development — tight integration between local dev and cloud deployment. Self-hosted platforms have their own CLIs but less polish.
  • Managed backups — Supabase Pro includes daily backups with point-in-time recovery. Self-hosted requires configuring your own backup strategy.
  • Database branching — Supabase’s preview branches create database copies per Git branch. No self-hosted equivalent.
  • Global CDN — Supabase serves assets through a CDN. Self-hosted storage serves from your server.
  • Supabase Studio — the web dashboard is polished and deeply integrated. Appwrite’s console is comparable; PocketBase’s is simpler.

Comments