Tools
Next.js SaaS 中国化适配指南
Next.js SaaS 中国化适配指南
Next-forge 是基于海外生态构建的(Clerk + Stripe + Vercel)。如果你想用这套架构服务中国用户,必须进行“本地化剪裁”。
直接使用原版会遇到两个大坑:访问速度 和 合规性。
本文提供一套经过验证的“中国特供版”替换方案。
架构替换总览
| 模块 | 原版方案 (Next-forge) | 中国化平替方案 | 核心理由 |
|---|---|---|---|
| 认证 (Auth) | Clerk | Logto (自托管) | Clerk 国内慢且无微信登录;Logto 支持微信且支持自托管 |
| 部署 (Deploy) | Vercel | Zeabur (香港/国内) | Vercel 免费版在国内被墙/慢;Zeabur 香港节点秒开 |
| 支付 (Pay) | Stripe | 微信 / 支付宝 | Stripe 不支持国内主流支付方式 |
| 邮件 (Mail) | Resend | 阿里云邮件 / Resend SMTP | 提高国内送达率 |
| 分析 (Analytics) | PostHog Cloud / GA | PostHog 自建 / 百度统计 / 神策 | 避免数据出境风险 |
| 文档 (Docs) | Mintlify | Fumadocs | 访问速度 + 资产私有化 |
1. 认证层:Clerk → Logto
这是最关键的一步。
- 现状:Clerk 的 JS SDK 托管在海外 CDN,国内加载极慢甚至超时,直接导致用户无法登录。且不支持微信登录。
- 方案:使用 Logto。
- 它是一个开源的 Auth0 替代品,支持微信登录。
- 通过 Zeabur 一键部署在香港节点,延迟 < 50ms。
- 微信登录优势:支持“统一认证中心”模式,一个微信应用服务所有子产品。
👉 详细指南:Logto: 开源、支持微信登录的 Auth0 替代方案
2. 部署层:Vercel → Zeabur
- 现状:Vercel 的 Edge Network 虽然全球分布,但免费版在中国大陆没有节点,且
*.vercel.app域名常年被污染。 - 方案:使用 Zeabur。
- 国人友好:支持支付宝付款,文档中文。
- 线路优化:香港/东京节点针对大陆优化,速度极快。
- 全栈部署:不仅能部署 Next.js,还能一键部署 PostgreSQL, Redis, Logto, MinIO 等 Docker 服务。
3. 支付层:Stripe → 微信/支付宝
- 现状:Stripe 无法直接开通(需要香港/美国公司)。
- 方案:
- 个人开发者:
- 面包多/爱发电:门槛最低,但体验割裂。
- XorPay / PayJS / Zpay:第三方免签/签约支付,有跑路风险。
- 正规军:
- 直接申请 微信支付 / 支付宝 官方接口(需要个体户或公司)。
- 技术实现:需要自建一个简单的
orders表和 Webhook 处理逻辑。
- 个人开发者:
4. 数据库:Neon → Zeabur PG / 阿里云
- 现状:Neon 是 Serverless PG,节点通常在美国/欧洲。
- 方案:
- Zeabur:部署 Logto 时通常会送一个 PostgreSQL,你可以直接用这个库,或者再开一个服务。内网连接速度极快。
- 阿里云/腾讯云 RDS:最稳妥,但价格稍贵。
5. 邮件服务:Resend → 阿里云邮件推送
- 现状:Resend 的发信 IP 在国内有时会被列入黑名单,导致验证码收不到。
- 方案:
- 阿里云邮件推送 (DirectMail):每天免费 200 封,送达率极高。
- 配置:在 Logto 或 NextAuth 中配置 SMTP 连接即可。
6. 文档系统:Mintlify → Fumadocs
- 现状:Mintlify 服务器在海外,国内访问偶尔抽风。且它是闭源 SaaS,文档数据不在你手里。
- 方案:使用 Fumadocs。
- 它是基于 Next.js 的文档框架,完全开源。
- 可以部署在 Zeabur 上,与你的主站同源。
- 高度可定制(MDX, Tailwind)。
总结
中国化适配的核心思路是:保持 Next.js + Turborepo 的先进开发体验,但把“云服务”替换为“自托管”或“国内云厂商”。
虽然这比直接用 SaaS 麻烦一点(需要多维护几个 Docker 容器),但换来的是极致的访问速度和完全的数据掌控。
附录:Zeabur 对 Turborepo 的支持
Zeabur 对 Turborepo(及 pnpm Workspaces)有着非常完善的原生支持,体验接近“零配置”。
1. 自动识别
Zeabur 会自动检测 pnpm-workspace.yaml。你只需要告诉它“在这个大仓库里,具体要部署哪一个子项目”。
2. 部署配置 (推荐)
最快的方式是使用 环境变量 指定目录:
- Key:
ZBPACK_APP_DIR - Value:
apps/web(或你的具体项目路径)
配置后,Zeabur 会自动进入该目录构建,同时保留对根目录 node_modules 的访问权限。
3. 多应用部署
如果需要部署多个 App(如 apps/web 和 apps/docs),只需多次添加同一个 GitHub 仓库,并分别设置不同的 ZBPACK_APP_DIR 即可。