跳到主要内容
版本:Current

环境变量

Backend (backend/.env)

变量必填默认说明
PORT4000HTTP 端口
FRONTEND_URLhttp://localhost:3000CORS + Socket Origin
REDIS_URLRedis 连接串
JWT_SECRET与 Frontend 相同
DEFAULT_ROOM_IDmain_room房间 ID
DATABASE_URL推荐PostgreSQL

Frontend (frontend/.env.local)

变量必填说明
NEXT_PUBLIC_API_BASEBackend URL
NEXTAUTH_URLFrontend 公网 URL
NEXTAUTH_SECRETNextAuth 加密
JWT_SECRET与 Backend 相同
STAFF_ADMIN_PASSWORD国内*Admin /staff-login 密码
STAFF_DISPLAY_PASSWORD国内*Display /staff-login 密码
NEXT_PUBLIC_THEMEspring(默认)或 mario
GOOGLE_CLIENT_ID美国*Google OAuth
GOOGLE_CLIENT_SECRET美国*Google OAuth
AZURE_AD_CLIENT_ID美国Azure AD(可选)
AZURE_AD_CLIENT_SECRET美国Azure AD
AZURE_AD_TENANT_ID美国Azure AD
DATABASE_URL推荐Prisma migrate

* 国内场景STAFF_*_PASSWORD 必填;OAuth 可选。
* 美国场景GOOGLE_*(及/或 AZURE_AD_*)必填;STAFF_* 可不配。

详见 认证场景

角色白名单(代码)

frontend/src/lib/auth.ts

const ADMIN_EMAILS = ['bucssatech@gmail.com'];
const DISPLAY_EMAILS = ['jijicandlehouse@gmail.com', '...'];

修改后需重新 deploy Frontend。

生产检查清单

  • JWT_SECRET 强随机且前后端一致
  • STAFF_*_PASSWORD 足够强,勿提交 git
  • NEXTAUTH_URL = 用户访问域名
  • OAuth 回调 URL 已更新(若启用)
  • NEXT_PUBLIC_THEME 按活动设定

示例 .env.local(国内)

NEXT_PUBLIC_API_BASE=https://api.example.com
NEXTAUTH_URL=https://lottery.example.com
NEXTAUTH_SECRET=xxx
JWT_SECRET=xxx
STAFF_ADMIN_PASSWORD=xxx
STAFF_DISPLAY_PASSWORD=xxx
NEXT_PUBLIC_THEME=mario
DATABASE_URL=postgresql://...

示例 .env.local(美国)

NEXT_PUBLIC_API_BASE=https://api.example.com
NEXTAUTH_URL=https://lottery.example.com
NEXTAUTH_SECRET=xxx
JWT_SECRET=xxx
GOOGLE_CLIENT_ID=xxx
GOOGLE_CLIENT_SECRET=xxx
# AZURE_AD_CLIENT_ID=...
NEXT_PUBLIC_THEME=spring
DATABASE_URL=postgresql://...