Skip to main content
Version: Current

生产部署

主席选举的生产进程 不经过主服务器 Nginx。无仓库内官方流水线。按通用 Next.js + Neon 清单执行。本机拓扑见 基础设施概览。

检查清单​

  • DATABASE_URL、AUTH_SECRET、AUTH_GOOGLE_ID、AUTH_GOOGLE_SECRET 已在托管平台配置。

  • 不要设置 AUTH_ALLOW_EMPTY_USER_TABLE=1。

  • public.users 至少有一名 admin,邮箱与将用于登录的 Google 账号一致。

  • 生产库已按顺序执行需要的 001–007,并备份 ballots / ballot_allocations / campaign_candidate_options。

  • Google OAuth 授权 JavaScript 来源与重定向 URI 包含生产域名:

    https://<部署域名>/api/auth/callback/google
  • 若平台区分 AUTH_URL / 信任主机,按 Auth.js 部署说明 配置,避免回调跑到 localhost。

构建与启动(Node 主机)​

npm ci
npm run build
npm run start

Vercel:连接 Git 仓库后配置同样环境变量即可;本仓库没有额外 vercel.json。

发布后冒烟​

用 admin、moderator、voter 各测一次:登录、建或加入竞选、分票、结束投票、打开结果。确认 admin 无法投票。