3.2 KiB
yedir-ai 部署指南
本文档用于生产或准生产环境部署。所有真实密钥只应配置在运行环境中,不要提交到 Git。
运行环境
- Node.js 20
- pnpm 9.12.3
- Postgres
- 可选 Redis
- Vercel Blob 或 S3-compatible 对象存储
- 至少一个可用 AI Provider,或在后台设置中配置供应商
基础步骤
pnpm install --frozen-lockfile
pnpm db:migrate
pnpm build
pnpm start
pnpm build 只执行 Next.js 生产构建,不会隐式连接数据库。需要在单机部署脚本中把迁移和构建串起来时,可使用:
pnpm build:with-migrate
本地开发:
AUTH_TRUST_HOST=true PORT=3001 pnpm dev
环境变量分组
Core / Auth
必须配置 AUTH_SECRET 和生产域名 AUTH_URL。只有在受信反向代理后部署,并确认 Host 头不会被用户伪造时,才允许设置 AUTH_TRUST_HOST=true。
Google、钉钉、邮箱验证等登录能力可以通过后台设置和环境变量组合启用。管理员初始化使用 ADMIN_EMAIL / ADMIN_PASSWORD,完成后建议移除或轮换。
Database
主数据库使用 POSTGRES_URL。连接池默认值来自 lib/db/index.ts:
POSTGRES_MAX_CONNECTIONS=10POSTGRES_IDLE_TIMEOUT_SECONDS=20POSTGRES_CONNECT_TIMEOUT_SECONDS=5POSTGRES_MIGRATION_TIMEOUT_SECONDS=120
生产环境可按数据库规格调整,但不建议无上限放大连接数。
Object Storage
优先使用后台数据库中的存储配置;环境变量 S3 和 BLOB_READ_WRITE_TOKEN 作为 fallback。
S3 公网访问建议配置 S3_PUBLIC_URL,避免把内部 endpoint 暴露给前端或用户。
AI Providers
大多数供应商都可以在后台设置中配置。环境变量适合作为 bootstrap 或 fallback,例如 DASHSCOPE_API_KEY、FAL_KEY、TRIPO_API_KEY、KITTYCAD_API_TOKEN。
不要在日志、README、issue 或截图中暴露真实 API Key、签名 URL、OAuth code、session、cookie。
Logging
生产建议:
LOG_LEVEL=info
LOG_INCLUDE_STACK=false
NEXT_PUBLIC_ENABLE_CLIENT_LOGS=false
日志会经过 lib/observability 脱敏。需要排查问题时,优先临时提高服务端 LOG_LEVEL,不要开启浏览器生产日志。
反向代理与安全
- 代理层应保留正确的
X-Forwarded-*头。 - 只在可信代理后启用
AUTH_TRUST_HOST=true。 - 上传和生成接口可能处理大文件,代理需要配置足够的 body size 和超时时间。
- 对管理端、支付、生成任务回调和定时任务接口使用独立密钥或登录权限保护。
部署后烟测
如果可以从部署机或本地访问目标域名,推荐直接使用脚本:
SMOKE_BASE_URL=https://your-domain.com pnpm smoke:routes
也可以手动检查:
curl -I https://your-domain.com/
curl -I https://your-domain.com/classic
curl -I https://your-domain.com/chat/test-id
curl -I https://your-domain.com/settings
curl -I "https://your-domain.com/api/site-settings?scope=home"
预期:
/返回 200。/classic和/chat/test-id重定向到/。/settings未登录重定向到登录页。- 首页公开接口带有
X-Cache/X-Fallback/Server-Timing等观测头。