Skip to content

Commit 0e036d4

Browse files
committed
chore: update self-host setup
1 parent 2bcbf04 commit 0e036d4

File tree

13 files changed

+372
-282
lines changed

13 files changed

+372
-282
lines changed

docker/.env

Lines changed: 0 additions & 29 deletions
This file was deleted.

docker/.env.example

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# Secrets
2+
3+
POSTGRES_PASSWORD=your-super-secret-and-long-postgres-password
4+
JWT_SECRET=your-super-secret-jwt-token-with-at-least-32-characters-long
5+
6+
# Auth
7+
8+
## General
9+
SITE_URL=http://localhost:3000
10+
ADDITIONAL_REDIRECT_URLS=
11+
JWT_EXPIRY=3600
12+
DISABLE_SIGNUP=false
13+
14+
## Email auth
15+
ENABLE_EMAIL_SIGNUP=true
16+
ENABLE_EMAIL_AUTOCONFIRM=false
17+
SMTP_ADMIN_EMAIL=
18+
SMTP_HOST=
19+
SMTP_PORT=
20+
SMTP_USER=
21+
SMTP_PASS=
22+
SMTP_SENDER_NAME=
23+
24+
## Phone auth
25+
ENABLE_PHONE_SIGNUP=false
26+
ENABLE_PHONE_AUTOCONFIRM=false
27+
28+
# Ports
29+
30+
## API endpoint ports
31+
KONG_HTTP_PORT=8000
32+
KONG_HTTPS_PORT=8443
33+
34+
## DB port
35+
POSTGRES_PORT=5432

docker/.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
volumes/db/data
2+
volumes/storage
3+
.env

docker/docker-compose.yml

Lines changed: 68 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -1,118 +1,115 @@
1-
version: '3.6'
21
services:
32
kong:
43
container_name: supabase-kong
5-
build:
6-
context: ./dockerfiles/kong
4+
image: kong:2.1
5+
restart: unless-stopped
6+
ports:
7+
- ${KONG_HTTP_PORT}:8000/tcp
8+
- ${KONG_HTTPS_PORT}:8443/tcp
9+
volumes:
10+
- ./volumes/kong.yml:/var/lib/kong/kong.yml
711
environment:
12+
KONG_DATABASE: "off"
813
KONG_DECLARATIVE_CONFIG: /var/lib/kong/kong.yml
9-
KONG_PLUGINS: request-transformer,cors,key-auth,http-log
10-
ports:
11-
- ${KONG_PORT}:8000/tcp
12-
- ${KONG_PORT_TLS}:8443/tcp
14+
# https://github.com/supabase/cli/issues/14
15+
KONG_DNS_ORDER: LAST,A,CNAME
16+
KONG_PLUGINS: request-transformer,cors,key-auth
1317
auth:
1418
container_name: supabase-auth
15-
image: supabase/gotrue:latest
16-
ports:
17-
- ${AUTH_PORT}
19+
image: supabase/gotrue:v2.1.8
1820
depends_on:
1921
- db
20-
restart: always
22+
restart: unless-stopped
2123
environment:
24+
GOTRUE_API_HOST: 0.0.0.0
25+
GOTRUE_API_PORT: 9999
26+
27+
GOTRUE_DB_DRIVER: postgres
28+
GOTRUE_DB_DATABASE_URL: postgres://postgres:${POSTGRES_PASSWORD}@db:5432/postgres?sslmode=disable&search_path=auth
29+
30+
GOTRUE_SITE_URL: ${SITE_URL}
31+
GOTRUE_URI_ALLOW_LIST: ${ADDITIONAL_REDIRECT_URLS}
32+
GOTRUE_DISABLE_SIGNUP: ${DISABLE_SIGNUP}
33+
2234
GOTRUE_JWT_SECRET: ${JWT_SECRET}
23-
GOTRUE_JWT_EXP: 3600
35+
GOTRUE_JWT_EXP: ${JWT_EXPIRY}
2436
GOTRUE_JWT_DEFAULT_GROUP_NAME: authenticated
25-
GOTRUE_DB_DRIVER: postgres
26-
DB_NAMESPACE: auth
27-
API_EXTERNAL_URL: http://localhost:8000
28-
GOTRUE_API_HOST: 0.0.0.0
29-
PORT: ${AUTH_PORT}
3037

