部署到 Vercel
导入仓库、接入生产服务,并通过 HTTPS 访问你的应用。
从 Git 部署 Node 应用(apps/web),接入生产 Postgres 和你已启用的服务。
开始前准备
准备本地可运行应用、自己的私有 Git 仓库、Vercel 账号和独立生产 Postgres,以及真实邮件和其他已启用凭据。可以先用生成域名,再设置自己的域名和最终回调。
1. 导入仓库
创建 Vercel 项目,导入完整 monorepo,设置 Framework Preset = Next.js、Root Directory = apps/web、Node.js = 22.x。
让构建能访问共享包和根锁文件。控制台提供访问 Root Directory 外文件选项时,为 workspace 依赖开启它。沿用应用配置,不使用官网静态导出配置。
2. 填写生产环境变量
以 apps/web/.env.example 为清单,在 Vercel Environment Variables 配置:
NEXT_PUBLIC_SITE_URL:当前环境的 HTTPS origin。DATABASE_URL:生产 Postgres;按服务商额度调整DATABASE_POOL_MAX。BETTER_AUTH_SECRET、NEWSLETTER_TOKEN_SECRET:强度足够、稳定的生产签名密钥。- 真实 邮件,
MAIL_PROVIDER=resend或cloudflare。 - 已启用 OAuth、验证码、支付与 S3 上传的凭据/产品配置。
Preview 使用独立数据和凭据。保持 BETTER_AUTH_ENABLE_TEST_UTILS=false,不整份导入本地 seed 密码与 localhost/测试设置。
3. 执行数据库迁移
构建不会迁移数据。在独立受控发布 checkout,将 apps/web/.env.local 配为目标生产库,核实连接、备份,再运行:
pnpm db:status
pnpm db:migrate脚本读取该文件,不是 Vercel 控制台变量。与日常开发 checkout 分开。已有自定义数据需要 增量升级,生产不运行开发 seed。
4. 部署并设置域名
部署后在项目设置添加域名,填写 Vercel 提供的 DNS 记录,等待 HTTPS 就绪。origin 变化时同步公开站点 URL、OAuth callback/信任 origin 和支付 Webhook URL,再重新部署。NEXT_PUBLIC_* 在构建时写入。
确认结果
- HTTPS 首页与两种语言可访问。
- 当前域名上真实登录/OTP、退出和管理员权限正常。
- 联系邮件、启用的上传与沙盒 Webhook 完成流程。
- 保存记录在目标数据库中持久存在。
真实流量或正式支付前,完成 上线检查清单。
常见问题
| 问题 | 处理方式 |
|---|---|
| 找不到共享包 | 导入完整 workspace,检查 root 外访问与根锁文件 |
| 缺少生产凭据 | 检查部署环境范围,修改后重新部署 |
| 回调域名错误 | 对齐构建 origin、服务商 callback 和信任 origin |
| 数据表缺失 | 检查迁移与部署是否指向同一数据库 |
| API 超时 | 检查 Vercel 计划,应用 maxDuration=300 仍受宿主限制 |