主要变更: - 添加完整的项目结构和模块(admin、articles、comments、users、session、oauth2、email、moderation、analytics、jobs 等) - 实现系统初始化 API(/init/status 和 /init/run) - 重写部署流程:迁移到 package.json scripts,删除 Makefile - 优化部署脚本:deploy.sh、healthcheck.sh、backup.sh、restore.sh、verify-env.sh - 更新 README.md:简化文档,整合部署指南 - 优化 AGENTS.md:精简到约 150 行,包含完整的代码规范和命令速查 - 配置 Docker Compose 自动化部署(prisma migrate deploy + seed) - 生成 OAuth2 RSA 密钥对支持 - 添加环境变量验证和数据库备份恢复功能
67 lines
1.6 KiB
Plaintext
67 lines
1.6 KiB
Plaintext
# ===== Server =====
|
||
NODE_ENV=production
|
||
PORT=3001
|
||
APP_BASE_URL=http://localhost:3001
|
||
|
||
# ===== DB =====
|
||
DATABASE_URL=postgresql://blog:blog@postgres:5432/linkshare?schema=public
|
||
|
||
# ===== Redis (BullMQ) =====
|
||
REDIS_HOST=redis
|
||
REDIS_PORT=6379
|
||
REDIS_PASSWORD=
|
||
|
||
# ===== Session (后端登录态 cookie) =====
|
||
SESSION_COOKIE_SECRET=change_me
|
||
SESSION_COOKIE_NAME=linkshare_session
|
||
SESSION_COOKIE_SECURE=false
|
||
SESSION_COOKIE_HTTPONLY=true
|
||
|
||
# ===== OAuth2 Provider =====
|
||
OAUTH2_ISSUER=http://localhost:3001
|
||
|
||
OAUTH2_ACCESS_TOKEN_TTL_SECONDS=3600
|
||
OAUTH2_REFRESH_TOKEN_TTL_SECONDS=2592000
|
||
|
||
OAUTH2_TOKEN_SIGNING_PRIVATE_KEY=-----BEGIN PRIVATE KEY-----
|
||
...
|
||
-----END PRIVATE KEY-----
|
||
OAUTH2_TOKEN_SIGNING_PUBLIC_KEY=-----BEGIN PUBLIC KEY-----
|
||
...
|
||
-----END PUBLIC KEY-----
|
||
|
||
# Provider default client(给 web/admin 使用)
|
||
OAUTH2_DEFAULT_CLIENT_ID=web-client
|
||
OAUTH2_DEFAULT_CLIENT_SECRET=change_me
|
||
OAUTH2_DEFAULT_REDIRECT_URI=http://localhost:3000/auth/callback
|
||
|
||
# ===== AI (BYOK via OpenRouter/AiMixHub) =====
|
||
AI_PROVIDER=openrouter
|
||
AI_API_KEY=change_me
|
||
AI_BASE_URL=https://openrouter.ai/api/v1
|
||
AI_MODEL_NAME=meta-llama/llama-3.1-70b-instruct
|
||
|
||
AI_REVIEW_ENABLED=true
|
||
AI_REVIEW_TEMPERATURE=0.2
|
||
|
||
# ===== SMTP =====
|
||
SMTP_HOST=smtp.example.com
|
||
SMTP_PORT=587
|
||
SMTP_USER=user@example.com
|
||
SMTP_PASS=change_me
|
||
SMTP_FROM="LinkShare Blog <no-reply@example.com>"
|
||
|
||
# ===== Visitor analytics cookie =====
|
||
VISITOR_COOKIE_NAME=linkshare_visitor
|
||
VISITOR_COOKIE_MAX_AGE_DAYS=365
|
||
|
||
# ===== Link access =====
|
||
LINK_URL_MODE_DEFAULT=slug_token
|
||
|
||
# ===== Security =====
|
||
PASSWORD_SALT_ROUNDS=12
|
||
|
||
# ===== Rate Limiting =====
|
||
THROTTLE_TTL=60000
|
||
THROTTLE_LIMIT=100
|