logo
icon

Supabase

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

template cover

部署 Supabase

Supabase 是一个非常流行的开源 Firebase 替代方案。它提供 Postgres 数据库、身份认证、API 以及文件存储等一整套工具,是一个强大的后端解决方案。

Zeabur 简化了这一复杂栈的部署。通过 Zeabur,你可以一键启动一个完整可用的 Supabase 实例(包含 Kong Gateway、Authentication、PostgreSQL),无需手动配置。

你将学到什么

在本教程中,我们将引导你完成:

  1. 从 Zeabur Marketplace 部署 Supabase 服务栈。
  2. 通过 Kong Gateway 访问 Supabase Dashboard。
  3. 获取你的 API keys 并连接你的应用。

⚠️ 重要限制:

UI 无 Logs: Supabase Studio 的 “Logs” 功能无法使用(因为缺少 Vector 服务)。你需要在 Zeabur 控制台中查看每个服务的日志。 无 MCP: 本模板不包含 AI Model Context Protocol 服务器。


阶段 1:部署服务

步骤 1:创建 Supabase 服务

Zeabur 通过模板市场提供“一键部署”。

选项 1:在项目页面创建 Supabase 实例

  1. 登录你的 Zeabur Dashboard
  2. 点击 "Add Service" 按钮。
  3. 选择 "Template"(Marketplace)。
  4. 搜索 Supabase
  5. 选择 Supabase 模板。你的服务(包括 PostgreSQL、minio、Kong)将立即开始部署。

步骤 2:访问 Supabase Dashboard(Kong Gateway)

与单独的数据库不同,Zeabur 上的 Supabase 使用 Kong Gateway 来管理访问。你需要获取凭据才能登录 UI。

  1. 进入项目内的 Kong 服务面板。
  2. 你会在这里看到 Supabase UsernameSupabase Password
  3. 在 Kong 服务面板侧边栏找到 Domains,点击提供的 URL。
  4. 使用步骤 2 的凭据登录 Supabase Dashboard。

kong.png


阶段 2:加固你的实例(关键)

⚠️ 警告: 模板使用默认 API key 仅用于演示。正式环境中你必须生成新的 key,否则任何知道默认 key 的人都可以访问你的数据库。

步骤 1:生成新的 keys

  1. 访问 Supabase JWT Generator
  2. 创建自定义 JWT_SECRET 并使用工具生成:
    • anon key
    • service_role key

步骤 2:更新 Kong 环境变量

  1. 返回 Zeabur 中的 Kong 服务。
  2. 打开 Variables 标签页。
  3. 用新 keys 更新以下值:
    • JWT_SECRET: 你的自定义 secret
    • ANON_KEY: 你的新 anon key
    • SERVICE_ROLE_KEY: 你的新 service_role key

步骤 3:重启服务

要应用这些安全变更,你必须重启整个栈:

  1. 进入 Project SettingsGeneral
  2. 滚动到 Batch Actions
  3. 点击 Restart All

阶段 3:配置(Auth 与邮件)

默认情况下,Supabase 不能发送邮件(magic link、重置密码等)。你需要配置 SMTP 提供商。我们推荐 Resend,但任何 SMTP 都可以。

步骤 1:配置 SMTP(邮件)

  1. 进入你 Zeabur 项目中的 Auth 服务。
  2. 打开 Variables 标签页并添加:
    • GOTRUE_SMTP_HOST: smtp.resend.com(或你的提供商)
    • GOTRUE_SMTP_PORT: 587
    • GOTRUE_SMTP_USER: resend(或你的用户名)
    • GOTRUE_SMTP_PASS: re_123...(你的 API Key)
    • GOTRUE_SMTP_ADMIN_EMAIL: [email protected]
    • GOTRUE_SITE_URL: https://your-project-domain.zeabur.app(用户跳转的链接)
  3. 重启 Auth 服务以应用更改。

步骤 2:配置 OAuth(Google/Apple)- 可选

若要启用 Google 登录,在 Auth 服务中添加:

  • GOTRUE_EXTERNAL_GOOGLE_ENABLED: true
  • GOTRUE_EXTERNAL_GOOGLE_CLIENT_ID: your-google-client-id
  • GOTRUE_EXTERNAL_GOOGLE_SECRET: your-google-secret
  • GOTRUE_EXTERNAL_GOOGLE_REDIRECT_URI: https://your-project.zeabur.app/auth/v1/callback

