
這是一個完整的 Supabase 後端服務堆疊,包含 Authentication、Database、Storage、Realtime 等所有核心功能。
預計部署時間: < 5 分鐘 + 10 分鐘安全配置
⚠️ 重要: 初始部署使用 demo 密鑰,不適合生產環境。請務必完成下方的「步驟 2: 安全配置」。
部署完成後,請立即更新以下安全密鑰:
| 變數名稱 | 類型 | 必填/選填 | 說明 | 如何取得 |
|---|---|---|---|---|
| 基礎配置 | ||||
| POSTGRES_PASSWORD | PASSWORD | 必填 | PostgreSQL 資料庫密碼 | openssl rand -base64 32 |
| JWT 認證 | ||||
| JWT_SECRET | PASSWORD | 必填 | JWT 簽章密鑰 (32字元) | openssl rand -base64 32 | tr -dc 'A-Za-z0-9' | head -c32 |
| ANON_KEY | PASSWORD | 必填 | 匿名存取金鑰 (前端) | 使用 JWT Generator 產生 anon 角色 JWT |
| SERVICE_ROLE_KEY | PASSWORD | 必填 | 服務角色金鑰 (後端) | 使用 JWT Generator 產生 service_role 角色 JWT |
| Realtime | ||||
| SECRET_KEY_BASE | PASSWORD | 必填 | Realtime 加密密鑰 (64字元) | openssl rand -base64 64 |
| 資料庫加密 | ||||
| VAULT_ENC_KEY | PASSWORD | 必填 | Vault 加密金鑰 (32字元) | openssl rand -base64 48 | tr -dc 'A-Za-z0-9' | head -c32 |
| PG_META_CRYPTO_KEY | PASSWORD | 必填 | Meta 加密金鑰 (32字元) | 可與 VAULT_ENC_KEY 相同 |
| 連接池 | ||||
| POOLER_TENANT_ID | STRING | 必填 | 連接池租戶 ID (UUID) | python3 -c "import uuid; print(str(uuid.uuid4()))" |
| SMTP (選填) | ||||
| SMTP_HOST | STRING | 選填 | SMTP 伺服器 | 例: smtp.gmail.com |
| SMTP_PORT | STRING | 選填 | SMTP 埠號 | 587 (TLS) / 465 (SSL) |
| SMTP_USER | STRING | 選填 | SMTP 帳號 | 您的 email |
| SMTP_PASS | PASSWORD | 選填 | SMTP 密碼 | Gmail 需使用應用程式密碼 |
| SMTP_ADMIN_EMAIL | STRING | 選填 | 管理員 email | 接收通知用 |
| SMTP_SENDER_NAME | STRING | 選填 | 寄件者名稱 | 例: Supabase |
在本機終端執行以下指令產生密鑰:
# 1. PostgreSQL 密碼 (任意強密碼)
openssl rand -base64 32
# 2. JWT Secret (恰好 32 字元,英數字)
# ⚠️ 不要超過 40 字元,否則可能導致 Realtime health check 失敗
openssl rand -base64 32 | tr -dc 'A-Za-z0-9' | head -c32
# 3. Secret Key Base (至少 64 字元)
openssl rand -base64 64
# 4. 加密金鑰 (恰好 32 字元,英數字,用於 VAULT_ENC_KEY 和 PG_META_CRYPTO_KEY)
openssl rand -base64 48 | tr -dc 'A-Za-z0-9' | head -c32
# 5. Pooler Tenant ID (UUID 格式)
python3 -c "import uuid; print(str(uuid.uuid4()))"
anon 和 service_role 金鑰前往 Zeabur Dashboard → 選擇 Kong 服務 → 環境變數 → 更新以下變數:
# 資料庫
POSTGRES_PASSWORD=[步驟 2.1 產生的 PostgreSQL 密碼]
# JWT 認證
JWT_SECRET=[步驟 2.1 產生的 32 字元密鑰]
ANON_KEY=[步驟 2.2 產生的 anon JWT]
SERVICE_ROLE_KEY=[步驟 2.2 產生的 service_role JWT]
# Realtime
SECRET_KEY_BASE=[步驟 2.1 產生的 64 字元密鑰]
# 資料庫加密
VAULT_ENC_KEY=[步驟 2.1 產生的 32 字元加密金鑰]
PG_META_CRYPTO_KEY=[步驟 2.1 產生的 32 字元加密金鑰 (可與 VAULT_ENC_KEY 相同)]
# 連接池
POOLER_TENANT_ID=[步驟 2.1 產生的 UUID]
# SMTP (選填,如不需要 email 功能可不填)
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=your-email@gmail.com
SMTP_PASS=your-app-password
SMTP_ADMIN_EMAIL=admin@your-domain.com
SMTP_SENDER_NAME=Supabase
更新環境變數後,重啟 Kong 服務以套用新配置。
此模板包含 12 個服務:
⚠️ 重要:
完成安全配置後,您可以使用以下方式連接資料庫:
postgres://postgres:[POSTGRES_PASSWORD]@[POOLER_HOST]:6543/postgres
postgres://postgres:[POSTGRES_PASSWORD]@[POSTGRES_HOST]:5432/postgres
需要協助? 請造訪 Supabase Discord 社群