注册前的环境检查

搭建前确认:

  1. GitHub 账户:模板通过 GitHub Repo 邀请交付
  2. Vercel / Cloudflare Pages 账户:部署
  3. Supabase / Neon / Turso 账户:数据库
  4. Stripe 账户:海外公司主体(LLC / OÜ / HK Ltd)
  5. Paddle 账户(可选):作为 MoR 替代 Stripe
  6. Resend / Postmark 账户:邮件
  7. 域名:建议 .com / .ai / .so

整个搭建过程会持续访问 Vercel / Cloudflare / Stripe / Supabase / GitHub Actions 等海外服务,网络稳定性直接影响节奏。建议常备一条 独立开发者出海稳定专线,避免部署关键节点掉线。

5 个主流模板对比

模板价格出海支持主要特点适合人
Supastarter$49+/月或买断⭐⭐⭐⭐⭐i18n + 多币种 + 多 tenant + RBACB2B 团队 / 复杂需求
Makerkit$349-499⭐⭐⭐⭐⭐Supabase 原生 + i18n + 多币种中等复杂 SaaS
Shipfast$199⭐⭐⭐极速部署 + 单语言 + Stripe赶时间 / 单语言场景
Ixartz SaaS Boilerplate免费⭐⭐⭐⭐Clerk + Stripe + Drizzle + i18n开源 / 自己改
Next.js 官方 saas-starter免费⭐⭐极简 / 需自己加 i18n学习用

Next.js 出海 SaaS 模板:以 Supastarter / Makerkit 为例:按这个顺序操作

第 1 步:选模板 + 付款

第 2 步:Clone 模板 + 安装依赖

git clone https://github.com/yourorg/your-saas.git
cd your-saas
pnpm install
pnpm dev

打开 localhost:3000 看默认页面跑起来。

第 3 步:环境变量配置

复制 .env.example.env.local,填:

# Database
DATABASE_URL=postgresql://...
SUPABASE_URL=https://xxx.supabase.co
SUPABASE_ANON_KEY=eyJxxx

# Auth
NEXTAUTH_SECRET=...
GOOGLE_CLIENT_ID=...
GOOGLE_CLIENT_SECRET=...

# Stripe
STRIPE_SECRET_KEY=sk_live_xxx
STRIPE_PUBLISHABLE_KEY=pk_live_xxx
STRIPE_WEBHOOK_SECRET=whsec_xxx

# Email
RESEND_API_KEY=re_xxx

# OpenAI / Anthropic(如有 AI 功能)
OPENAI_API_KEY=sk-xxx
ANTHROPIC_API_KEY=sk-ant-xxx

第 4 步:Stripe Products 设置

在 Stripe Dashboard 创建:

  • 产品(Product):你的 SaaS 名
  • 价格(Price):USD / EUR / CNY 多币种价格
    • Pro Monthly USD $19
    • Pro Monthly EUR €17
    • Pro Annual USD $190
  • Webhook 端点:填你部署后的 /api/webhooks/stripe

把 Price ID 填到模板的 config/billing.ts

第 5 步:i18n 多语言

Supastarter / Makerkit 用 next-intl,结构:

messages/
├── en.json
├── zh-CN.json
├── es.json
└── fr.json

修改翻译文件,刷新页面切换语言。Crowdin / Lokalise 接入做多人协作翻译。

第 6 步:部署到 Vercel

vercel
vercel --prod

或在 Vercel Dashboard 连接 GitHub 仓库自动部署。

第 7 步:自定义域名 + DNS

  • 在 Cloudflare 买域名(约 $10-15/年)
  • Vercel → Settings → Domains → 添加域名
  • Cloudflare DNS 加 A 记录指向 Vercel

第 8 步:测试支付链路

  • Stripe Test Mode → 用测试卡 4242 4242 4242 4242 测试订阅
  • 触发 Webhook → 数据库写入用户订阅记录
  • 用户 Dashboard 显示订阅状态

测试通过后切到 Live Mode 接受真实付款。

常见失败原因

  • Webhook 没配置正确:导致用户付款成功但数据库不更新订阅
  • 环境变量名称不一致:导致部署后 Auth 失败
  • 多币种 Price ID 漏配:用户切语言后看到错误价格
  • 没启用 RLS(Row Level Security):Supabase 数据被任意用户访问
  • 测试模式 / Live 模式 Key 混用:Stripe 拒绝处理

安全加固

  • 启用 Vercel + Stripe + Supabase 的 2FA
  • 配置 Sentry / Posthog 监控错误和用户行为
  • 配置 Cloudflare WAF 防恶意流量
  • 跑 Stripe Radar 防欺诈
  • 每周做一次完整 backup

跨地区访问

部署完成后日常运维仍需稳定访问 Stripe Dashboard / Vercel / Cloudflare / Supabase。游民期间登录这些服务对网络稳定性要求高,建议常备一条覆盖 GitHub Actions / Cloudflare 的稳定线路。

相关阅读