38+
GOTRUE_EXTERNAL_EMAIL_ENABLED: ${ENABLE_EMAIL_SIGNUP}
39+
GOTRUE_MAILER_AUTOCONFIRM: ${ENABLE_EMAIL_AUTOCONFIRM}
40+
GOTRUE_SMTP_ADMIN_EMAIL: ${SMTP_ADMIN_EMAIL}
3141
GOTRUE_SMTP_HOST: ${SMTP_HOST}
3242
GOTRUE_SMTP_PORT: ${SMTP_PORT}
3343
GOTRUE_SMTP_USER: ${SMTP_USER}
3444
GOTRUE_SMTP_PASS: ${SMTP_PASS}
35-
GOTRUE_SMTP_ADMIN_EMAIL: ${SMTP_ADMIN_EMAIL}
36-
37-
GOTRUE_DISABLE_SIGNUP: 'false'
38-
GOTRUE_SITE_URL: http://localhost:8000
45+
GOTRUE_SMTP_SENDER_NAME: ${SMTP_SENDER_NAME}
3946
GOTRUE_MAILER_URLPATHS_INVITE: /auth/v1/verify
4047
GOTRUE_MAILER_URLPATHS_CONFIRMATION: /auth/v1/verify
4148
GOTRUE_MAILER_URLPATHS_RECOVERY: /auth/v1/verify
42-
GOTRUE_MAILER_AUTOCONFIRM: 'true'
43-
GOTRUE_LOG_LEVEL: DEBUG
44-
GOTRUE_OPERATOR_TOKEN: ${OPERATOR_TOKEN}
45-
DATABASE_URL: 'postgres://postgres:${POSTGRES_PASSWORD}@db:${POSTGRES_PORT}/postgres?sslmode=disable&search_path=auth'
49+
GOTRUE_MAILER_URLPATHS_EMAIL_CHANGE: /auth/v1/verify
4650

