跳轉到內容
supastack
瀏覽檔案
WebNext.js

For AI agents: fetch the complete documentation index at /llms.txt, the full documentation corpus at /llms-full.txt, the agent skill at /skill.md, or this page as Markdown at /zh-tw/docs/web/provider-keys.md (or send Accept: text/markdown).

收集其餘提供商金鑰

剩下這些服務的短演練:AI 提供商、Trigger.dev、S3 儲存、Sentry 或 PostHog、Turnstile,以及你的域名。

詢問本指南
開啟方式

如何使用本頁

下面每一節都是一套完整的設定演練:建賬戶、找金鑰、設 env 名、驗證。只取你產品要上線的服務對應的節——沒有 AI 功能的站點永遠不需要第一節;這裡的每一節都跳過,套件也照常執行。

與其他地方相同的金鑰規則:API 金鑰和 webhook 金鑰只在服務端;只有帶 NEXT_PUBLIC_/EXPO_PUBLIC_ 字首的值能到客戶端;生產金鑰放在託管方的金鑰儲存中;開發伺服器只在重啟時重新讀取 env。

AI 提供商金鑰

套件的 AI_PROVIDER 接受 openai、anthropic、openai-compatible 和 openrouter——外加預設的本地替身 fake。選一個;提供商金鑰是唯一要開的賬戶,因為模型 ID 和定價來自套件的資料庫目錄,而不是 env 變數。

OpenAI:platform.openai.com → API keys → Create new secret key → 複製 sk-… → OPENAI_API_KEY。Anthropic:console.anthropic.com → API Keys → Create Key → sk-ant-… → ANTHROPIC_API_KEY。兩家都按 token 計費——幾美元額度就夠開發用了。

OpenRouter 用一把金鑰路由目錄裡的所有模型:openrouter.ai → Keys → Create Key → sk-or-… → AI_PROVIDER=openrouter 加 OPENROUTER_API_KEY;可選的 OPENROUTER_APP_NAME/OPENROUTER_SITE_URL 傳送歸屬標頭。openai-compatible 覆蓋任何 OpenAI 形態的端點:OPENAI_COMPATIBLE_API_KEY 加 OPENAI_COMPATIBLE_BASE_URL。

驗證:重啟,跑一個 AI 任務,應得到真實模型回答而不是確定性的假響應。啟動報錯點名金鑰,表示提供商開關開著卻沒有金鑰。真實回答還需要下面 Trigger.dev 一節的 JOB_PROVIDER=trigger,以及套件目錄中啟用的一個模型——設定 AI 講了那部分配置。

# apps/web/.env.local — pick ONE provider
AI_PROVIDER=openai
OPENAI_API_KEY=sk-…

# or AI_PROVIDER=anthropic
# ANTHROPIC_API_KEY=sk-ant-…

# or AI_PROVIDER=openrouter
# OPENROUTER_API_KEY=sk-or-…

# or AI_PROVIDER=openai-compatible
# OPENAI_COMPATIBLE_API_KEY=…
# OPENAI_COMPATIBLE_BASE_URL=https://your-endpoint/v1

Trigger.dev

除非產品需要真實的後臺任務執行,否則跳過——JOB_PROVIDER=local 把任務排進記憶體佇列而不執行,開發時這就夠了。

1. 開啟 app.trigger.dev → 註冊 → 建立專案。

2. 複製兩個值:專案 settings 或儀錶板 URL 裡的專案引用 proj_… → TRIGGER_PROJECT_REF,以及專案 API keys 頁上的金鑰(開發環境是 tr_dev_…,生產是 tr_prod_…)→ TRIGGER_SECRET_KEY。兩者都僅限服務端。

3. 套件的任務已在 apps/web/trigger 中,apps/web/trigger.config.ts 讀取 TRIGGER_PROJECT_REF。在 apps/web 下執行 npx trigger.dev@latest dev——它把任務註冊到你的專案,並用開發金鑰在本地執行。

驗證:dev 命令會記錄註冊的任務;在應用中排一個任務,看它在儀錶板 Runs 列表裡跑起來。已部署環境執行 corepack pnpm --filter @supastack/web trigger:deploy 來發布任務集。

