# ============================================================ # 小虾 SaaS 环境变量完整配置 # ============================================================ # 本文件列出所有可配置的环境变量及默认值。 # 复制为 .env 后按需修改;生产环境务必覆盖所有密钥类配置。 # # 配置读取规则(pydantic-settings,大小写不敏感): # 1. 系统环境变量(最高优先级) # 2. .env.{APP_ENV} 文件(如 .env.staging) # 3. .env 文件 # 4. 代码中的默认值(最低优先级) # ============================================================ # ==================== 应用基本配置 ==================== # 应用名称 APP_NAME=xiaoxia-saas # 应用版本号(展示用,代码中已内置默认) APP_VERSION=0.1.61 # 环境标识:development / staging / production # 决定读取 .env.{APP_ENV} 还是 .env,也影响部分配置的严格校验 APP_ENV=development # 是否开启 Debug 模式(开发环境 true,生产环境 false) DEBUG=true # 应用基础 URL,用于生成认证邮件、回调链接等 APP_BASE_URL=http://localhost:3000 # API 服务监听地址(容器内绑定,外部暴露由 Docker/Nginx 控制) API_HOST=0.0.0.0 # API 服务监听端口 API_PORT=8000 # 是否自动创建数据库表结构(开发环境可开启,生产环境用 alembic migration) AUTO_CREATE_SCHEMA=false # ==================== 数据库配置 ==================== # 数据库连接串(格式:postgresql+psycopg://user:password@host:port/dbname) DATABASE_URL=postgresql+psycopg://postgres:postgres@localhost:5432/xiaoxia_saas # 连接池大小(常驻连接数) DATABASE_POOL_SIZE=20 # 连接池最大溢出连接数(pool_size + max_overflow = 最大并发连接数) DATABASE_MAX_OVERFLOW=10 # 获取连接超时时间(秒) DATABASE_POOL_TIMEOUT=30 # 连接回收时间(秒),防止数据库端主动断开导致的死连接 DATABASE_POOL_RECYCLE=3600 # 是否使用内存数据库(SQLite,仅开发/测试可用;生产务必 false) USE_IN_MEMORY_DB=false # ==================== Redis 配置 ==================== # Redis 连接 URL(格式:redis://[:password@]host:port/db) REDIS_URL=redis://localhost:6379/0 # 是否使用 Redis 存储 Session(多实例部署时必须开启;开发可用内存存储) ENABLE_REDIS_SESSIONS=false # ==================== Celery 任务队列 ==================== # Celery Broker(任务分发),默认用 Redis db0 CELERY_BROKER_URL=redis://localhost:6379/0 # Celery Result Backend(任务结果存储),默认用 Redis db1 CELERY_RESULT_BACKEND=redis://localhost:6379/1 # ==================== Worker 配置 ==================== # Worker 进程名称 WORKER_NAME=xiaoxia-saas-worker # Worker 并发数(同时执行的任务数) WORKER_CONCURRENCY=4 # 每个子进程最多处理多少任务后重启(防止内存泄漏) WORKER_MAX_TASKS_PER_CHILD=1000 # ==================== JWT 认证配置 ==================== # JWT 签名密钥 — 生产环境必须设置为强随机字符串(至少32字符) # 内置不安全值会被拒绝:secret / changeme / password / your-secret-key 等 JWT_SECRET_KEY=your-super-secret-key-change-this-in-production-min-32-chars # JWT 签名算法 JWT_ALGORITHM=HS256 # Access Token 过期时间(分钟) JWT_ACCESS_TOKEN_EXPIRE_MINUTES=30 # Refresh Token 过期时间(天) JWT_REFRESH_TOKEN_EXPIRE_DAYS=30 # ==================== 邮件配置 ==================== # 是否启用邮件投递(关闭时邮件内容打印到日志,开发调试用) ENABLE_EMAIL_DELIVERY=false # SMTP 服务器地址 SMTP_HOST=smtp.gmail.com # SMTP 端口 SMTP_PORT=587 # SMTP 用户名 SMTP_USER=your-email@gmail.com # SMTP 密码 / 应用专用密码 SMTP_PASSWORD=your-app-specific-password # 发件人邮箱 SMTP_FROM_EMAIL=noreply@xiaoxia-saas.com # 发件人显示名称 SMTP_FROM_NAME=小虾 SaaS # 是否启用 TLS SMTP_USE_TLS=true # ==================== 阿里云 OSS 配置 ==================== # OSS 区域 endpoint OSS_ENDPOINT=oss-cn-hangzhou.aliyuncs.com # OSS Access Key ID — 非开发环境必须设置 OSS_ACCESS_KEY_ID=your-access-key-id # OSS Access Key Secret — 非开发环境必须设置 OSS_ACCESS_KEY_SECRET=your-access-key-secret # OSS Bucket 名称 OSS_BUCKET_NAME=xiaoxia-autocut # 直传最大文件大小(MB) OSS_DIRECT_UPLOAD_MAX_MB=2000 # 直传签名有效期(秒) OSS_DIRECT_UPLOAD_EXPIRE_SECONDS=900 # ==================== CORS 配置 ==================== # 允许跨域的前端域名列表,逗号分隔 CORS_ORIGINS_RAW=http://localhost:3000,http://localhost:5173,http://localhost:8000 # ==================== 渲染引擎配置 ==================== # 渲染引擎选择: # legacy — 旧 VideoComposeService(稳定,功能完整) # unified — 新 UnifiedRenderService(新架构,部分场景仍在验证) RENDER_ENGINE=legacy # ==================== CosyVoice 语音合成 ==================== # 阿里云百灵语音合成服务 # 模型选择: # cosyvoice-v3-flash — 推荐,系统音色多,性价比高 # cosyvoice-v3-plus — 高质量,系统音色少 # cosyvoice-v3.5-flash / cosyvoice-v3.5-plus — 仅支持克隆/设计音色,无系统音色 # 音色:v3 系列系统音色带 _v3 后缀,如 longxiaochun_v3 / longxiaoxia_v3 / longanyang COSYVOICE_API_KEY=your-cosyvoice-api-key COSYVOICE_BASE_URL=https://dashscope.aliyuncs.com/api/v1 COSYVOICE_MODEL=cosyvoice-v3-flash COSYVOICE_VOICE=longxiaochun_v3 COSYVOICE_SAMPLE_RATE=22050 COSYVOICE_FORMAT=mp3 # 音色克隆模型名(固定为 voice-enrollment,通常不需修改) COSYVOICE_CLONE_MODEL=voice-enrollment # ==================== 豆包大模型(火山引擎方舟) ==================== # 用于 AI 文案生成、智能剪辑等需要大模型能力的场景 DOUBAO_API_KEY=your-doubao-api-key DOUBAO_MODEL=doubao-seed-1-6-250615 DOUBAO_BASE_URL=https://ark.cn-beijing.volces.com/api/v3 DOUBAO_TIMEOUT=30 DOUBAO_MAX_RETRIES=2 # ==================== 积分/会员系统 (#1895) ==================== # 积分系统总开关:默认 false(暂停积分系统)。 # - false:生成视频/口型同步/数字人/AI标题/TTS/克隆音色等所有功能对登录 # 用户免费放行,不扣积分、不做余额拦截;积分余额/流水/会员状态查询接口 # 保留可用,但数据不再变动。积分相关的表、代码、接口均保留不删除。 # - 恢复积分:设置 ENABLE_CREDIT_SYSTEM=true 即可,无需改代码。 ENABLE_CREDIT_SYSTEM=false # 旧开关名(兼容别名):与 ENABLE_CREDIT_SYSTEM 任一为 true 即启用。 POINTS_ENABLED=false # ==================== 抖音解析多源轮询 (#1963) ==================== # 无需配置 Key 也可使用(P0 免费源可用),配置 Key 可增加兜底能力 # TikHub API Key (https://tikhub.io) — $0.001/次起,注册送$0.05 TIKHUB_API_KEY= # apizero.cn API Key (https://v1.apizero.cn) — 国内抖音解析服务 APIZERO_API_KEY= # ==================== GPU MuseTalk Worker(反向轮询口型同步)==================== # GPU Worker 长期鉴权 Token,Worker 端 .env 的 GPU_WORKER_TOKEN 必须与此一致 # 留空时 development 环境允许匿名访问(仅本地调试),staging/production 必须配置 GPU_WORKER_TOKEN= # 单任务超时(秒),processing 超过此时长无任务心跳才回退 pending 或标记 failed # #1970:RTX2060 6G 推理 720p 长视频需 5 分钟以上,默认 900 GPU_TASK_TIMEOUT_SECONDS=900 # 是否启用 GPU 口型同步(开关)。开启后需同时有 Worker 在心跳窗口内(5分钟)才会走 GPU 路径; # 开关关闭 / 无可用 Worker / GPU 任务失败或超时 → 自动回退现有 MediaKit 云端 lipsync USE_GPU_LIPSYNC=false # 业务侧轮询 GPU 任务结果的间隔(秒) GPU_LIPSYNC_POLL_INTERVAL=5 # 业务侧等待 GPU 任务总超时(秒);超时回退 MediaKit GPU_LIPSYNC_WAIT_TIMEOUT=1200 # Worker 心跳新鲜度窗口(秒),last_heartbeat_at 在此窗口内视为在线 GPU_WORKER_STALE_SECONDS=300