Files
meijiaka-zy/python-api/.env.example
T
小鱼开发 95e55293c6 security: 全面生产安全加固与部署修复
后端安全:
- DEBUG 默认 True → False
- 彻底移除 AUTH_BYPASS 认证绕过
- 验证码不再明文打印到日志
- 上传接口增加大小限制(500MB/20MB/100MB)与魔数校验
- python-jose → PyJWT, 更新 requirements.lock/uv.lock
- Bandit 恢复关键规则(B104/B301/B305/B314/B324/B603/B607)
- 修复 5 处 try_except_pass, 15 处加 nosec 注释
- 启用 Bandit pre-commit 钩子

前端安全:
- 配置完整 CSP 策略
- 收紧 Capabilities(fs:allow-read-file → $RESOURCE/**)
- 移除硬编码 devToken
- 清理前端 TODO(美家卡智影命名统一)

部署修复:
- docker-compose.prod 增加 alembic 迁移步骤
- api + scheduler 增加 Redis 心跳健康检查
- Nginx 添加安全响应头
- Nginx client_max_body_size 100M → 500M
- .env.example 补充 UPLOAD_MAX_* 配置与安全注释

其他:
- /voice/upload 合并到 /upload/audio
- Rust 上传增加文件大小检查
- 清理 Rust 19 处 println! + 前端 21 处 console.info
- 修复 VideoCompose.tsx toast 未导入(已有bug)
2026-05-10 23:31:34 +08:00

91 lines
2.7 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 美家卡智影 API - 环境变量配置示例
# ================================
# 复制此文件为 .env 并填写实际值
# === 基础配置 ===
APP_NAME=美家卡智影 API
APP_VERSION=0.1.0
# ⚠️ 生产环境必须设为 false
DEBUG=true
ENV=development
HOST=0.0.0.0
PORT=8000
WORKERS=1
# === 服务器地址 ===
# 不配置时自动根据 ENV 推断:production→tapi.meijiaka.cn, staging→dev.tapi.meijiaka.cn
# APP_BASE_URL=https://dev.tapi.meijiaka.cn
# === 数据库配置 ===
# 本地开发: localhost
# Docker 部署: 容器名(如 db、meijiaka-db
DATABASE_URL=postgresql+asyncpg://postgres:postgres@localhost:5432/meijiaka_zy
DATABASE_POOL_SIZE=10
DATABASE_MAX_OVERFLOW=10
DATABASE_POOL_RECYCLE=1800
DATABASE_POOL_TIMEOUT=30
# === Redis 配置 ===
# 本地开发: localhost
# Docker 部署: 容器名(如 redis、meijiaka-redis
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_DB=0
# REDIS_PASSWORD= # 如无密码请留空或注释
# === JWT 安全配置 ===
# 生产环境必须修改为强随机密钥(至少 32 位)
SECRET_KEY=dev-secret-key-change-me
ACCESS_TOKEN_EXPIRE_MINUTES=30
REFRESH_TOKEN_EXPIRE_DAYS=30
ALGORITHM=HS256
# === CORS 配置 ===
# 本地开发: 允许 localhost
# 测试/生产服: 填写实际域名,如 https://app.yourdomain.com
CORS_ORIGINS=http://localhost:1420,http://127.0.0.1:1420,http://localhost:8080
# === AI 平台配置 ===
# 火山方舟
VOLCENGINE_API_KEY=your-volcengine-api-key
VOLCENGINE_MODEL=doubao-seed-2-0-pro-260215
# 火山字幕服务
VOLCENGINE_CAPTION_APPID=your-caption-appid
VOLCENGINE_CAPTION_TOKEN=your-caption-token
# Vidu(TTS、声音复刻、对口型)
VIDU_API_KEY=your-vidu-api-key
# === 七牛云存储(空镜图片上传)===
QINIU_ACCESS_KEY=your-qiniu-access-key
QINIU_SECRET_KEY=your-qiniu-secret-key
QINIU_VIDEO_BUCKET=media-liche
QINIU_VIDEO_DOMAIN=media.liche.cn
QINIU_IMAGE_BUCKET=img-liche
QINIU_IMAGE_DOMAIN=img.liche.cn
# === 微信支付(APIv2===
# ⚠️ P0 必填 — 充值功能依赖以下 4 项,未配置则微信支付完全不可用
WXPAY_MCHID=your-mchid
WXPAY_APPID=your-wx-appid
WXPAY_API_KEY=your-api-key
WXPAY_NOTIFY_URL=https://your-domain.com/api/v1/points/recharge/notify
# === 文件上传限制(字节)===
UPLOAD_MAX_VIDEO_SIZE=524288000 # 500MB
UPLOAD_MAX_IMAGE_SIZE=20971520 # 20MB
UPLOAD_MAX_AUDIO_SIZE=104857600 # 100MB
# === B2M 短信平台 ===
# ⚠️ P0 必填 — 未配置时 SMS 降级为仅打印日志(开发可用,测试/生产不可用)
SMS_APP_ID=your-sms-app-id
SMS_SECRET_KEY=your-16-24-32-byte-aes-key
SMS_BASE_URL=https://bjksmtn.b2m.cn/inter/sendSingleSMS
# SMS_EXTENDED_CODE= # 扩展码(选填)
# === 日志配置 ===
# 生产环境建议 INFO
LOG_LEVEL=DEBUG