Back

Supabase VPS Hosting, Pre-Installed

Self-hosted Supabase runs a Postgres database, authentication, file storage and realtime services together on your own server. Supabase's official Docker setup starts by itself after payment, Studio opens over HTTPS, and the address, login and password appear in your panel. Point your app at that address with the publishable key from the server, and reach the database on port 5432 or 6543.

How much power do you need?

Total$6.89/mo

Prices include VAT.

Scale RAM and CPU up or down whenever you like. Disk can only grow, so start small.

What's installed on your Supabase server?

  • Supabase's official Docker setup, pinned to the v1.26.08 release tag
  • PostgreSQL 17 and the Studio admin screen
  • The Auth, PostgREST, Realtime, Storage and Edge Runtime services
  • Supavisor connection pooler, with ports 5432 and 6543 open
  • SUPABASE_PUBLISHABLE_KEY, SUPABASE_SECRET_KEY, ANON_KEY, SERVICE_ROLE_KEY and POSTGRES_PASSWORD, generated by the official scripts
  • HTTPS through Caddy on an sslip.io address based on your IP, so a domain is optional
  • Settings in /opt/seturack/supabase/.env
  • Firewall with only ports 22, 80, 443, 5432 and 6543 open

What size do you need for Supabase?

Supabase's Docker docs set the minimum at 4 GB of RAM, 2 cores and 40 GB of disk, and recommend 8 GB or more of RAM, 4 or more cores and 80 GB or more of disk. Use 4 GB as a starting point for development and small projects, and look at 8 GB for a project with real users. Removing services you don't use, such as Realtime or Storage, from the Compose file lowers the requirements. If it isn't enough, grow RAM, CPU and disk separately from your panel, and your data and IP address stay the same.

UseSizePriceChoose
Starter 4 GB RAM · 2 vCore · 60 GB NVMe $6.89/mo
Medium 8 GB RAM · 4 vCore · 120 GB NVMe $13.62/mo
Powerful 16 GB RAM · 8 vCore · 200 GB NVMe $25.15/mo

Who is it for?

  • Anyone moving a Supabase project onto their own server
  • People who built an app with AI tools and want its database and login on their own server
  • Developers setting up a development and test environment of their own

What happens after you order?

  1. Set the size and complete your payment.
  2. Your server starts and Supabase installs itself. This took about 8 minutes in our real-server tests. On the Overview tab, wait for the App row to say Supabase is ready.
  3. Open the link in the Panel address row. Your browser asks for the Login and Password, then Studio opens.
  4. Connect over SSH and read the keys: grep -E '^(SUPABASE_PUBLISHABLE_KEY|SUPABASE_SECRET_KEY|POSTGRES_PASSWORD)=' /opt/seturack/supabase/.env
  5. Give your app the Panel address and the publishable key, and keep the secret key on the server side.
  6. Set SITE_URL and ADDITIONAL_REDIRECT_URLS in .env to your app's address, then run docker compose up -d.

With every server

  • Daily backups included in the price
  • Unlimited traffic
  • Full root access
  • Scale RAM and CPU up or down later, and grow the disk
  • Location: Istanbul · IST-1.

Good to know

  • Self-hosted Supabase runs a single project. The official docs say branching, PITR, the Management API and analytics buckets aren't available in this setup.
  • After setup, Auth's SITE_URL is the password-protected Studio address, so email links go there. Put your app's address in SITE_URL and ADDITIONAL_REDIRECT_URLS.
  • Ports 5432 and 6543 are open to the internet, and ufw can't close them because Docker publishes them. To limit them, add 127.0.0.1: to the start of Supavisor's port lines in docker-compose.yml and use an SSH tunnel.
  • Updates are your responsibility. Supabase publishes its Compose setup about once a month, and the update.sh script in the folder merges changes into your install.

Supabase questions and answers

How much RAM does self-hosted Supabase need?

Supabase's docs ask for at least 4 GB of RAM, 2 cores and 40 GB of disk for a self-hosted install, and recommend 8 GB or more of RAM. Removing services you don't use from the Compose file lowers the requirements.

Where do I find my Supabase API keys?

Connect over SSH and look in /opt/seturack/supabase/.env. SUPABASE_PUBLISHABLE_KEY is for client code. SUPABASE_SECRET_KEY has full rights and belongs only on the server side. The older ANON_KEY and SERVICE_ROLE_KEY keep working.

How do I connect my app to self-hosted Supabase?

With supabase-js, pass the Panel address and the SUPABASE_PUBLISHABLE_KEY value to createClient. REST, Auth, Storage and Realtime all live under that address. The login and password your browser asks for are only for Studio, and API requests are checked by key.

How do I connect to the Supabase database from outside?

Connections go through Supavisor: postgres://postgres.your-tenant-id:POSTGRES_PASSWORD@ADDRESS:5432/postgres. Port 5432 is session mode and 6543 is transaction mode. your-tenant-id is the POOLER_TENANT_ID value in .env. Postgres itself isn't published to the outside.

Why don't Supabase sign-up emails arrive?

No real SMTP server is set up at install, so email-confirmed sign-ups can't finish. Fill in the values starting with SMTP_ in /opt/seturack/supabase/.env for your email provider, then run docker compose up -d in that folder. To allow sign-ups without confirmation, look at the ENABLE_EMAIL_AUTOCONFIRM setting.

Can I run several Supabase projects?

One install runs a single project, and Studio has no support for multiple organizations or projects. Use a separate server for each project.

Is my Supabase data backed up?

Your server is backed up every night, the last 7 days are kept, and this is included in the price. Supabase's managed backups and PITR aren't part of a self-hosted install. To go back to a specific moment, keep your own pg_dump files too.

Read more and see similar apps