icon

Supabase Self-Hosted

自訂 Supabase 自架設部署模板 - 包含完整的後端服務堆疊(Auth、Database、Storage、Realtime 等)| 已更新至 2025.10 最新版本

template cover
Deployed35 times
Publisherterry90918
Created2025-11-13
Services
service icon
service icon
service icon
service icon
service icon
service icon
service icon
service icon
service icon
service icon
service icon
service icon
Tags
databasebackendsupabasepostgresqlauthstoragerealtime

Supabase 自架設部署指南

這是一個完整的 Supabase 後端服務堆疊,包含 Authentication、Database、Storage、Realtime 等所有核心功能。

⚡ 快速開始

預計部署時間: < 3 分鐘部署 + 10 分鐘安全配置(選填)

步驟 1: 一鍵部署

  1. 填寫 DASHBOARD_USERNAME (Supabase Studio 登入帳號)
  2. 填寫 PUBLIC_DOMAIN (公開訪問網域)
  3. 點擊「部署」按鈕
  4. 等待 3-5 分鐘完成初始部署

步驟 2: 取得登入資訊

部署完成後:

  1. 前往 Kong 服務 → 點擊 Instructions 標籤
  2. 您會看到:
    • Supabase Username: 您設定的 DASHBOARD_USERNAME
    • Supabase Password: 自動產生的安全密碼
    • JWT_SECRET, ANON_KEY, SERVICE_ROLE_KEY: API 金鑰

步驟 3: 存取 Supabase Studio

訪問您配置的網域,使用步驟 2 取得的帳密登入。

🔒 安全配置(生產環境必須)

⚠️ 重要: 預設的 JWT 金鑰僅供測試使用,生產環境必須更換

產生安全金鑰

訪問 Supabase JWT Generator

  1. 產生新的 JWT_SECRET (32-40 字元)
  2. 使用該 JWT_SECRET 產生:
    • anon 角色的 JWT → 作為 ANON_KEY
    • service_role 角色的 JWT → 作為 SERVICE_ROLE_KEY

更新 Kong 服務環境變數

前往 Zeabur Dashboard → Kong 服務環境變數,更新:

JWT_SECRET=[您的新 JWT Secret]
ANON_KEY=[產生的 anon JWT]
SERVICE_ROLE_KEY=[產生的 service_role JWT]

重啟所有服務

更新後,前往 ProjectSettingsGeneralBatch ActionsRestart All

📊 服務說明

此模板包含 12 個服務:

  • PostgreSQL - 核心資料庫 (Postgres 15.8)
  • Kong - API Gateway 統一入口
  • Studio - Web 管理介面
  • Auth - 使用者認證服務 (GoTrue)
  • REST - 自動 REST API (PostgREST)
  • Realtime - WebSocket 即時訂閱
  • Storage - 檔案儲存服務
  • Functions - Serverless 函數執行環境
  • Meta - 資料庫管理工具
  • Supavisor - 連接池管理
  • MinIO - S3 相容儲存後端
  • ImgProxy - 圖片處理服務

未包含服務 (平台限制):

  • Vector (日誌收集):需要 Kubernetes RBAC 權限
  • Analytics (日誌分析):依賴 Vector

詳細架構請參考 官方文件

🔧 進階配置

SMTP Email 服務配置

前往 auth 服務環境變數,添加:

GOTRUE_SMTP_HOST=smtp.resend.com
GOTRUE_SMTP_PORT=587
GOTRUE_SMTP_USER=resend
GOTRUE_SMTP_PASS=re_xxx  # Your Resend API Key
GOTRUE_SMTP_ADMIN_EMAIL=noreply@yourdomain.com
GOTRUE_SMTP_SENDER_NAME=Your App Name
GOTRUE_SITE_URL=https://yourdomain.zeabur.app

完成後重啟 auth 服務

Google OAuth 支援

前往 auth 服務環境變數,添加:

GOTRUE_EXTERNAL_GOOGLE_ENABLED=true
GOTRUE_EXTERNAL_GOOGLE_CLIENT_ID=xxxxxxxx
GOTRUE_EXTERNAL_GOOGLE_SECRET=yyyyyyyy
GOTRUE_EXTERNAL_GOOGLE_REDIRECT_URI=https://yourdomain.zeabur.app/auth/v1/callback

Apple OAuth 支援

前往 auth 服務環境變數,添加:

GOTRUE_EXTERNAL_APPLE_ENABLED=true
GOTRUE_EXTERNAL_APPLE_CLIENT_ID=xxxxxxxx
GOTRUE_EXTERNAL_APPLE_SECRET=yyyyyyyy
GOTRUE_EXTERNAL_APPLE_REDIRECT_URI=https://yourdomain.zeabur.app/auth/v1/callback

Studio SQL Assistant (AI)

前往 studio 服務環境變數,添加:

OPENAI_API_KEY=your-openai-api-key

📚 相關資源

❓ 故障排除

無法登入 Studio

  1. 確認使用的是 Kong 服務的 Instructions 中顯示的密碼
  2. 檢查 Kong 服務狀態是否為 RUNNING
  3. 重啟 Kong 服務

API 無法訪問

  1. 確認已更新 Kong 服務的 JWT_SECRET, ANON_KEY, SERVICE_ROLE_KEY
  2. 確認 JWT_SECRET 與 JWT Generator 中使用的一致
  3. 檢查 Kong 服務日誌

需要協助? 請造訪 Supabase DiscordZeabur Discord 社群