- 假设你有一个二级域名example.com托管至cloudflare。
# Get the code
git clone --depth 1 https://github.com/supabase/supabase
# Go to the docker folder
cd supabase/docker
# Copy the fake env vars
cp .env.example .env
- 编辑.env文件。key generator地址。
// 可访问key generator地址,粘贴JWT Secret获得
POSTGRES_PASSWORD=xxxxxx
// 同理,刷新一下网页,粘贴新的JWT Secret
JWT_SECRET=xxxxxx
// Preconfigured Payload选择ANON_KEY,再点击Generate JWT,粘贴Generated Token
ANON_KEY=xxxxxx
// Preconfigured Payload选择SERVICE_KEY,再点击Generate JWT,粘贴Generated Token
SERVICE_ROLE_KEY=xxxxxx
// supabase api的url(不妨设置为https://api.supabase.example.com)
API_EXTERNAL_URL=xxxxxx
// studio的设置默认组织和项目
STUDIO_DEFAULT_ORGANIZATION=xxxxxx
STUDIO_DEFAULT_PROJECT=xxxxxx
// supabase studio的url(不妨设置为https://supabase.exmaple.com)
SUPABASE_PUBLIC_URL=xxxxxx
- 设置volumes/api/kong.yml文件。
# 这边的第一处的key就是.env文件中的ANON_KEY的值
# 这边的第二处的key就是.env文件中的SERVICE_ROLE_KEY的值
consumers:
- username: anon
keyauth_credentials:
- key: xxxxxx
- username: service_role
keyauth_credentials:
- key: xxxxxx
- 根据 docker-compose.yml 文件中的定义启动并运行 Docker 容器。
docker compose up -d
- 在cloudflare中添加2条A记录。
一条记录名为supabase,记录值为运行supabase的vps的ip地址(可以开启cloudflare的小云朵)。
另一条记录名为api.supabase,记录值为运行supabase的vps的ip地址(不可以开启cloudflare的小云朵,cloudflare多级子域名保护要花钱。详情见:https://developers.cloudflare.com/ssl/edge-certificates/additional-options/total-tls/error-messages/)。
- 在vps上安装caddy(以debian为例),官方文档地址
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy
- 编辑/etc/caddy/Caddyfile,添加以下内容
supabase.gujiakai.top {
basicauth {
username passwd
}
reverse_proxy localhost:3000
}
api.supabase.gujiakai.top {
reverse_proxy localhost:8000
}
这段配置的解释:
注:username可替换为你心仪的用户名,passwd可在vps上输入caddy hash-password
,对明文密码进行哈希处理,复制粘贴哈希处理过后的密码即可。
如以下便是明文密码12345678,经caddy哈希处理后的密码。