部署

部署

生成器会根据 --target 只保留一个平台的配置。先确认 nextdevtpl.generated.json 中的 target,完成生产迁移和环境变量配置,再执行 对应流程。

通用发布门禁

pnpm install --frozen-lockfile
pnpm lint
pnpm typecheck
pnpm test:run
pnpm build

生产 URL 至少同步到 NEXT_PUBLIC_APP_URLBETTER_AUTH_URL。OAuth 回调、支付 webhook、Inngest、对象存储 CORS 等外部后台也要使用正式域名。

Server

要求 Node.js 24、pnpm 10、PostgreSQL 和 systemd。

  1. 填写 .env.production,把它留在服务器安全目录。
  2. 生成并审核首次迁移:pnpm db:generate:init
  3. 加载生产环境后执行 pnpm deploy:server:build
  4. 上传 .release/,按实际用户和路径调整 deploy/server/nextdevtpl.service
  5. 通过 Nginx、Caddy 等反向代理提供 TLS,并转发原始协议和主机头。

详细文件说明见 deploy/server/README.md

Docker Compose

Compose 包含 PostgreSQL、一次性迁移服务和应用服务,数据库使用 named volume。

docker compose --env-file .env.production up -d --build

至少修改 POSTGRES_PASSWORDBETTER_AUTH_SECRET 和站点 URL。migrate 成功后 应用才启动;升级前先备份 named volume 或外部数据库。详见 deploy/docker/README.md

Vercel

  1. 把项目导入 Vercel,使用 Node.js 24 和 pnpm。
  2. 在各环境填写生成后的 .env.example 所需变量。
  3. 在本机或单实例发布任务运行 pnpm db:migrate
  4. 发布应用,配置 OAuth、支付和 Inngest 回调。
  5. 用正式域名做健康检查。

不要把迁移放进 Vercel buildCommand,并发构建可能重复执行迁移。Vercel 目标 适合 Neon、S3 Compatible、Upstash 和 Inngest,实际组合以生成清单为准。

Cloudflare Workers

Cloudflare 目标使用 OpenNext。生成器会输出 open-next.config.ts、Worker 入口、 wrangler.jsonccf:* 脚本,并按选择加入 R2、AI、Email、Workflow 和 Rate Limiting Binding。

  1. 创建并绑定实际资源,检查 wrangler.jsonc 中的服务名和 bucket 配置。
  2. wrangler secret put 写入 DATABASE_URL、认证密钥和供应商凭证。
  3. 生成 Worker 类型并构建:
pnpm cf:check
pnpm cf:types
pnpm cf:build
pnpm exec wrangler deploy --dry-run --minify
  1. 部署:
pnpm cf:deploy

Workers 首版数据库使用 Neon HTTP 或 Hyperdrive 连接 PostgreSQL。D1 不在 3.x 支持范围内。Worker 包使用 console logger,并移除 Pino 的 Node 文件写入依赖。

上线检查

四种目标都提供 /api/health

pnpm deploy:check -- https://your-domain.example/api/health

返回 HTTP 200 且 statushealthy 后,再验证登录、数据库和所选支付、邮件、 存储、AI、任务、限流流程。健康接口不会返回密钥原值。

本页目录