| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- # 管理员令牌(请务必更改此值以确保安全性)
- ADMIN_TOKEN=change-me
- # 自动迁移控制(生产环境默认开启)
- # 设置为 false 可禁用自动迁移
- AUTO_MIGRATE=true
- # 数据库连接字符串(仅用于本地开发或非 Docker Compose 部署)
- DSN="postgres://user:password@host:port/db_name"
- # API Key Vacuum Filter(真空过滤器)
- # - true (默认):启用。用于在访问 DB 前“负向短路”无效 key,降低 DB 压力、抵御爆破
- # - false:禁用(例如:需要排查问题或节省内存时)
- ENABLE_API_KEY_VACUUM_FILTER="true"
- # PostgreSQL 连接池配置(postgres.js)
- # 说明:
- # - 这些值是“每个应用进程”的连接池上限;k8s 多副本时需要按副本数分摊
- # - 默认值:生产环境 20,开发环境 10(可按需覆盖)
- DB_POOL_MAX=20
- DB_POOL_IDLE_TIMEOUT=20 # 空闲连接回收(秒)
- DB_POOL_CONNECT_TIMEOUT=10 # 建立连接超时(秒)
- # message_request 写入模式
- # - async:异步批量写入(默认,降低 DB 写放大与连接占用)
- # - sync:同步写入(兼容旧行为,但高并发下会增加请求尾部阻塞)
- MESSAGE_REQUEST_WRITE_MODE=async
- # message_request 异步批量参数(可选)
- MESSAGE_REQUEST_ASYNC_FLUSH_INTERVAL_MS=250
- MESSAGE_REQUEST_ASYNC_BATCH_SIZE=200
- MESSAGE_REQUEST_ASYNC_MAX_PENDING=5000
- # 数据库配置(Docker Compose 部署时使用)
- DB_USER=postgres
- DB_PASSWORD=your-secure-password_change-me
- DB_NAME=claude_code_hub
- # 应用配置
- APP_PORT=23000
- APP_URL= # 应用访问地址(留空自动检测,生产环境建议显式配置)
- # 示例:https://your-domain.com 或 http://192.168.1.100:23000
- # API 测试配置
- # API 测试请求超时时间(毫秒),范围 5000-120000。未设置时默认 15000。
- API_TEST_TIMEOUT_MS=15000
- # Cookie 安全策略
- # 功能说明:控制是否强制 HTTPS Cookie(设置 cookie 的 secure 属性)
- # - true (默认):仅允许 HTTPS 传输 Cookie,浏览器会自动放行 localhost 的 HTTP
- # - false:允许 HTTP 传输 Cookie(会降低安全性,仅推荐用于内网部署)
- # 警告:若设置为 true 且使用远程 HTTP 访问,浏览器将拒绝设置 Cookie 导致无法登录
- ENABLE_SECURE_COOKIES=true
- # Redis 配置(用于限流和 Session 追踪)
- # 功能说明:
- # - 限流功能:金额限制(5小时/周/月)+ Session 并发限制
- # - Session 追踪:5 分钟上下文缓存优化(避免频繁切换供应商)
- # - Fail Open 策略:Redis 不可用时自动降级,不影响服务可用性
- ENABLE_RATE_LIMIT=true # 是否启用限流功能(默认:true)
- REDIS_URL=redis://localhost:6379 # Redis 连接地址(Docker 部署使用 redis://redis:6379,支持 rediss:// TLS)
- REDIS_TLS_REJECT_UNAUTHORIZED=true # 是否验证 Redis TLS 证书(默认:true)
- # 设置为 false 可跳过证书验证,用于自签证书或共享证书场景
- # 仅在 rediss:// 协议时生效
- # API Key 鉴权缓存(Vacuum Filter -> Redis -> DB)
- # 说明:需要 ENABLE_RATE_LIMIT=true 且配置 REDIS_URL 才会启用 Redis 缓存;否则自动回落到 DB。
- API_KEY_AUTH_CACHE_TTL_SECONDS="60" # 鉴权缓存 TTL(秒,默认 60,最大 3600)
- ENABLE_API_KEY_REDIS_CACHE="true" # 是否启用 API Key Redis 缓存(默认:true)
- # Session 配置
- SESSION_TTL=300 # Session 过期时间(秒,默认 300 = 5 分钟)
- STORE_SESSION_MESSAGES=false # 会话消息存储模式(默认:false)
- # - false:存储请求/响应体但对 message 内容脱敏 [REDACTED]
- # - true:原样存储 message 内容(注意隐私和存储空间影响)
- # 警告:启用后会增加 Redis/DB 存储空间,且包含敏感信息
- STORE_SESSION_RESPONSE_BODY=true # 是否在 Redis 中存储会话响应体(默认:true)
- # - true:存储(SSE/JSON),用于调试/定位问题(Redis 临时缓存)
- # - false:不存储响应体(注意:不影响本次请求处理;仅影响后续查看 response body)
- # 说明:该开关不影响内部统计读取响应体(tokens/费用统计、SSE 假 200 检测仍会进行)
- # 熔断器配置
- # 功能说明:控制网络错误是否计入熔断器失败计数
- # - false (默认):网络错误(DNS 解析失败、连接超时、代理连接失败等)不计入熔断器,仅供应商错误(4xx/5xx HTTP 响应)计入
- # - true:所有错误(包括网络错误)都计入熔断器失败计数
- # 使用场景:
- # - 默认关闭:适用于网络不稳定环境(如使用代理),避免因临时网络抖动触发熔断器
- # - 启用:适用于网络稳定环境,连续网络错误也应触发熔断保护,避免持续请求不可达的供应商
- ENABLE_CIRCUIT_BREAKER_ON_NETWORK_ERRORS=false
- # 端点级别熔断器
- # 功能说明:控制是否启用端点级别的熔断器
- # - false (默认):禁用端点熔断器,所有启用的端点均可使用
- # - true:启用端点熔断器,连续失败的端点会被临时屏蔽(默认 3 次失败后熔断 5 分钟)
- ENABLE_ENDPOINT_CIRCUIT_BREAKER=false
- # 供应商缓存配置
- # 功能说明:控制是否启用供应商进程级缓存
- # - true (默认):启用缓存,30s TTL + Redis Pub/Sub 跨实例即时失效,提升供应商查询性能
- # - false:禁用缓存,每次请求直接查询数据库(适用于调试或单机低并发场景)
- ENABLE_PROVIDER_CACHE=true
- # Fetch 连接超时配置
- # 功能说明:控制 TCP 连接建立超时时间(包括 DNS 查询、TCP 握手、TLS 握手)
- # - 默认值:30000 毫秒(30 秒)
- # - 取值范围:建议 5000-120000 毫秒(5-120 秒)
- # 使用场景:
- # - 缩短此值可快速切换到备用供应商,当供应商被攻击或无响应时
- # - 增加此值适用于网络不稳定环境,避免因网络抖动导致连接失败
- FETCH_CONNECT_TIMEOUT=30000
- # Fetch 响应头超时配置
- # 功能说明:控制等待响应头的超时时间(通常可近似理解为“等待首字节/首包”的上限)
- # - 默认值:600000 毫秒(600 秒)
- # - 取值范围:建议 10000-600000 毫秒(10-600 秒)
- # 使用场景:
- # - 需要支持长时间首字节等待(例如某些模型/代理的排队或冷启动)时,可适当增大
- # - 希望更快失败并切换供应商时,可适当减小
- FETCH_HEADERS_TIMEOUT=600000
- # Fetch 响应体超时配置
- # 功能说明:控制请求/响应体传输超时(undici 会监控 body 数据接收间隔,超时则中断请求)
- # - 默认值:600000 毫秒(600 秒)
- # - 取值范围:建议 10000-600000 毫秒(10-600 秒)
- # 使用场景:
- # - 流式响应或长推理模型:建议保留较大值,避免被 undici 默认 300s 先行终止
- # - 希望快速失败并切换供应商:可适当减小
- FETCH_BODY_TIMEOUT=600000
- MAX_RETRY_ATTEMPTS_DEFAULT=2 # 单供应商最大尝试次数(含首次调用),范围 1-10,留空使用默认值 2
- # 智能探测配置
- # 功能说明:当熔断器处于 OPEN 状态时,定期探测供应商以实现更快恢复
- # - ENABLE_SMART_PROBING:是否启用智能探测(默认:false)
- # - PROBE_INTERVAL_MS:探测周期间隔(毫秒,默认:30000 = 30秒)
- # - PROBE_TIMEOUT_MS:单次探测超时时间(毫秒,默认:5000 = 5秒)
- # 工作原理:
- # - 定期检查处于 OPEN 状态的熔断器
- # - 使用轻量级测试请求探测供应商
- # - 探测成功则提前将熔断器转为 HALF_OPEN 状态
- ENABLE_SMART_PROBING=false
- PROBE_INTERVAL_MS=30000
- PROBE_TIMEOUT_MS=5000
- # Provider Endpoint Probing (always enabled)
- # Probes all enabled endpoints based on dynamic intervals and refreshes endpoint selection ranking.
- # Note: No ENABLE switch, enabled by default; tune via parameters below.
- #
- # Dynamic Interval Rules (in priority order):
- # 1. Timeout Override (10s): If endpoint's lastProbeErrorType === "timeout" and not recovered (lastProbeOk !== true)
- # 2. Single-Vendor (10min): If vendor has only 1 enabled endpoint
- # 3. Base Interval (default): All other endpoints
- #
- # ENDPOINT_PROBE_INTERVAL_MS controls the base interval. Single-vendor and timeout intervals are fixed.
- ENDPOINT_PROBE_INTERVAL_MS=60000
- ENDPOINT_PROBE_TIMEOUT_MS=5000
- ENDPOINT_PROBE_CONCURRENCY=10
- ENDPOINT_PROBE_CYCLE_JITTER_MS=1000
- ENDPOINT_PROBE_LOCK_TTL_MS=30000
- # Probe method: TCP (default, no HTTP request / no access log), HEAD, GET
- ENDPOINT_PROBE_METHOD=TCP
- # 探测日志保留与清理
- # - 所有探测结果(成功/失败)均记录到历史表
- # - 自动清理任务每 24 小时运行,删除过期记录
- ENDPOINT_PROBE_LOG_RETENTION_DAYS=1
- ENDPOINT_PROBE_LOG_CLEANUP_BATCH_SIZE=10000
|