icon

Supabase Self-Hosted

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

template cover
部署次数36
发布者terry90918
创建于2025-11-13
模版内的服务
service icon
service icon
service icon
service icon
service icon
service icon
service icon
service icon
service icon
service icon
service icon
service icon
标签
databasebackendsupabasepostgresqlauthstoragerealtime

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