Best Open Source Alternatives to Supabase in 2026
Supabase Costs Add Up at Scale
Supabase's free tier is genuinely useful — 500MB database storage, 50K monthly active users for auth, and 2GB storage. But the free tier pauses projects after 7 days of inactivity, making it unsuitable for production applications.
The Pro plan at $25/month removes the pausing restriction and adds resources. The Team plan jumps to $599/month. And the Pro plan has usage-based overages for database storage, auth MAUs, and egress bandwidth that can significantly increase your bill as you scale.
Supabase is itself open source, and self-hosting is officially supported. But self-hosting Supabase means managing 15+ Docker services — the full stack includes Postgres, PostgREST, GoTrue (auth), Realtime, Storage, Kong (API gateway), and more.
The question is whether you need all of that, or just the specific pieces Supabase provides.
TL;DR
- Supabase (self-hosted): Free to run on your own infrastructure. Complete feature parity with cloud. Significant operational complexity.
- PocketBase (42K+ stars): Single binary backend. Auth + database + storage + realtime in one file. Best for small to medium projects.
- Appwrite (45K+ stars): Best Supabase alternative with similar feature set but different architecture. More opinionated SDK approach.
- Directus (28K+ stars): Best if you already have a PostgreSQL database and want to add an API layer and admin interface.
- Nhost: Managed open source (Hasura + Postgres + storage + auth). Self-hostable but designed for Nhost Cloud.
Quick Comparison
| Tool | GitHub Stars | Database | Auth | Storage | Realtime | Self-Hosting |
|---|---|---|---|---|---|---|
| Supabase self-hosted | 76K+ | Postgres | Yes | Yes | Yes | Complex (15+ services) |
| PocketBase | 42K+ | SQLite/Postgres | Yes | Yes | Yes | Trivial (1 binary) |
| Appwrite | 45K+ | MariaDB | Yes | Yes | Yes | Easy (Docker) |
| Directus | 28K+ | Any SQL | Yes (users) | Yes | Limited | Easy |
Supabase Self-Hosted — Full Parity, High Complexity
Before looking at alternatives, it's worth noting that Supabase itself is fully open source and can be self-hosted. If you're already using Supabase's cloud and want to move to self-hosting, this is the zero-migration-effort option.
The Self-Hosted Reality
Supabase's recommended self-hosting approach is Docker Compose. The full stack:
git clone https://github.com/supabase/supabase
cd supabase/docker
cp .env.example .env
# Configure secrets, JWT keys, auth providers
docker compose up -d
This brings up approximately 15 containers: Postgres, PostgREST, GoTrue, Realtime, Storage, Kong, Meta, Studio (the dashboard), and supporting services.
Full feature parity: Postgres with Row Level Security, the same Auth system, Storage with S3-compatible interface, Realtime subscriptions, the Supabase Studio dashboard, Edge Functions (via Deno), and the full JavaScript/Python/Dart SDKs work unchanged.
When This Makes Sense
- You're already on Supabase cloud and want to migrate for cost or compliance reasons
- Your team is comfortable managing multi-service Docker deployments
- You have a DevOps engineer or infrastructure team
- You need Supabase's specific features (Row Level Security via Postgres policies, the studio, specific auth providers)
Limitations: The 15+ service deployment requires meaningful operational investment. Upgrades are not trivial. You're responsible for database backups, security patches, and monitoring.
PocketBase — Best Simplicity (Single Binary)
PocketBase is the most dramatic simplification possible: a complete backend in a single executable file. Download pocketbase for your platform, run it, and you have auth + database + file storage + realtime in one process. No Docker, no Postgres, no Redis.
What Makes It Stand Out
Zero dependency deployment: One binary, one data directory. Copy it to a VPS, run it, done. No services to orchestrate.
Built-in admin UI: PocketBase ships with a web-based admin interface for managing collections (database tables), auth rules, and stored files.
JavaScript-based rules: Extend PocketBase behavior with JavaScript hooks — custom validation, server-side logic, email sending, third-party API calls.
SQLite storage: Data is stored in SQLite, which is fast for reads and simpler to back up than Postgres (just copy the .db file).
JSVM for server logic: Write JavaScript that runs server-side on PocketBase's embedded JS runtime — similar to Supabase Edge Functions but without a separate service.
Self-Hosting
# Download
wget https://github.com/pocketbase/pocketbase/releases/latest/download/pocketbase_linux_amd64.zip
unzip pocketbase_linux_amd64.zip
# Run
./pocketbase serve --http="0.0.0.0:8090"
Admin UI: http://yourserver:8090/_/
That's it. No Docker, no configuration files, no dependencies.
Limitations
- SQLite means no concurrent write scaling (suitable for most apps, not for extremely high write loads)
- No Postgres's full SQL feature set (CTEs, window functions, advanced indexes)
- Smaller ecosystem vs Supabase
- No built-in realtime subscriptions that match Supabase's SSE-based approach (PocketBase uses SSE but with fewer filter options)
- Not suitable for projects that need enterprise-grade database features
Best for: Indie hackers, solo developers, and small teams who want a complete backend without infrastructure management. Perfect for MVPs, side projects, and apps that don't need Postgres's full power.
Appwrite — Most Similar Feature Set to Supabase
Appwrite (45K+ GitHub stars) is the closest open source equivalent to Supabase in terms of feature set: authentication, database, storage, functions, and realtime — all accessible via clean SDKs for every major platform.
What Makes It Stand Out
SDK-first design: Appwrite's primary interaction model is through its SDKs (JavaScript, Flutter, iOS, Android, Python, etc.). The SDKs abstract the HTTP API, providing type-safe methods for all operations.
Databases: Appwrite uses MariaDB under the hood but presents a document-model API. Create collections (like tables), define attributes (schema), and query with filters. Less powerful than Supabase's raw SQL access, but simpler for document-style data.
Authentication: 30+ auth methods — email/password, Google, Apple, GitHub, Discord, Twitch, Microsoft, SMS, and more. Auth tokens, sessions, and team permissions built in.
Functions: Server-side functions triggered by events, HTTP, or schedules. Supports JavaScript, Python, PHP, Ruby, Dart, and more.
Storage: File storage with image transformations built in (resize, crop, format conversion).
Realtime: Subscribe to changes in collections, documents, and storage.
Self-Hosting
docker run -it \
--volume /var/run/docker.sock:/var/run/docker.sock \
--volume "$(pwd)"/appwrite:/usr/src/code/appwrite:rw \
--entrypoint="install" \
appwrite/appwrite
The install script prompts for configuration and brings up the full stack (~6 containers). Simpler than Supabase's 15+ services.
When to Choose Appwrite vs Supabase
Choose Appwrite if:
- You're building mobile-first applications (excellent Flutter/mobile SDKs)
- You prefer a document-model API over SQL
- You want simpler self-hosting than Supabase's full stack
Choose Supabase if:
- You need direct SQL access and Postgres's full feature set
- You're using Row Level Security for fine-grained permissions
- You want the Supabase Studio dashboard
- Your team knows SQL
Directus — Best for Existing Databases
Directus is different from the others: instead of providing its own database, Directus connects to your existing PostgreSQL (or MySQL, SQLite, etc.) database and wraps it with a REST/GraphQL API, an admin interface, and user management.
What Makes It Stand Out
Database-agnostic layer: Point Directus at any SQL database and it automatically generates a REST API for every table, a GraphQL schema, and an admin dashboard. No migration, no schema changes, no lock-in.
Content management included: The admin interface is also a headless CMS — manage content, relationships, and permissions through a polished web UI.
Flows (automation): Visual workflow automation built in — trigger actions on data changes, send webhooks, transform data.
Multiple auth providers: LDAP, SAML, OAuth with multiple providers.
When Directus Makes Sense
You already have a PostgreSQL database with data in it. Rather than rewriting your backend, you add Directus on top to get an instant API and admin interface.
Best for: Teams with existing databases who want to add API access and an admin interface without rewriting their data layer.
Cost Comparison: Supabase Cloud vs Self-Hosted
Supabase Cloud
| Plan | Monthly | Annual | MAUs Included |
|---|---|---|---|
| Free | $0 | $0 | 50K |
| Pro | $25 | $300 | 50K |
| Team | $599 | $7,188 | Custom |
Plus overages: $0.00325/MAU above limits, $0.125/GB storage above 8GB.
Self-Hosted Alternatives
| Setup | Server | Monthly Total |
|---|---|---|
| PocketBase (Hetzner CAX11) | $4/month | $4 |
| Appwrite (Hetzner CPX21) | $6.50/month | $6.50 |
| Supabase self-hosted (Hetzner CPX31) | $10/month | $10 |
| Directus (Hetzner CPX21 + existing DB) | $6.50/month | $6.50 |
Even the full self-hosted Supabase stack costs $10/month vs $25+ for the cloud Pro plan.
At 100K+ MAUs where Supabase adds overage charges, the cost difference becomes dramatic: self-hosting stays fixed while cloud costs scale with users.
Migration from Supabase Cloud to Self-Hosted
If you're currently on Supabase cloud and want to migrate to self-hosted:
- Export your database: Supabase provides pg_dump-compatible exports
- Set up self-hosted Supabase: docker-compose from the official repository
- Migrate the database: Restore the pg_dump to your new instance
- Update environment variables: Point your app's Supabase URL and keys to your self-hosted instance
- Configure auth providers: Re-add OAuth providers in your self-hosted Studio
The Supabase SDKs support custom URLs — change SUPABASE_URL to your self-hosted endpoint and everything works.
Find Your Backend
Browse all Supabase and Firebase alternatives on OSSAlt — compare PocketBase, Appwrite, Directus, Nhost, and every other open source backend platform with deployment guides and feature comparisons.