logo
icon

Supabase

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

template cover
部署次数2148
发布者zeaburZeabur
创建于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

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(邮箱变更时强制验证)