51+
GOTRUE_EXTERNAL_PHONE_ENABLED: ${ENABLE_PHONE_SIGNUP}
52+
GOTRUE_SMS_AUTOCONFIRM: ${ENABLE_PHONE_AUTOCONFIRM}
4753
rest:
4854
container_name: supabase-rest
49-
image: postgrest/postgrest:latest
50-
ports:
51-
- ${REST_PORT}:3000
55+
image: postgrest/postgrest:v8.0.0
5256
depends_on:
5357
- db
54-
restart: always
58+
restart: unless-stopped
5559
environment:
56-
PGRST_DB_URI: postgres://postgres:${POSTGRES_PASSWORD}@db:${POSTGRES_PORT}/postgres
60+
PGRST_DB_URI: postgres://postgres:${POSTGRES_PASSWORD}@db:5432/postgres
5761
PGRST_DB_SCHEMA: public, storage
5862
PGRST_DB_ANON_ROLE: anon
5963
PGRST_JWT_SECRET: ${JWT_SECRET}
60-
6164
realtime:
6265
container_name: supabase-realtime
63-
image: supabase/realtime:latest
64-
ports:
65-
- ${REALTIME_PORT}
66+
image: supabase/realtime:v0.15.0
6667
depends_on:
6768
- db
68-
restart: on-failure
69+
restart: unless-stopped
6970
environment:
7071
DB_HOST: db
72+
DB_PORT: 5432
7173
DB_NAME: postgres
7274
DB_USER: postgres
7375
DB_PASSWORD: ${POSTGRES_PASSWORD}
74-
DB_PORT: ${POSTGRES_PORT}
75-
PORT: ${REALTIME_PORT}
76-
HOSTNAME: localhost
77-
# Disable JWT Auth locally. The JWT_SECRET will be ignored.
78-
SECURE_CHANNELS: 'false'
76+
SLOT_NAME: supabase_realtime
77+
PORT: 4000
78+
SECURE_CHANNELS: "true"
7979
JWT_SECRET: ${JWT_SECRET}
80-
8180
storage:
82-
image: supabase/storage-api:v0.9.1
83-
ports:
84-
- '5000:5000'
81+
container_name: supabase-storage
82+
image: supabase/storage-api:v0.9.3
8583
depends_on:
86-
- db
87-
- rest
88-
restart: always
84+
- db
85+
- rest
86+
restart: unless-stopped
87+
volumes:
88+
- ./volumes/storage:/var/lib/storage
8989
environment:
90-
ANON_KEY: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJzdXBhYmFzZSIsImlhdCI6MTYyNzIwODU0MCwiZXhwIjoxOTc0MzYzNzQwLCJhdWQiOiIiLCJzdWIiOiIiLCJyb2xlIjoiYW5vbiJ9.sUHErUOiKZ3nHQIxy-7jND6B80Uzf9G4NtMLmL6HXPQ
91-
SERVICE_KEY: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJzdXBhYmFzZSIsImlhdCI6MTYyNzIwNzUzMiwiZXhwIjoxNjkwMjc5NTMyLCJhdWQiOiIiLCJzdWIiOiIiLCJyb2xlIjoic2VydmljZV9yb2xlIn0.hfdXFZV5PdvUdo2xK0vStb1i97GJukSkRqfwd4YIh2M
92-
PROJECT_REF: bjwdssmqcnupljrqypxz # can be any random string
93-
POSTGREST_URL: http://rest:3000
94-
PGRST_JWT_SECRET: ${JWT_SECRET}
95-
DATABASE_URL: postgres://postgres:${POSTGRES_PASSWORD}@db:${POSTGRES_PORT}/postgres
96-
PGOPTIONS: "-c search_path=storage"
97-
FILE_SIZE_LIMIT: ${FILE_SIZE_LIMIT}
98-
REGION: ${STORAGE_REGION} # region where your bucket is located
99-
GLOBAL_S3_BUCKET: ${STORAGE_S3_BUCKET} # name of s3 bucket where you want to store objects
100-
# AWS_ACCESS_KEY_ID: replace-with-your-aws-key
101-
# AWS_SECRET_ACCESS_KEY: replace-with-your-aws-secret
102-
STORAGE_BACKEND: ${STORAGE_BACKEND}
103-
FILE_STORAGE_BACKEND_PATH: /var/data/storage
90+
ANON_KEY: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoiYW5vbiIsImlhdCI6MTYyNzIwODU0MCwiZXhwIjoxOTc0MzYzNzQwfQ.zcaQfHd3VA7XgJmdGfmV86OLVJT9s2MTmSy-e69BpUY
91+
SERVICE_KEY: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyb2xlIjoic2VydmljZV9yb2xlIiwiaWF0IjoxNjI3MjA4NTQwLCJleHAiOjE5NzQzNjM3NDB9.pkT3PNpO4DtO45Ac5HK_TKCx8sGLgNtV__pr_ZrRSAU
92+
POSTGREST_URL: http://rest:3000
93+
PGRST_JWT_SECRET: ${JWT_SECRET}
94+
DATABASE_URL: postgres://postgres:${POSTGRES_PASSWORD}@db:5432/postgres
95+
PGOPTIONS: -c search_path=storage
96+
FILE_SIZE_LIMIT: 52428800
97+
STORAGE_BACKEND: file
98+
FILE_STORAGE_BACKEND_PATH: /var/lib/storage
99+
# TODO: https://github.com/supabase/storage-api/commit/a836fc9666c2434d89ca4b31402f74772d50fb6d
100+
PROJECT_REF: stub
101+
# TODO: https://github.com/supabase/storage-api/issues/55
102+
REGION: stub
103+
GLOBAL_S3_BUCKET: stub
104104
db:
105105
container_name: supabase-db
106-
build:
107-
context: ./dockerfiles/postgres
106+
image: supabase/postgres:13.3.0
107+
restart: unless-stopped
108108
ports:
109-
- ${POSTGRES_PORT}:${POSTGRES_PORT}
110-
command:
111-
- postgres
112-
- -c
113-
- wal_level=logical
109+
- ${POSTGRES_PORT}:5432
110+
volumes:
111+
- ./volumes/db/data:/var/lib/postgresql/data
112+
- ./volumes/db/init:/docker-entrypoint-initdb.d
114113
environment:
115-
POSTGRES_DB: postgres
116-
POSTGRES_USER: postgres
117114
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
118-
POSTGRES_PORT: ${POSTGRES_PORT}
115+
command: postgres -c wal_level=logical

docker/dockerfiles/kong/Dockerfile

Lines changed: 0 additions & 15 deletions
This file was deleted.

docker/dockerfiles/kong/kong.yml

Lines changed: 0 additions & 85 deletions
This file was deleted.

docker/dockerfiles/postgres/00-initial-schema.sql

Lines changed: 0 additions & 30 deletions
This file was deleted.

0 commit comments

Comments
 (0)