# apps/web/.env.local
JOB_PROVIDER=trigger
TRIGGER_PROJECT_REF=proj_…
TRIGGER_SECRET_KEY=tr_dev_…   # tr_prod_… in production

# run the worker alongside the app, from apps/web:
cd apps/web
npx trigger.dev@latest dev

S3 相容儲存(Cloudflare R2)

除非產品要存檔案,否則跳過——STORAGE_PROVIDER=memory 把上傳留在程式內,供開發使用。

任何 S3 相容桶都行;Cloudflare R2 是對免費檔友好的選擇。1. 開啟 dash.cloudflare.com → R2 Object Storage → Create bucket,命名並保留預設位置提示。

2. 回到 R2 概覽,開啟 Manage R2 API Tokens → Create API token → 許可權選 Object Read & Write,範圍限定到那個桶 → Create。複製 Access Key ID、Secret Access Key,以及顯示的 S3 端點——https://<account-id>.r2.cloudflarestorage.com。

3. 設定下面的 env 名。STORAGE_REGION=auto 是 R2 慣例——套件預設 us-east-1,R2 也接受。STORAGE_FORCE_PATH_STYLE 對自定義端點本來就預設開啟,正是 R2 要的。對外提供公開檔案還需要 STORAGE_PUBLIC_BASE_URL 或 CDN 接線;私有檔案不需要更多。

驗證:重啟並通過應用上傳——物件會出現在 R2 桶瀏覽器裡。簽名或 403 錯誤表示令牌沒有該桶的物件讀寫許可權;建一個範圍正確的新令牌。

# apps/web/.env.local
STORAGE_PROVIDER=s3
STORAGE_ENDPOINT=https://<account-id>.r2.cloudflarestorage.com
STORAGE_REGION=auto
STORAGE_BUCKET=your-bucket
STORAGE_ACCESS_KEY_ID=…          # server-only
STORAGE_SECRET_ACCESS_KEY=…      # server-only
# STORAGE_PUBLIC_BASE_URL=       # optional public-URL base

Sentry 或 PostHog(可選)

完全可選:所有可觀測性值預設不設定,套件沒有它們也執行良好——等你想在生產裡要錯誤報告和分析時再配。

錯誤用 Sentry:sentry.io → 建專案 → 選 Next.js 平臺 → 設定頁顯示 DSN https://…@….ingest.sentry.io/… → SENTRY_DSN。之後異常會帶著 correlation-id 標籤到達 Sentry;免費檔夠起步。

