icon

Supabase

开源的 Firebase 替代方案。我们使用企业级开源工具来构建 Firebase 的功能。

template cover
部署次数1800
发布者yuaanlin
创建于2024-04-03
模版内的服务
service icon
service icon
service icon
service icon
service icon
service icon
service icon
service icon
service icon
service icon
service icon
service icon
标签
CMSDatabaseToolAPI

Supabase Zeabur 自托管版

这是 Supabase 在 Zeabur 上的自托管版示例。 你可以使用这个模板在 Zeabur 上部署 Supabase 实例。

服务

此 Supabase 实例包含 Kong(API 网关)、Studio(Supabase Studio)、PostgreSQL(数据库)、Meta(Postgres Meta)、REST(PostgREST)、Auth(GoTrue)、Supavisor(连接池)、Realtime(数据库变更订阅)、Storage(存储 API)、MinIO(对象存储)、ImgProxy(图片处理)和 Functions(Edge Functions)。

详细架构信息请参考官方 Supabase 架构文档

因平台限制而未包含的服务:

  • Vector(日志聚合):需要 Kubernetes RBAC ClusterRole 权限来收集 pod 日志,基于安全考虑 Zeabur 不提供此权限。
  • Analytics(Logflare):依赖 Vector 进行日志收集。没有 Vector,Analytics 没有数据源,因此未包含。

注意: 没有 Analytics,Supabase Studio 的日志功能将无法使用。其他所有 Studio 功能(数据库、认证、存储管理等)都可以正常运作。

如果你需要额外的 Supabase 服务,欢迎根据上游 docker-compose.yaml 文件实现,并将你的更改提交到我们的 Discord 服务器。这适用于我们的贡献奖励计划

开始使用

访问仪表板

部署完成后,你的 Supabase Studio 仪表板将可在你配置的域名上使用。

查询登录凭证:

  1. 前往 Zeabur 项目中的 Kong 服务
  2. 点击 Instructions(说明) 标签
  3. 你会看到:
    • Supabase Username:你的仪表板用户名(来自 DASHBOARD_USERNAME 变量)
    • Supabase Password:自动生成的安全密码

重要安全密钥

以下密钥在 Kong 服务 的环境变量中公开:

密钥位置说明
JWT_SECRETKong 服务用于签署 JWT 令牌的密钥
ANON_KEYKong 服务匿名访问的公开 API 密钥
SERVICE_ROLE_KEYKong 服务具有完整访问权限的管理员 API 密钥

⚠️ 重要:默认密钥仅供演示使用。在正式环境使用前,你必须生成新的密钥。

如何生成安全密钥:

  1. 访问 Supabase JWT 生成器
  2. 使用你的自定义 JWT_SECRET 生成新的密钥:
    • 生成 anon 密钥 → 作为 ANON_KEY 使用
    • 生成 service_role 密钥(网站上显示为 SERVICE_KEY)→ 作为 SERVICE_ROLE_KEY 使用
  3. 在 Kong 服务中更新环境变量
  4. 重启所有服务以应用更改:
    • 进入你的 项目设置常规设置
    • 向下滚动到 批量操作
    • 点击 全部重启 以重启所有服务

保护你的服务

虽然我们提供了一些示例密钥以便快速开始,但你绝对不应该使用我们提供的默认值来部署 Supabase。请依照本节中的所有步骤确保你有安全的设置,然后重启所有服务以应用更改。

官方指南

配置

添加 Google OAuth 支持

auth 服务中添加以下环境变量:GOTRUE_EXTERNAL_GOOGLE_ENABLED=trueGOTRUE_EXTERNAL_GOOGLE_CLIENT_IDGOTRUE_EXTERNAL_GOOGLE_SECRETGOTRUE_EXTERNAL_GOOGLE_REDIRECT_URI。将域名更新为你的公开域名。

添加 Apple OAuth 支持

auth 服务中添加以下环境变量:GOTRUE_EXTERNAL_APPLE_ENABLED=trueGOTRUE_EXTERNAL_APPLE_CLIENT_IDGOTRUE_EXTERNAL_APPLE_SECRETGOTRUE_EXTERNAL_APPLE_REDIRECT_URI

配置 SMTP 邮件服务(Resend 集成)

要启用邮件功能(用户验证、密码重置等),使用 Resend 配置 SMTP 设置:

Resend 设置:

  1. 在 Resend 中验证你的域名(如 mail.yourdomain.com
  2. 配置 DNS 记录(TXT、CNAME、SPF、MX)
  3. 获取 Resend API 密钥

Auth 服务 SMTP 配置:auth 服务中添加:GOTRUE_SMTP_HOST=smtp.resend.comGOTRUE_SMTP_PORT=587GOTRUE_SMTP_PASS=re_xxx(你的 Resend API 密钥)、GOTRUE_SMTP_ADMIN_EMAILGOTRUE_SMTP_SENDER_NAMEGOTRUE_SITE_URL

高级 Auth 配置(可选)

支持自定义访问令牌钩子、MFA 验证钩子、密码验证钩子、自定义 SMS/Email 钩子等。在 auth 服务中添加相应的 GOTRUE_HOOK_* 环境变量。

Studio SQL 助手:studio 服务中添加:OPENAI_API_KEY=your-openai-api-key