If you're evaluating self-hosted Supabase, you've probably wondered: what exactly am I giving up compared to the cloud version? The honest answer is that self-hosted Supabase is incredibly capable—but it's not feature-complete with Supabase Cloud. Understanding these gaps upfront helps you plan accordingly and avoid frustration down the road.
This guide breaks down exactly what's missing, what workarounds exist, and when these gaps actually matter for your use case.
The Current State of Feature Parity
Supabase has been transparent about the differences between their hosted platform and self-hosted version. According to their official documentation, not all platform features are supported when you self-host. The core functionality—Postgres, Auth, Storage, Realtime, and PostgREST—works reliably. But the operational tooling and some convenience features are either missing or require manual configuration.
The community has actively discussed these gaps, and Supabase recently brought on a dedicated team member to improve the self-hosting experience. Progress is happening, but if you need these features today, you'll need workarounds.
Missing Feature #1: Logs and Observability Dashboard
This is arguably the biggest gap. The Supabase Cloud dashboard provides comprehensive logging for all services—API requests, database queries, Auth events, Edge Functions, and Realtime connections. Self-hosted instances don't include this out of the box.
What's Actually Missing
- The built-in Log Explorer in Supabase Studio
- Pre-configured log aggregation and retention
- The Metrics API (currently in beta and cloud-only)
- Real-time log streaming in the dashboard
Community members report that while API Gateway, Postgres, and Auth logs work, PostgREST, Edge Functions, and Cron logs often show "No results found."
The Workaround
You need to set up your own observability stack. The recommended approach is Grafana + Prometheus + Loki. Supabase has even open-sourced supabase-grafana, which provides Prometheus exporters for monitoring your Supabase project.
A community member recently open-sourced an Ansible toolkit that bundles Supabase with Caddy, OAuth2 SSO, and a full Grafana monitoring stack. This is a solid starting point if you want production-grade observability.
For more detailed guidance, check out our complete observability guide for self-hosted Supabase.
When This Matters
If you're running a production application and need to debug performance issues or track down errors, you must solve this. Flying blind without logs in production is asking for trouble. Budget time upfront to configure proper observability.
Missing Feature #2: Automated Backups
Supabase Cloud includes daily automated backups with point-in-time recovery for Pro plans and above. Self-hosted instances include none of this—backups are entirely your responsibility.
What's Actually Missing
- Scheduled database backups
- Storage object backups (critical: database backups don't include stored files)
- Point-in-time recovery
- One-click restore functionality
This is a significant gap. Many developers don't realize until it's too late that pg_dump only captures your database—all files uploaded via Supabase Storage are stored separately and require their own backup strategy.
The Workaround
You'll need to implement:
- Database backups: Schedule
pg_dumpor use WAL-G for continuous archiving - Storage backups: Configure S3-compatible storage and back up the bucket separately
- Automation: Set up cron jobs or use a tool that handles this for you
For a complete walkthrough, see our self-hosted Supabase backup and restore guide.
When This Matters
Always. There's no production use case where "we don't have backups" is acceptable. If you're self-hosting, solving backups should be your first priority after getting the stack running.
This is exactly the problem Supascale was built to solve—automated S3 backups with one-click restore, so you don't have to cobble together your own backup infrastructure.
Missing Feature #3: Edge Functions Dashboard UI
Edge Functions work in self-hosted Supabase—the Edge Runtime is open-source and runs anywhere Deno runs. But the dashboard experience is significantly different.
What's Actually Missing
- Creating and managing Edge Functions through the Studio UI
- Viewing function logs in the dashboard
- CRUD operations via the CLI for self-hosted instances
- Deployment workflow integration
On Supabase Cloud, you can create, edit, view logs, and manage secrets for Edge Functions directly in the dashboard. Self-hosted? You're working with files and docker-compose commands.
The Workaround
Edge Functions are stored in volumes/functions when using Docker Compose. To add a new function:
# Create your function
mkdir -p volumes/functions/my-function
echo 'Deno.serve(() => new Response("Hello"))' > volumes/functions/my-function/index.ts
# Restart to pick up changes
docker compose restart functions --no-deps
Your function is then available at http://your-domain:8000/functions/v1/my-function.
For more complex deployments, Supabase provides a demo repository showing how to deploy Edge Functions to Fly.io or other cloud providers.
When This Matters
If Edge Functions are central to your application and your team is used to the dashboard workflow, this friction adds up. For teams that are comfortable with file-based workflows and CI/CD, it's manageable.
Missing Feature #4: Email Template Configuration
The Supabase Cloud dashboard lets you customize email templates (password reset, magic link, etc.) through a nice UI. Self-hosted instances require environment variable configuration.
What's Actually Missing
- Visual email template editor
- Preview functionality
- Easy template iteration
The Workaround
Configure email templates via environment variables or by modifying the Auth service configuration directly. It works, but it's not as convenient as the visual editor.
If you're using Supascale, the Auth Providers configuration UI handles much of this complexity for you through the auth providers documentation.
When This Matters
During initial setup and whenever you need to update templates. Not a daily pain point, but adds friction when you need it.
Missing Feature #5: Auth Provider Configuration UI
Similar to email templates, configuring OAuth providers (Google, GitHub, Discord, Apple) requires environment variables in self-hosted instances rather than the dashboard UI.
What's Actually Missing
- Point-and-click OAuth provider setup
- Client ID/secret management in the dashboard
- Redirect URL configuration UI
The Workaround
Set the appropriate environment variables in your docker-compose file or .env:
GOTRUE_EXTERNAL_GOOGLE_ENABLED=true GOTRUE_EXTERNAL_GOOGLE_CLIENT_ID=your-client-id GOTRUE_EXTERNAL_GOOGLE_SECRET=your-secret GOTRUE_EXTERNAL_GOOGLE_REDIRECT_URI=https://your-domain/auth/v1/callback
For a complete setup guide, see our OAuth providers tutorial.
When This Matters
Initial setup and when adding new providers. Once configured, OAuth works identically to the cloud version.
Missing Feature #6: Automatic Updates and Security Patches
Supabase Cloud handles all updates behind the scenes. Self-hosted instances require you to manually update when new versions are released.
What's Actually Missing
- Zero-downtime rolling updates
- Automatic security patches
- Migration handling between versions
This is a real operational burden. Database migrations don't automatically run on existing self-hosted deployments, which can leave you on outdated schemas.
The Workaround
Monitor the Supabase releases page and plan regular update cycles. For major version upgrades, budget time for migration testing.
We've written a detailed guide on upgrading self-hosted Supabase that covers the migration process step-by-step.
When This Matters
This matters most when security vulnerabilities are disclosed. Supabase Cloud users get patches automatically; self-hosted users need to act quickly.
Features That Work Identically
To balance this discussion, here's what works exactly the same in self-hosted Supabase:
- PostgreSQL: Full feature parity—same extensions, same RLS policies, same performance
- PostgREST API: Identical auto-generated REST API
- Auth: Same authentication flows, JWT handling, and session management
- Realtime: Same subscription functionality for database changes
- Storage: Same file upload/download API (though you manage the underlying storage)
- Database Studio: The visual database editor works identically
The core Supabase stack is genuinely solid for self-hosting. The gaps are almost entirely in operational tooling and convenience features.
Should These Gaps Stop You from Self-Hosting?
Probably not, if you're prepared for them.
Self-hosting still makes sense when:
- Cost matters: VPS hosting is dramatically cheaper at scale
- Data residency: You need complete control over where your data lives
- No vendor lock-in: You want to avoid dependency on any single provider
- Customization: You need to modify or extend Supabase components
The gaps are manageable with proper tooling. For observability, Grafana + Prometheus is a battle-tested solution. For backups and Auth configuration, tools like Supascale handle the complexity for you.
What's Coming Next
Supabase continues to invest in self-hosting. Recent improvements include:
- Feature previews now available for self-hosted dashboards (previously cloud-only)
- PostgREST v14 with ~20% better performance
- OpenTelemetry support in development for standardized observability
- Dedicated team member focused on self-hosting improvements
The gap is narrowing, but today's reality is that you need to plan for these differences.
Conclusion
Self-hosted Supabase is production-ready—thousands of teams run it successfully. But it requires more upfront work than the cloud version, particularly for observability, backups, and OAuth configuration.
The best approach is to acknowledge these gaps and address them proactively:
- Set up monitoring before you go to production
- Configure automated backups immediately
- Document your OAuth setup for future reference
- Plan regular update cycles
If you'd rather skip the infrastructure work and focus on your application, Supascale handles backups, custom domains with SSL, and OAuth configuration out of the box—for a one-time $39.99 purchase with unlimited projects.