產品分析改用 PostHog:posthog.com → 建專案 → 複製專案 API 金鑰 phc_… → NEXT_PUBLIC_POSTHOG_KEY 加 NEXT_PUBLIC_POSTHOG_HOST(https://us.i.posthog.com,或你的 EU 主機)。這兩個是刻意公開的瀏覽器值;SENTRY_DSN 留在服務端。ALERT_WEBHOOK_URL 可選地把失敗告警發到 Slack 相容端點。

驗證:重啟,製造一個測試異常(或回放 Sentry 的示例事件),確認它落到專案的 Issues 列表裡。

# apps/web/.env.local — all optional
SENTRY_DSN=https://…@….ingest.sentry.io/…

NEXT_PUBLIC_POSTHOG_KEY=phc_…
NEXT_PUBLIC_POSTHOG_HOST=https://us.i.posthog.com

# ALERT_WEBHOOK_URL=https://hooks.slack.com/services/…

Cloudflare Turnstile

給公開表單和憑據端點的機器人防護——CAPTCHA_PROVIDER=off 是預設,所以在對陌生人開放註冊前加上它。免費。

1. 開啟 dash.cloudflare.com → Turnstile → Add widget → 命名並列出主機名:開發用 localhost 加你的真實域名 → Create。

2. 複製兩個值:Site Key——本來就公開,渲染在小元件裡 → NEXT_PUBLIC_TURNSTILE_SITE_KEY——和伺服器用來校驗的 Secret Key → TURNSTILE_SECRET_KEY。

3. CAPTCHA_PROVIDER=turnstile 開啟它;啟動會失敗並點名缺了哪個金鑰。驗證碼指南列出了小元件具體保護哪些面。

驗證:開啟 /auth 或聯絡表單——小元件渲染出來;未完成挑戰的提交被拒絕。小元件一直不載入,說明你瀏覽的主機名不在小元件名單裡。

# apps/web/.env.local
CAPTCHA_PROVIDER=turnstile
NEXT_PUBLIC_TURNSTILE_SITE_KEY=0x…   # public by design
TURNSTILE_SECRET_KEY=0x…             # server-only

你自己的域名

在任意註冊商買一次就行——Cloudflare Registrar、Porkbun、Namecheap 都可以。這裡沒有要複製進 env 的東西;域名出現在你一路配置的 Services ID、Resend DNS、Turnstile 主機名和 OAuth return URL 裡。

指向應用的兩種方式:Cloud Run 用部署指南里的域名對映——控制台點幾下,加上 Google 列出的 DNS 記錄。或者把 DNS 遷到 Cloudflare nameserver(註冊商改兩條記錄)——可選,但也是把 R2 公開桶和 Turnstile 主機名放到一處管理的整潔辦法。

如果你想繼續完成設定,可以閱讀《設定資料庫》。

常見問題

14 個問題

supastack 是什麼?

supastack 是用於構建 AI 驅動 SaaS 產品的模組化基礎。它把通用基礎設施整合在一起,讓你專注於產品專屬的功能。

它支援 Web 和移動端嗎?

支援。supastack 包含 Next.js 與 Expo 應用,作為 Web 與移動端體驗的起點。

包含哪些認證方式?

Better Auth 覆蓋郵箱/密碼、OTP 與社交登入。個人工作區隨賬戶一起開通,產品記錄從第一天起就有邊界。

AI 是如何支援的?

supastack 包含可配置的多供應商 AI、用量追蹤、預算,以及加密的自帶金鑰(BYOK)支援。

訂閱如何處理?

對於基於該套件構建的產品,Stripe 計費、訂閱與許可權構成付費訪問的基礎。供應商金鑰僅存於服務端。

我的產品專屬程式碼放在哪裡?

產品專屬功能保留在獨立的程式碼庫中,產品通過配置接入 supastack 的基礎模組。

supastack 如何定價?

套件為一次性購買、終身更新:單棧 249 美元(Next.js(Web)、Expo(iOS 與 Android)、Tauri(macOS 與 Windows 桌面)倉庫任選其一),雙棧 398 美元(任選兩個倉庫),或完整套裝 399 美元(全部三個倉庫與完整 monorepo),每個額外開發者席位 75 美元。套件本身沒有訂閱。本站結賬後通過郵件傳送許可證金鑰,倉庫訪問通過 GitHub 邀請授予。

工作區如何界定我的資料?

使用者記錄按 workspaceId 劃定邊界。身份、許可權、AI 用量、計費事件與審計條目都留在個人工作區邊界內。

後臺任務如何工作?

Trigger.dev 是明確的任務執行時。JobRunner 契約只承諾 enqueue、status 與 cancel——工作流語義保持 Trigger.dev 專有且顯式。

郵件與營銷觸達有何不同?

事務性郵件覆蓋產品工作流,如任務完成通知。冷觸達與營銷活動屬於產品自身的範疇,不在本套件的郵件模組內。

移動端購買如何運作?

移動端已支援 RevenueCat 原生購買和恢復購買,訪問許可權由服務端驗證。釋出前需配置商店賬戶並完成裝置測試。Web 計費保持獨立。

AI 供應商金鑰存放在哪裡?

自帶金鑰憑證經過加密且僅存於服務端。金鑰在日誌中被脫敏;用量與預算在工作區級別保持可見。

結賬支援哪些付款方式?

Stripe 託管結賬接受銀行卡,在 Stripe 賬戶啟用後還可提供支付寶與微信支付——方便中國買家。錢包授權為非同步確認,付款完成後許可證頁面會立即更新。

我能申請退款嗎?

獲得程式碼倉庫訪問許可權後,supastack 將永久歸你所有,因此無法退款。但請放心,你將獲得包含終身更新的完整原始碼,可為你自己或客戶構建併發布無限數量的產品。你只需注意不能轉賣程式碼,也不能將倉庫作為啟動模板二次分發。唯一的例外是上線返現——上線一款用 supastack 打造的真實產品並公開分享,在購買後 60 天內達到 5,000 次自然瀏覽或 50 個自然按讚,即可退還已付款項的 50%;詳見條款。

TW
主題