注意:请将 your-project.zeabur.app 替换为你的实际域名。

步骤 3:手动测试邮件功能

服务重启后,可以通过终端手动触发注册来验证配置:

curl -X POST "https://your-project.zeabur.app/auth/v1/signup" \
  -H "Content-Type: application/json" \
  -H "apikey: YOUR_ANON_KEY" \
  -d '{
    "email": "[email protected]",
    "password": "yourpassword"
  }'

预期结果:

  • 收到 200 OK 的 JSON 响应
  • [email protected] 收到验证邮件(请检查垃圾箱)

邮件排障

  • Redirect URI 不匹配: 确保 GOTRUE_SITE_URL 与实际部署域名完全一致。
  • SPF/DKIM: 使用自定义域名时,请确保 DNS 记录符合 SMTP 提供商要求,避免被拒收。
  • 投递: 初期邮件常进垃圾箱;可对域名做“预热”,或将邮件标记为“非垃圾”。

阶段 4:连接 Supabase

前置:获取你的 API keys

关键: 不要从 Supabase Studio 控制台复制 keys,因为它可能显示旧的默认 keys。

  1. 进入 Zeabur 的 Kong 服务 → Variables
  2. 复制你的 ANON_KEY 和域名 URL。

选项 1:连接你的前端/应用

适用:连接 Lovable 项目或常规 Web 应用。

为了让你的前端应用与 Supabase 后端通信,你需要在代码中配置环境变量。

  1. 在项目根目录创建或打开 .env 文件。

  2. 添加前置步骤中的凭据:

    VITE_SUPABASE_URL=[your-project-url]
    VITE_SUPABASE_ANON_KEY=[your-anon-key]
    
    

选项 2:同步数据库 Schema(CLI)

适用:开发者将本地数据库变更推送到生产实例。

你可以使用连接串将本地数据库 schema 推送到 Supabase。

  1. 获取连接串: 在 Zeabur 控制台中打开 Supabase 栈中的 PostgreSQL 服务面板。

  2. 复制: 复制 PostgreSQL 连接串。

    PostgreSQL Connection String

  3. 执行: 在终端运行以下命令(确保已安装 Supabase CLI):

    supabase db push --db-url "[your-supabase-postgresql-connection-string]" --debug
    
    

阶段 4.5:连接你的应用(服务间)

当你将应用与 Supabase 一起部署在 Zeabur 时,需要把凭据注入到部署环境变量中。

手动方式

  1. 进入 Zeabur 中你的 App Service 设置。
  2. 点击 Configurable(或进入 Variables 标签页)。
  3. 添加以下变量:
    • VITE_SUPABASE_URL: 粘贴你的项目 URL
    • VITE_SUPABASE_ANON_KEY: 粘贴你的 anon 公钥

提示:请确保 .env 等凭据文件已加入 .gitignore,避免泄露密钥。


阶段 5:高级配置(可选)

将以下变量添加到对应服务,以启用高级功能。

1. 高级 Auth Hooks(Auth 服务)

Auth 服务变量中添加以下内容,以在特定事件触发 Postgres 函数:

  • Custom Access Token Hook:
    • GOTRUE_HOOK_CUSTOM_ACCESS_TOKEN_ENABLED=true
    • GOTRUE_HOOK_CUSTOM_ACCESS_TOKEN_URI=pg-functions://postgres/public/custom_access_token_hook
  • MFA Verification Hook:
    • GOTRUE_HOOK_MFA_VERIFICATION_ATTEMPT_ENABLED=true
    • GOTRUE_HOOK_MFA_VERIFICATION_ATTEMPT_URI=pg-functions://postgres/public/mfa_verification_attempt
  • Password Verification Hook:
    • GOTRUE_HOOK_PASSWORD_VERIFICATION_ATTEMPT_ENABLED=true
    • GOTRUE_HOOK_PASSWORD_VERIFICATION_ATTEMPT_URI=pg-functions://postgres/public/password_verification_attempt

2. Studio AI 助手(Studio 服务)

Studio 服务变量中添加以下内容,以启用 AI SQL 助手:

  • OPENAI_API_KEY=your-openai-api-key

3. 安全增强(Auth 服务)

  • GOTRUE_EXTERNAL_SKIP_NONCE_CHECK=true(适用于移动端 Google Sign In)
  • GOTRUE_MAILER_SECURE_EMAIL_CHANGE_ENABLED=true(邮箱变更时强制验证)