Supabase Pro
Self-host a Postgres backend with auth, storage, and a small API surface
The core loop is buildable, but a dependable replacement becomes a real weekend or multi-day project. For Supabase Pro, self-host a Postgres backend with auth, storage, and a small API surface. The hard boundary is managed postgres, backups, auth delivery, storage, edge functions, observability, and support, plus infrastructure scale, operations, and reliability.
Build verification: not recorded. How we judge buildability
What you give up
- managed Postgres, backups, auth delivery, storage, edge functions, observability, and support
- global edge network
- managed databases
- autoscaling
- DDoS protection, support, and compliance
Why people still pay
People still pay for Supabase Pro because hosting products sell an operations team and failure-domain diversity, not merely a deploy button. The recurring cost buys patching, certificates, isolation, secrets, builds, deploys, logs, metrics, backups, capacity, incidents, and security response, not just the visible interface.
Your build guide
The stack, security requirements, and agent rules for a focused replacement.
Before you start
- A user-owned Linux server, domain/DNS control, sufficient disk and memory, and the selected upstream release documentation. Record actual image names and required variables rather than guessing. Read the current official self-hosting guide and use a pinned upstream release. This requires operating the database, auth, storage and routing services, not just a PostgreSQL container.
- Implementation components: Docker Compose around the selected upstream application, pinned release/image digest and persistent volumes. Caddy for HTTPS, environment templates without secrets, and operator scripts for backups, upgrades and restore.
- Scope boundary: Managed backups, cloud dashboard parity and operational service guarantees remain outside the self-hosted build.
Use these project rules and optional skill references alongside the prompt. Review each skill before adding it to your agent; the AGENTS.md export includes the same guidance.
Optional external skill: supabase-postgres-best-practices — Review PostgreSQL schemas, queries, indexes, pooling, concurrency and row-level security. Review its instructions and compatibility before use; it does not grant deployment, data-access or publication permission.
Optional external skill: sharp-edges — Review security-sensitive APIs and configuration for dangerous defaults and easy-to-misuse interfaces. Review its instructions and compatibility before use; it does not grant deployment, data-access or publication permission.
Optional external skill: agent-browser — Automate browser interaction using accessibility snapshots, element references and reproducible navigation workflows. Review its instructions and compatibility before use; it does not grant deployment, data-access or publication permission.
Project rule — operating records: official self-hosted Supabase service configuration, database roles, auth settings, storage volumes and backup manifests
Project rule — preserve this invariant: Default secrets must be replaced; public API keys do not replace authorization policies and privileged service credentials never enter client bundles.
Project rule — acceptance evidence: An unauthenticated client cannot read a protected table or object; restoring isolated volumes recovers both database rows and stored files.
Implementation plan
Phase 1
Select and document the upstream release. Deploy the documented self-hosted Supabase stack for one private application, configure auth callbacks and storage policies and record a complete backup/restore procedure. Use upstream services instead of writing a new auth/storage control plane. Record the release, documented host requirements and upstream deployment reference. Start in an isolated staging directory. Keep these exclusions explicit: Managed backups, cloud dashboard parity and operational service guarantees remain outside the self-hosted build.
Phase 2
Configure the maintained application. Record official self-hosted Supabase service configuration, database roles, auth settings, storage volumes and backup manifests Configure supported environment variables, credentials, volumes and database connections. Use upstream installation and migration procedures; do not create a replacement application schema, authentication service or dashboard. Preserve this rule: Default secrets must be replaced; public API keys do not replace authorization policies and privileged service credentials never enter client bundles.
Phase 3
Use the upstream workflow. Perform the stated workflow through the upstream interface or its documented CLI. Add an operator helper script only when the working slice explicitly calls for it; do not build a new input/review/output frontend. Back up before each upgrade, retain the previous image and configuration, and check upstream schema migration notes; a container rollback alone may not reverse a database migration.
Phase 4
Review access and failure states. Generate unique administrator secrets, restrict exposed ports and disable public signup if the deployment is private. Keep backups encrypted and credentials outside the repository. Enable RLS for exposed application tables and add ownership/membership policies. Keep service-role/secret keys server-side, configure storage access policies and review privileged views/functions. Document health checks, reconnect/restart steps and how missing configuration is surfaced by the upstream service. Keep public and administrative endpoints separate.
Phase 5
Recovery and upgrades. Capture the complete database and persistent file set consistently. Rehearse recovery into separate volumes and document the supported rollback point. Document upstream migration compatibility before an upgrade, the retained rollback point and the sequence for restoring configuration, data and files.
Phase 6
Operator handoff and acceptance. An unauthenticated client cannot read a protected table or object; restoring isolated volumes recovers both database rows and stored files. Record actual staging observations separately from these proposed checks. Deliver the pinned configuration, secret-free environment template, backup/restore runbook and any explicitly scoped helper scripts; do not claim equivalence to managed hosting.
WORKING SLICE Deploy the documented self-hosted Supabase stack for one private application, configure auth callbacks and storage policies and record a complete backup/restore procedure. Use upstream services instead of writing a new auth/storage control plane. Operate this scoped Supabase Pro-inspired deployment through the maintained upstream application. Record its configuration and failure states; do not rebuild its schema, interface or services. Architecture - Docker Compose around the selected upstream application, pinned release/image digest and persistent volumes. - Caddy for HTTPS, environment templates without secrets, and operator scripts for backups, upgrades and restore. Prerequisites and limits A user-owned Linux server, domain/DNS control, sufficient disk and memory, and the selected upstream release documentation. Record actual image names and required variables rather than guessing. Read the current official self-hosting guide and use a pinned upstream release. This requires operating the database, auth, storage and routing services, not just a PostgreSQL container. Outside this release: Managed backups, cloud dashboard parity and operational service guarantees remain outside the self-hosted build. Configuration and correctness official self-hosted Supabase service configuration, database roles, auth settings, storage volumes and backup manifests Invariant: Default secrets must be replaced; public API keys do not replace authorization policies and privileged service credentials never enter client bundles. Back up before each upgrade, retain the previous image and configuration, and check upstream schema migration notes; a container rollback alone may not reverse a database migration. Security and privacy Generate unique administrator secrets, restrict exposed ports and disable public signup if the deployment is private. Keep backups encrypted and credentials outside the repository. Enable RLS for exposed application tables and add ownership/membership policies. Keep service-role/secret keys server-side, configure storage access policies and review privileged views/functions. Recovery and export Capture the complete database and persistent file set consistently. Rehearse recovery into separate volumes and document the supported rollback point. Implementation order 1. Phase 1 — Select and document the upstream release. Deploy the documented self-hosted Supabase stack for one private application, configure auth callbacks and storage policies and record a complete backup/restore procedure. Use upstream services instead of writing a new auth/storage control plane. Record the release, documented host requirements and upstream deployment reference. Start in an isolated staging directory. Keep these exclusions explicit: Managed backups, cloud dashboard parity and operational service guarantees remain outside the self-hosted build. 2. Phase 2 — Configure the maintained application. Record official self-hosted Supabase service configuration, database roles, auth settings, storage volumes and backup manifests Configure supported environment variables, credentials, volumes and database connections. Use upstream installation and migration procedures; do not create a replacement application schema, authentication service or dashboard. Preserve this rule: Default secrets must be replaced; public API keys do not replace authorization policies and privileged service credentials never enter client bundles. 3. Phase 3 — Use the upstream workflow. Perform the stated workflow through the upstream interface or its documented CLI. Add an operator helper script only when the working slice explicitly calls for it; do not build a new input/review/output frontend. Back up before each upgrade, retain the previous image and configuration, and check upstream schema migration notes; a container rollback alone may not reverse a database migration. 4. Phase 4 — Review access and failure states. Generate unique administrator secrets, restrict exposed ports and disable public signup if the deployment is private. Keep backups encrypted and credentials outside the repository. Enable RLS for exposed application tables and add ownership/membership policies. Keep service-role/secret keys server-side, configure storage access policies and review privileged views/functions. Document health checks, reconnect/restart steps and how missing configuration is surfaced by the upstream service. Keep public and administrative endpoints separate. 5. Phase 5 — Recovery and upgrades. Capture the complete database and persistent file set consistently. Rehearse recovery into separate volumes and document the supported rollback point. Document upstream migration compatibility before an upgrade, the retained rollback point and the sequence for restoring configuration, data and files. 6. Phase 6 — Operator handoff and acceptance. An unauthenticated client cannot read a protected table or object; restoring isolated volumes recovers both database rows and stored files. Record actual staging observations separately from these proposed checks. Deliver the pinned configuration, secret-free environment template, backup/restore runbook and any explicitly scoped helper scripts; do not claim equivalence to managed hosting. Acceptance An unauthenticated client cannot read a protected table or object; restoring isolated volumes recovers both database rows and stored files. Use real source data or clearly labeled fixtures. Explain unsupported input and provider failures; do not fabricate analytics, delivery receipts, accuracy claims or security guarantees. Optional agent guidance Optional external skill: [supabase-postgres-best-practices](https://github.com/supabase/agent-skills/blob/main/skills/supabase-postgres-best-practices/SKILL.md) — Review PostgreSQL schemas, queries, indexes, pooling, concurrency and row-level security. Review its instructions and compatibility before use; it does not grant deployment, data-access or publication permission. Optional external skill: [sharp-edges](https://github.com/trailofbits/skills/blob/main/plugins/sharp-edges/skills/sharp-edges/SKILL.md) — Review security-sensitive APIs and configuration for dangerous defaults and easy-to-misuse interfaces. Review its instructions and compatibility before use; it does not grant deployment, data-access or publication permission. Optional external skill: [agent-browser](https://github.com/vercel-labs/agent-browser/blob/main/skills/agent-browser/SKILL.md) — Automate browser interaction using accessibility snapshots, element references and reproducible navigation workflows. Review its instructions and compatibility before use; it does not grant deployment, data-access or publication permission. Project rule — operating records: official self-hosted Supabase service configuration, database roles, auth settings, storage volumes and backup manifests Project rule — preserve this invariant: Default secrets must be replaced; public API keys do not replace authorization policies and privileged service credentials never enter client bundles. Project rule — acceptance evidence: An unauthenticated client cannot read a protected table or object; restoring isolated volumes recovers both database rows and stored files.
$ open in your agent (prompt prefilled, you press enter), copy the prompt or copy or download AGENTS.md · generated from this app's build plan
prompt copied. want to know what dies next week?
new verdicts + top votes, weekly. free. one-click out.
Alternatives to building your own
all 4 free alternatives to Supabase Pro →· no votes, no pay-to-list · just what's real
Supabase Pro pricing
| plan | monthly | annual (per mo) | what you get |
|---|---|---|---|
| free | $0/workspace | — | 2 active projects; 50,000 MAU; 500 MB database/project; 1 GB storage; 5 GB egress + 5 GB cached egress; 2 million Realtime messagesProjects may pause after 1 week of inactivity. |
| pro | $25/workspace | — | 100,000 MAU; 8 GB database disk/project; 100 GB storage; 250 GB egress + 250 GB cached egress; 7-day backups/log retentionIncludes $10/month in compute credits, enough for 1 Micro project; usage over allowances is metered. |
| team | $599/workspace | — | Pro usage allowances plus team controls, SSO, audit logs and longer operational support featuresUsage and project compute remain separately metered. |
| enterprise | — | — | Custom usage, support, compliance and deployment termsContact sales. |
free tier2 active projects; 50,000 MAU; 500 MB database/project; 1 GB file storage; 5 GB egress + 5 GB cached egress; 50 MB maximum file; 200 Realtime connections; 2 million Realtime messages; 500,000 Edge Function invocations
billingmonthly self-serve billing; no public annual self-serve price shown
hidden costsThe $25 Pro fee is not the whole bill: each project consumes compute after the included $10 credit; overages include MAU, storage, egress, database disk, Realtime, Edge Functions and image transforms; paid add-ons include custom domains ($10/month), PITR (from $100/month), phone MFA and log drains
pricing sources checked 2026-08-14 · pricing source ↗
Questions about Supabase Pro
Can you build your own Supabase Pro with AI?
Partly. The core loop is buildable, but a dependable replacement becomes a real weekend or multi-day project. For Supabase Pro, self-host a Postgres backend with auth, storage, and a small API surface. The hard boundary is managed postgres, backups, auth delivery, storage, edge functions, observability, and support, plus infrastructure scale, operations, and reliability.
What does the Supabase Pro build prompt cover?
The prompt starts with this scope: Deploy the documented self-hosted Supabase stack for one private application, configure auth callbacks and storage policies and record a complete backup/restore procedure. Use upstream services instead of writing a new auth/storage control plane. Full-product capabilities excluded from the comparison include: managed Postgres, backups, auth delivery, storage, edge functions, observability, and support; global edge network; managed databases. Follow the implementation plan and its prerequisites before expanding the build.
How do I use the prompt, AGENTS.md and agent skills?
Start with the Supabase Pro prerequisites and stack, then copy the prompt into your coding agent. Save the project rules as AGENTS.md in the project root. Linked skills are optional packages or source instructions for specific tasks; review their current contents and install only those matching the chosen stack. A skill does not supply API credentials or verify the finished app.
How long will this Supabase Pro project take?
The catalogue estimate is closest consolation build: multi-day for the limited scope. Setup, integration approvals, debugging, deployment and ongoing maintenance can add time. This is an estimate, not a delivery guarantee.
What would I give up by replacing Supabase Pro?
managed Postgres, backups, auth delivery, storage, edge functions, observability, and support; global edge network; managed databases; autoscaling; DDoS protection, support, and compliance. People still pay for Supabase Pro because hosting products sell an operations team and failure-domain diversity, not merely a deploy button. The recurring cost buys patching, certificates, isolation, secrets, builds, deploys, logs, metrics, backups, capacity, incidents, and security response, not just the visible interface.
What can I use instead of building Supabase Pro?
Supabase: The actual Postgres, Auth, Storage, Realtime, Functions, and API stack; free software, decidedly non-free operations. PocketBase: A drastically smaller substitute for one app: auth, files, realtime, API, and database in one binary, with no functions runtime. Appwrite: A similarly complete backend console with auth, data, files, realtime, and functions; the database is not Postgres. Compare all listed options at https://howtovibecodeit.dev/supabase-pro/alternatives. Check each option's license, hosting needs and feature limits.