Move from Supabase Cloud to your own server: a guided path
Leaving Supabase Cloud? See what moves with pg_dump, what doesn't (Storage, Auth secrets, Edge Functions), and how Aria guides the move to your own server.
Moving from Supabase Cloud to a server you own is one of the highest-leverage upgrades a growing product can make. Instead of paying per project, per database branch or for compute add-ons as your tables grow, you run the official self-hosted Supabase stack on a dedicated server at one flat monthly price.
Here is the plain truth about leaving Supabase Cloud: copying the Postgres database is easy, and moving the pieces around it is where people get stuck. This guide covers what moves cleanly, what needs care, and how Aria’s guided move handles the transition onto your own server.
Why teams move from Supabase Cloud to their own server
Supabase Cloud is a fast way to start. Free and Pro tiers let you ship an MVP in an afternoon. Teams usually start planning a move when one of three things happens:
- You need more than one environment or project. On cloud tiers where each project or compute upgrade carries its own monthly charge, running production, staging and two internal tools adds up quickly. On your own server, all of them share the hardware you already pay for.
- Database memory and I/O outgrow the base instance. Postgres loves RAM. Moving from a small cloud instance to 8 GB, 16 GB or 32 GB of dedicated RAM on a single-tenant server often costs a fraction of equivalent managed database compute add-ons.
- You want your API, workers and database on the same machine. When your Node or Python backend runs next to Postgres on the same server, database queries don’t cross the public internet.
Check Supabase’s pricing page for current Cloud rates and compute add-on costs before comparing.
What actually moves when you leave Supabase Cloud
Supabase is not just Postgres. It is a bundle of open-source services sitting in front of Postgres. When you migrate, each piece behaves differently:
| Component | How it moves | Watch out for |
|---|---|---|
| Postgres schema, tables & RLS | pg_dump / pg_restore over your connection string |
Match the major Postgres version (for example Postgres 15 to 15) and extensions (pgvector, pg_cron) |
| Auth users & password hashes | Stored in the auth.users schema inside Postgres |
Password hashes move with the database dump, but your JWT_SECRET changes unless you carry it over, which logs out active sessions |
| OAuth providers & SMTP | Configured in environment variables / GoTrue settings | Update redirect URLs in Google, GitHub or Apple developer consoles to your new domain |
| Storage buckets & files | Metadata is in storage.objects; actual files are in S3-backed storage |
pg_dump copies bucket definitions and file rows, not the files themselves. Objects must be copied via the Storage API or S3 sync |
| Edge Functions | TypeScript files in your repository (supabase/functions) |
Deployed from your Git repo onto the new Deno runtime, along with your function secrets |
| Realtime & PostgREST | Stateless services reading your Postgres schemas | No data to migrate; they work as soon as the schema and roles are restored |
Step-by-step: how a clean migration works
Whether you move by hand or use Aria’s guided move, a safe transition follows the same order so you never lose data.
1. Stand up the target server first
Your new self-hosted Supabase stack should be running, healthy and reachable over HTTPS before you touch production traffic. Because self-hosted Supabase runs Postgres, GoTrue (Auth), PostgREST, Realtime, Storage, Kong and Studio together, pick a server with at least 8 GB of RAM (Aria’s Developer plan at £15/month ex VAT or Pro at £22/month ex VAT) so Postgres has breathing room alongside your app services.
2. Dump and restore Postgres (public, auth, storage)
Using the direct database connection string from your Supabase Cloud dashboard, dump roles, schemas and data, then restore them into the Postgres instance on your server. Because auth.users and your Row Level Security (RLS) policies live inside Postgres, your user accounts, bcrypt password hashes and permissions come across intact.
3. Copy Storage objects
If your app uses Supabase Storage for avatars, PDFs or uploads, copy the objects from your Supabase Cloud buckets to your self-hosted Storage service after restoring the database metadata. Verify that a few sample signed URLs and public bucket links resolve cleanly.
4. Configure Auth redirect URLs and SMTP
Point GoTrue on your server to your SMTP provider (or Aria’s built-in app email) so password resets and magic links deliver reliably. Add your new Supabase domain to your OAuth providers’ allowed callback lists before switching traffic.
5. Cut over your app environment variables
Update SUPABASE_URL, SUPABASE_ANON_KEY and SUPABASE_SERVICE_ROLE_KEY in your web app and API. If your web app and API also run on Aria, Aria wires the local Supabase URLs and keys into your services automatically.
How Aria’s guided move makes this simpler
Setting up self-hosted Supabase by hand means managing a dozen containers, generating matching JWT keys, configuring Kong and Caddy for HTTPS, and writing backup scripts before you even start pg_dump.
On Aria:
- One line in
aria.yamlturns on the official self-hosted Supabase stack (Auth, REST, Realtime, Storage and Studio) on your dedicated server. - Aria estimates memory across your web app, API, workers and Supabase together, and recommends the smallest server plan that fits comfortably.
- Guided move from Supabase Cloud walks you through bringing an existing Supabase Cloud project onto your Aria server without hand-editing compose files or reverse proxies.
- Your old project stays untouched while you test the new server; you switch your app over when you are happy.
FAQ
Will my users have to reset their passwords when I move from Supabase Cloud?
No. User accounts and encrypted password hashes live in the auth.users table inside Postgres. When auth.users is restored to your self-hosted Supabase instance, existing email-and-password logins continue to work. Active browser sessions may need to sign in again if the JWT signing secret changes.
Does pg_dump move my Supabase Storage files?
No. pg_dump copies the storage.buckets and storage.objects tables (the metadata), but the actual uploaded files live in object storage and must be transferred separately alongside the database dump.
How much RAM do I need to move from Supabase Cloud to my own server?
Plan for at least 8 GB of RAM when running the full self-hosted Supabase stack (Postgres, Auth, REST, Realtime, Storage and Studio) alongside a web app or API. Aria’s Developer plan (8 GB RAM, £15/month ex VAT, draft) is the smallest tier we recommend for full Supabase.
Can I keep using the @supabase/supabase-js client in my app?
Yes. Self-hosted Supabase runs the same official open-source services (PostgREST, GoTrue, Realtime and Storage). Your application code keeps using @supabase/supabase-js; only the project URL and API keys change.
What does Aria charge for self-hosted Supabase?
Nothing extra. Aria charges one flat monthly price for your server (draft prices from £8/month ex VAT; £15/month ex VAT for the 8 GB Developer server suited to Supabase). There are no per-project, per-seat or per-database fees.
Ready to own your Supabase server?
Read our self-hosted Supabase guide, compare Aria vs Supabase Cloud, or get started.
Keep reading
Per-seat cloud pricing gets expensive: the flat-price alternative
Why per-seat and usage-based hosting bills climb with your team and traffic, and how one flat monthly price per server works instead. Draft from £8.
A cheap Heroku, Render and Railway alternative on your own server
Why paying per dyno or per service adds up fast, and how running all your apps, workers and Postgres on one dedicated server keeps the bill flat.
How to self-host Supabase (and when not to do it by hand)
A plain guide to self-hosting Supabase: what you need, what to check after docker compose up, and a simpler route if you would rather not run it yourself.
Your own cloud. Without the DevOps.
One server that’s yours alone, set up and run by Aria, at one flat monthly price.