Skip to main content

With Docker

Docker is the easiest way to get started with self-hosted Supabase.

Before you begin#

You need the following installed in your system:

Getting started#

Get the code#

Checkout the docker directory in the Supabase repo:

git clone --depth 1
cd supabase/docker

Manage Secrets#

Copy .env.example to .env and populate the values.

cp .env.example .env

In particular, these are required:

  • POSTGRES_PASSWORD: the password for the postgres role
  • JWT_SECRET: used by PostgREST and GoTrue, among others
  • SITE_URL: the base URL of your site
  • SMTP_*: mail server credentials

Generate API Keys#

Use your JWT_SECRET to generate a anon and service API keys using the JWT generator.

Replace the values in these files:

  • docker-compose.yml:
    • ANON_KEY - replace with an anon key
    • SERVICE_KEY - replace with a service key
  • volumes/kong.yml
    • anon - replace with an anon key
    • service_role - replace with a service key


You can now start Supabase:

docker-compose up

Your database will be persisted in volumes/db/data, and your storage objects in volumes/storage.

Try out the examples in supabase/examples to verify if it works correctly!


To keep the setup simple, we made some choices that may not be optimal for production:

  • the database is in the same machine as the servers
  • the storage uses the filesystem backend instead of S3

We strongly recommend that you decouple your database before deploying. Each system can be configured to suit your particular use-case.


See the following guides to deploy Docker Compose setup using your preferred tool and platform:

Next steps#