# ==================== 必须配置(启动前) ==================== # 以下配置项必须在项目启动前设置 # 数据库配置 DB_HOST=localhost DB_PORT=5432 DB_USER=postgres DB_NAME=aether DB_PASSWORD=your_secure_password_here # Redis 配置 REDIS_HOST=localhost REDIS_PORT=6379 REDIS_PASSWORD=your_redis_password_here # JWT密钥(使用 python generate_keys.py 生成) # 用于用户登录 token 签名,更换后所有用户需重新登录 JWT_SECRET_KEY=change-this-to-a-secure-random-string # 独立加密密钥(用于加密 Provider API Key 等敏感数据) # 注意:更换此密钥后需要在管理面板重新配置所有 Provider API Key ENCRYPTION_KEY=change-this-to-another-secure-random-string # 支付回调共享密钥(公开 /api/payment/callback/* 入口必须携带 x-payment-callback-token) # 建议使用 32+ 位随机字符串 PAYMENT_CALLBACK_SECRET=change-this-to-a-secure-callback-secret # 管理员账号(仅首次初始化时使用, 创建完成后可在系统内修改密码) ADMIN_EMAIL=admin@example.com ADMIN_USERNAME=admin ADMIN_PASSWORD=admin123456 # ==================== 可选配置(有默认值) ==================== # 以下配置项有合理的默认值,可按需调整 # 应用端口(默认 8084) # APP_PORT=8084 # 生产部署镜像(deploy.sh 会读取) # APP_IMAGE=ghcr.io/fawney19/aether:latest # Gunicorn Worker 数量(默认 2) # Tunnel 请求统一经 Hub 转发,可安全使用多 worker。 # 非 Docker 运行时若使用 ProxyNode tunnel,请确保 aether-hub 可达(默认 ws://127.0.0.1:8085)。 # GUNICORN_WORKERS=2 # Gunicorn Max Requests(默认 4000) # Worker 处理指定数量请求后自动重启,防止内存泄漏 # max-requests-jitter 会自动设置为 MAX_REQUESTS/20 (5%) # MAX_REQUESTS=4000 # glibc malloc arena 上限(默认 2) # 降低 malloc 内存碎片,减少 gunicorn worker RSS # MALLOC_ARENA_MAX=2 # HTTP 连接池上限(默认总预算约 200,按 worker 平分) # 如果容器内存偏高,可继续下调;例如 2 worker 时设为 80-100 # HTTP_MAX_CONNECTIONS=100 # HTTP 保活连接数(默认约为 max_connections 的 30%) # HTTP_KEEPALIVE_CONNECTIONS=30 # HTTP 代理/Tunnel 客户端空闲清理(默认每 5 分钟扫描,空闲 600 秒即关闭) # HTTP_CLIENT_IDLE_CLEANUP_INTERVAL_MINUTES=5 # HTTP_CLIENT_IDLE_CLEANUP_MAX_SECONDS=600 # curl_cffi session 池上限(默认 20,按 impersonate + proxy 组合缓存) # CURL_CFFI_MAX_SESSIONS=20 # 流式响应块缓存上限(单位 MB,默认 2) # 说明: # - 这是单个流式请求可保留的“解析后响应块”内存上限,不是全局上限 # - 粗略峰值内存 ≈ 并发流数量 × RESPONSE_CHUNKS_MAX_SIZE_MB # 例如:100 并发、2MB 上限,理论峰值约 200MB # - 建议: # - 内存敏感环境:1 # - 通用生产环境:2(默认) # - 需要更多调试上下文:4 # RESPONSE_CHUNKS_MAX_SIZE_MB=2 # 流式空闲超时(单位秒,默认 30) # 当流已经开始但连续一段时间没有任何新 chunk 时,提前中断并返回 504, # 避免一直等到 worker 超时(如 300s) # STREAM_IDLE_TIMEOUT_SECONDS=30 # API Key 前缀(默认 sk) # API_KEY_PREFIX=sk # 日志级别(默认 INFO,可选:DEBUG, INFO, WARNING, ERROR) # LOG_LEVEL=INFO # CORS 配置(允许跨域的源,多个源用逗号分隔) # 示例: http://localhost:3000,https://example.com # 默认: * (允许所有源) # CORS_ORIGINS=* # 启动预热配置(默认启用,降低首请求冷启动延迟) # 是否启用启动期预热任务(默认 true) # STARTUP_WARMUP_ENABLED=true # /readyz 是否等待预热完成(默认 true) # STARTUP_WARMUP_GATE_READINESS=true # 预热时优先 bootstrap 的 provider_type 列表(逗号分隔;留空表示自动探测) # STARTUP_WARMUP_PROVIDER_TYPES=codex,kiro # ==================== 计费系统(可选) ==================== # Video/Image/Audio 缺失 billing_rule 时是否拒绝请求(默认 false:允许请求但 cost=0 并告警) # BILLING_REQUIRE_RULE=false # # required 维度缺失时是否拒绝请求/标记任务失败(默认 false:cost=0 + 标记 incomplete) # BILLING_STRICT_MODE=false #