您的 Supabase 服务器上安装什么?
- Supabase 官方的 Docker 配置,固定在 v1.26.08 发布标签
- PostgreSQL 17 和 Studio 管理界面
- 安装时一并启动的服务包括 Auth、PostgREST、Realtime、Storage 和 Edge Runtime 这几项
- Supavisor 连接池,开放 5432 和 6543 端口
- 由官方脚本在安装时生成的密钥和数据库密码,分别是 SUPABASE_PUBLISHABLE_KEY、SUPABASE_SECRET_KEY、ANON_KEY、SERVICE_ROLE_KEY 和 POSTGRES_PASSWORD
- 通过 Caddy 提供 HTTPS,使用基于您 IP 的 sslip.io 地址,所以域名是可选的
- 设置位于 /opt/seturack/supabase/.env
- 防火墙只开放 22、80、443、5432 和 6543 端口
Supabase 需要多大的配置?
Supabase 的 Docker 文档给出的最低配置是 4 GB RAM、2 个核心和 40 GB 磁盘,推荐 8 GB 或更多 RAM、4 个或更多核心以及 80 GB 或更多磁盘。开发和小项目可以从 4 GB 起步,有真实用户的项目可以考虑 8 GB。把用不到的服务,例如 Realtime 或 Storage,从 Compose 文件中移除,可以降低需求。如果不够,可以在面板中分别扩大 RAM、CPU 和磁盘,您的数据和 IP 地址保持不变。
| 用途 | 配置 | 价格 | 选择 |
|---|---|---|---|
| 入门 | 4 GB RAM · 2 vCore · 60 GB NVMe | $6.89/月 | |
| 中等 | 8 GB RAM · 4 vCore · 120 GB NVMe | $13.62/月 | |
| 强劲 | 16 GB RAM · 8 vCore · 200 GB NVMe | $25.15/月 |
适合谁?
- 想把 Supabase 项目迁到自己服务器上的人
- 用 AI 工具做了应用、想把数据库和登录放在自己服务器上的人
- 想搭建自己的开发和测试环境的开发者
下单之后会发生什么?
- 设定配置并完成付款。
- 服务器启动后,Supabase 会自行安装。在我们的真实服务器测试中大约需要 8 分钟。请在“概览”标签页等待“应用”一行显示 Supabase 已就绪。
- 打开“面板地址”一行的链接。浏览器会要求输入“登录名”和“密码”,然后 Studio 就会打开。
- 通过 SSH 连接到服务器,然后用下面这条命令读取需要的几个密钥和密码:grep -E '^(SUPABASE_PUBLISHABLE_KEY|SUPABASE_SECRET_KEY|POSTGRES_PASSWORD)=' /opt/seturack/supabase/.env
- 把“面板地址”和 publishable 密钥交给您的应用,secret 密钥只留在服务器端。
- 把 .env 中的 SITE_URL 和 ADDITIONAL_REDIRECT_URLS 设为您的应用地址,然后运行 docker compose up -d。
每台服务器都包含
- 价格含每日备份
- 不限流量
- 完整 root 权限
- 之后可升级或降配 RAM 和 CPU,并扩大磁盘
- 位置:Istanbul · IST-1。
须知
- 自托管的 Supabase 只运行一个项目。官方文档说明,分支、PITR、Management API 和 analytics bucket 在这种部署中不可用。
- 安装完成后,Auth 的 SITE_URL 是有密码保护的 Studio 地址,所以邮件中的链接会指向那里。请把您应用的地址填入 SITE_URL 和 ADDITIONAL_REDIRECT_URLS。
- 5432 和 6543 端口对互联网开放,而 Docker 发布了这些端口,所以 ufw 无法关闭它们。要限制访问,请在 docker-compose.yml 中 Supavisor 的端口行开头加上 127.0.0.1:,并使用 SSH 隧道。
- 更新由您自行负责。Supabase 大约每月发布一次 Compose 配置,文件夹中的 update.sh 脚本会把变更合并到您的安装中。
Supabase 常见问题
自托管的 Supabase 需要多少 RAM?
Supabase 的文档要求自托管安装至少有 4 GB RAM、2 个核心和 40 GB 磁盘,推荐 8 GB 或更多 RAM。把用不到的服务从 Compose 文件中移除,可以降低需求。
在哪里可以找到我的 Supabase API 密钥?
通过 SSH 连接,查看 /opt/seturack/supabase/.env。SUPABASE_PUBLISHABLE_KEY 用于客户端代码。SUPABASE_SECRET_KEY 拥有完全权限,只应放在服务器端。较早的 ANON_KEY 和 SERVICE_ROLE_KEY 仍然可用。
如何把我的应用连接到自托管的 Supabase?
使用 supabase-js 时,把“面板地址”和 SUPABASE_PUBLISHABLE_KEY 的值传给 createClient。REST、Auth、Storage 和 Realtime 都在该地址之下。浏览器要求输入的登录名和密码只用于 Studio,API 请求则用密钥校验。
如何从外部连接 Supabase 数据库?
数据库连接要经过 Supavisor,连接字符串为 postgres://postgres.your-tenant-id:POSTGRES_PASSWORD@ADDRESS:5432/postgres。5432 是会话模式,6543 是事务模式。其中 your-tenant-id 是 .env 中的 POOLER_TENANT_ID 值。Postgres 本身不对外发布。
为什么收不到 Supabase 的注册邮件?
安装时没有设置真正的 SMTP 服务器,所以需要邮件确认的注册无法完成。请在 /opt/seturack/supabase/.env 中填写以 SMTP_ 开头的各项,填入您的邮件服务商的信息,然后在该文件夹中运行 docker compose up -d。如果要允许无需确认的注册,请查看 ENABLE_EMAIL_AUTOCONFIRM 设置。
可以运行多个 Supabase 项目吗?
一次安装只运行一个项目,Studio 不支持多个组织或项目。每个项目请使用单独的服务器。
我的 Supabase 数据有备份吗?
您的服务器每晚备份,保留最近 7 天,费用已包含在价格中。Supabase 的托管备份和 PITR 不属于自托管安装。如果需要回到某个具体时间点,请同时保留您自己的 pg_dump 文件。