Created
December 21, 2022 04:29
-
-
Save bhvngt/58ff9a5a8a551ba3fdf48204635af2e3 to your computer and use it in GitHub Desktop.
supabase self-hosted docker compose
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| version: "3.8" | |
| services: | |
| studio: | |
| container_name: supabase-studio | |
| image: supabase/studio:latest | |
| restart: unless-stopped | |
| ports: | |
| - ${STUDIO_PORT}:3000/tcp | |
| environment: | |
| SUPABASE_URL: http://kong:8000 | |
| STUDIO_PG_META_URL: http://meta:8080 | |
| SUPABASE_ANON_KEY: ${SUPABASE_ANON_KEY} | |
| SUPABASE_SERVICE_KEY: ${SUPABASE_SERVICE_KEY} | |
| kong: | |
| container_name: supabase-kong | |
| image: kong:2.1 | |
| restart: unless-stopped | |
| ports: | |
| - ${KONG_HTTP_PORT}:8000/tcp | |
| - ${KONG_HTTPS_PORT}:8443/tcp | |
| environment: | |
| KONG_DATABASE: "off" | |
| KONG_DECLARATIVE_CONFIG: /var/lib/kong/kong.yml | |
| # https://github.com/supabase/cli/issues/14 | |
| KONG_DNS_ORDER: LAST,A,CNAME | |
| KONG_PLUGINS: request-transformer,cors,key-auth,acl | |
| volumes: | |
| - ./volumes/api/kong.yml:/var/lib/kong/kong.yml | |
| auth: | |
| container_name: supabase-auth | |
| image: supabase/gotrue:v2.40.0 | |
| depends_on: | |
| - db | |
| restart: unless-stopped | |
| environment: | |
| GOTRUE_API_HOST: 0.0.0.0 | |
| GOTRUE_API_PORT: 9999 | |
| GOTRUE_DB_DRIVER: postgres | |
| GOTRUE_DB_DATABASE_URL: ${DOCKER_PGURL}?search_path=auth | |
| GOTRUE_SITE_URL: ${SITE_URL} | |
| GOTRUE_URI_ALLOW_LIST: ${ADDITIONAL_REDIRECT_URLS} | |
| GOTRUE_DISABLE_SIGNUP: ${DISABLE_SIGNUP} | |
| GOTRUE_JWT_SECRET: ${JWT_SECRET} | |
| GOTRUE_JWT_EXP: ${JWT_EXPIRY} | |
| GOTRUE_JWT_DEFAULT_GROUP_NAME: authenticated | |
| GOTRUE_EXTERNAL_EMAIL_ENABLED: ${ENABLE_EMAIL_SIGNUP} | |
| GOTRUE_MAILER_AUTOCONFIRM: ${ENABLE_EMAIL_AUTOCONFIRM} | |
| GOTRUE_EXTERNAL_GOOGLE_ENABLED: ${EXTERNAL_GOOGLE_ENABLED} | |
| GOTRUE_EXTERNAL_GOOGLE_CLIENT_ID: ${EXTERNAL_GOOGLE_CLIENT_ID} | |
| GOTRUE_EXTERNAL_GOOGLE_SECRET: ${EXTERNAL_GOOGLE_SECRET} | |
| GOTRUE_EXTERNAL_GOOGLE_REDIRECT_URI: ${EXTERNAL_GOOGLE_REDIRECT_URI} | |
| GOTRUE_SMTP_ADMIN_EMAIL: ${SMTP_ADMIN_EMAIL} | |
| GOTRUE_SMTP_HOST: ${SMTP_HOST} | |
| GOTRUE_SMTP_PORT: ${SMTP_PORT} | |
| GOTRUE_SMTP_USER: ${SMTP_USER} | |
| GOTRUE_SMTP_PASS: ${SMTP_PASS} | |
| GOTRUE_SMTP_SENDER_NAME: ${SMTP_SENDER_NAME} | |
| GOTRUE_MAILER_URLPATHS_INVITE: http://${HOST}:${KONG_HTTP_PORT}/auth/v1/verify | |
| GOTRUE_MAILER_URLPATHS_CONFIRMATION: http://${HOST}:${KONG_HTTP_PORT}/auth/v1/verify | |
| GOTRUE_MAILER_URLPATHS_RECOVERY: /auth/v1/verify | |
| GOTRUE_MAILER_URLPATHS_EMAIL_CHANGE: /auth/v1/verify | |
| GOTRUE_RATE_LIMIT_EMAIL_SENT: 10000 | |
| GOTRUE_EXTERNAL_PHONE_ENABLED: ${ENABLE_PHONE_SIGNUP} | |
| GOTRUE_SMS_AUTOCONFIRM: ${ENABLE_PHONE_AUTOCONFIRM} | |
| rest: | |
| container_name: supabase-rest | |
| image: postgrest/postgrest:v10.1.0 | |
| depends_on: | |
| - db | |
| restart: unless-stopped | |
| ports: | |
| - ${POSTGREST_PORT}:3000/tcp | |
| environment: | |
| PGRST_DB_URI: ${DOCKER_PGURL} | |
| PGRST_DB_SCHEMAS: ${PGRST_DB_SCHEMAS} | |
| PGRST_DB_TX_END: ${PGRST_DB_TX_END} | |
| PGRST_DB_ANON_ROLE: anon | |
| PGRST_JWT_SECRET: ${JWT_SECRET} | |
| PGRST_LOG_LEVEL: info | |
| PGRST_DB_USE_LEGACY_GUCS: "false" | |
| # realtime: | |
| # container_name: supabase-realtime | |
| # image: supabase/realtime:v0.25.1 | |
| # depends_on: | |
| # - db | |
| # restart: unless-stopped | |
| # environment: | |
| # DB_HOST: db | |
| # DB_PORT: 5432 | |
| # DB_NAME: ${PGDATABASE} | |
| # DB_USER: ${PGUSER} | |
| # DB_PASSWORD: ${PGPASSWORD} | |
| # DB_SSL: "false" | |
| # PORT: 4000 | |
| # JWT_SECRET: ${JWT_SECRET} | |
| # REPLICATION_MODE: RLS | |
| # REPLICATION_POLL_INTERVAL: 100 | |
| # SECURE_CHANNELS: "true" | |
| # SLOT_NAME: supabase_realtime_rls | |
| # TEMPORARY_SLOT: "true" | |
| # command: > | |
| # bash -c "./prod/rel/realtime/bin/realtime eval Realtime.Release.migrate | |
| # && ./prod/rel/realtime/bin/realtime start" | |
| realtime: | |
| hostname: realtime-dev.realtime | |
| container_name: supabase-realtime | |
| image: supabase/realtime:v1.0.0-rc.14 | |
| depends_on: | |
| - db | |
| restart: unless-stopped | |
| ports: | |
| - "4100:4000" | |
| environment: | |
| PORT: 4000 | |
| DB_HOST: db | |
| DB_PORT: 5432 | |
| DB_USER: postgres | |
| DB_PASSWORD: postgres | |
| DB_NAME: postgres | |
| DB_ENC_KEY: supabaserealtime | |
| DB_AFTER_CONNECT_QUERY: 'SET search_path TO _realtime' | |
| API_JWT_SECRET: your-super-secret-jwt-token-with-at-least-32-characters-long | |
| FLY_ALLOC_ID: fly123 | |
| FLY_APP_NAME: realtime | |
| SECRET_KEY_BASE: UpNVntn3cDxHJpq99YMc1T1AQgQpc8kfYTuRgBiYa15BLrx8etQoXz3gZv1/u2oq | |
| ERL_AFLAGS: -proto_dist inet_tcp | |
| ENABLE_TAILSCALE: false | |
| DNS_NODES: "''" | |
| command: sh -c "/app/bin/migrate && /app/bin/server" | |
| storage: | |
| container_name: supabase-storage | |
| image: supabase/storage-api:v0.26.1 | |
| depends_on: | |
| - db | |
| - rest | |
| restart: unless-stopped | |
| environment: | |
| ANON_KEY: ${SUPABASE_ANON_KEY} | |
| SERVICE_KEY: ${SUPABASE_SERVICE_KEY} | |
| POSTGREST_URL: http://rest:3000 | |
| PGRST_JWT_SECRET: ${JWT_SECRET} | |
| DATABASE_URL: ${DOCKER_PGURL} | |
| PGOPTIONS: -c search_path=storage,public | |
| FILE_SIZE_LIMIT: 52428800 | |
| STORAGE_BACKEND: file | |
| FILE_STORAGE_BACKEND_PATH: /var/lib/storage | |
| TENANT_ID: stub | |
| # TODO: https://github.com/supabase/storage-api/issues/55 | |
| REGION: stub | |
| GLOBAL_S3_BUCKET: stub | |
| volumes: | |
| - ./volumes/storage:/var/lib/storage | |
| meta: | |
| container_name: supabase-meta | |
| image: supabase/postgres-meta:v0.54.0 | |
| depends_on: | |
| - db | |
| restart: unless-stopped | |
| environment: | |
| PG_META_PORT: 8080 | |
| PG_META_DB_HOST: db | |
| PG_META_DB_PASSWORD: ${PGPASSWORD} | |
| db: | |
| container_name: supabase-db | |
| image: supabase/postgres:15.1.0.14 | |
| command: > | |
| postgres -c config_file=/etc/postgresql/postgresql.conf | |
| -c log_statement=all -c logging_collector=on | |
| -c log_destination=csvlog -c log_directory=/var/log/postgresql | |
| -c log_filename=postgresql -c log_min_messages=fatal | |
| restart: unless-stopped | |
| ports: | |
| - ${PGPORT}:5432 | |
| environment: | |
| POSTGRES_PASSWORD: ${PGPASSWORD} | |
| volumes: | |
| - /var/lib/postgresql/data | |
| - ./volumes/db/init:/docker-entrypoint-initdb.d | |
| - ${PROJECT_ROOT}/data/supabase/schema:/schema | |
| mail: | |
| container_name: inbucket | |
| image: inbucket/inbucket:latest | |
| depends_on: | |
| - db | |
| ports: | |
| - ${INBUCKET_PORT}:9000/tcp |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment