.env.example 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. # 管理员令牌(请务必更改此值以确保安全性)
  2. ADMIN_TOKEN=change-me
  3. # 自动迁移控制(生产环境默认开启)
  4. # 设置为 false 可禁用自动迁移
  5. AUTO_MIGRATE=true
  6. # 数据库连接字符串(仅用于本地开发或非 Docker Compose 部署)
  7. DSN="postgres://user:password@host:port/db_name"
  8. # PostgreSQL 连接池配置(postgres.js)
  9. # 说明:
  10. # - 这些值是“每个应用进程”的连接池上限;k8s 多副本时需要按副本数分摊
  11. # - 默认值:生产环境 20,开发环境 10(可按需覆盖)
  12. DB_POOL_MAX=20
  13. DB_POOL_IDLE_TIMEOUT=20 # 空闲连接回收(秒)
  14. DB_POOL_CONNECT_TIMEOUT=10 # 建立连接超时(秒)
  15. # message_request 写入模式
  16. # - async:异步批量写入(默认,降低 DB 写放大与连接占用)
  17. # - sync:同步写入(兼容旧行为,但高并发下会增加请求尾部阻塞)
  18. MESSAGE_REQUEST_WRITE_MODE=async
  19. # message_request 异步批量参数(可选)
  20. MESSAGE_REQUEST_ASYNC_FLUSH_INTERVAL_MS=250
  21. MESSAGE_REQUEST_ASYNC_BATCH_SIZE=200
  22. MESSAGE_REQUEST_ASYNC_MAX_PENDING=5000
  23. # 数据库配置(Docker Compose 部署时使用)
  24. DB_USER=postgres
  25. DB_PASSWORD=your-secure-password_change-me
  26. DB_NAME=claude_code_hub
  27. # 应用配置
  28. APP_PORT=23000
  29. APP_URL= # 应用访问地址(留空自动检测,生产环境建议显式配置)
  30. # 示例:https://your-domain.com 或 http://192.168.1.100:23000
  31. # API 测试配置
  32. # API 测试请求超时时间(毫秒),范围 5000-120000。未设置时默认 15000。
  33. API_TEST_TIMEOUT_MS=15000
  34. # Cookie 安全策略
  35. # 功能说明:控制是否强制 HTTPS Cookie(设置 cookie 的 secure 属性)
  36. # - true (默认):仅允许 HTTPS 传输 Cookie,浏览器会自动放行 localhost 的 HTTP
  37. # - false:允许 HTTP 传输 Cookie(会降低安全性,仅推荐用于内网部署)
  38. # 警告:若设置为 true 且使用远程 HTTP 访问,浏览器将拒绝设置 Cookie 导致无法登录
  39. ENABLE_SECURE_COOKIES=true
  40. # Redis 配置(用于限流和 Session 追踪)
  41. # 功能说明:
  42. # - 限流功能:金额限制(5小时/周/月)+ Session 并发限制
  43. # - Session 追踪:5 分钟上下文缓存优化(避免频繁切换供应商)
  44. # - Fail Open 策略:Redis 不可用时自动降级,不影响服务可用性
  45. ENABLE_RATE_LIMIT=true # 是否启用限流功能(默认:true)
  46. REDIS_URL=redis://localhost:6379 # Redis 连接地址(Docker 部署使用 redis://redis:6379,支持 rediss:// TLS)
  47. REDIS_TLS_REJECT_UNAUTHORIZED=true # 是否验证 Redis TLS 证书(默认:true)
  48. # 设置为 false 可跳过证书验证,用于自签证书或共享证书场景
  49. # 仅在 rediss:// 协议时生效
  50. # Session 配置
  51. SESSION_TTL=300 # Session 过期时间(秒,默认 300 = 5 分钟)
  52. STORE_SESSION_MESSAGES=false # 会话消息存储模式(默认:false)
  53. # - false:存储请求/响应体但对 message 内容脱敏 [REDACTED]
  54. # - true:原样存储 message 内容(注意隐私和存储空间影响)
  55. # 警告:启用后会增加 Redis/DB 存储空间,且包含敏感信息
  56. # 熔断器配置
  57. # 功能说明:控制网络错误是否计入熔断器失败计数
  58. # - false (默认):网络错误(DNS 解析失败、连接超时、代理连接失败等)不计入熔断器,仅供应商错误(4xx/5xx HTTP 响应)计入
  59. # - true:所有错误(包括网络错误)都计入熔断器失败计数
  60. # 使用场景:
  61. # - 默认关闭:适用于网络不稳定环境(如使用代理),避免因临时网络抖动触发熔断器
  62. # - 启用:适用于网络稳定环境,连续网络错误也应触发熔断保护,避免持续请求不可达的供应商
  63. ENABLE_CIRCUIT_BREAKER_ON_NETWORK_ERRORS=false
  64. # 供应商缓存配置
  65. # 功能说明:控制是否启用供应商进程级缓存
  66. # - true (默认):启用缓存,30s TTL + Redis Pub/Sub 跨实例即时失效,提升供应商查询性能
  67. # - false:禁用缓存,每次请求直接查询数据库(适用于调试或单机低并发场景)
  68. ENABLE_PROVIDER_CACHE=true
  69. # Fetch 连接超时配置
  70. # 功能说明:控制 TCP 连接建立超时时间(包括 DNS 查询、TCP 握手、TLS 握手)
  71. # - 默认值:30000 毫秒(30 秒)
  72. # - 取值范围:建议 5000-120000 毫秒(5-120 秒)
  73. # 使用场景:
  74. # - 缩短此值可快速切换到备用供应商,当供应商被攻击或无响应时
  75. # - 增加此值适用于网络不稳定环境,避免因网络抖动导致连接失败
  76. FETCH_CONNECT_TIMEOUT=30000
  77. # Fetch 响应头超时配置
  78. # 功能说明:控制等待响应头的超时时间(通常可近似理解为“等待首字节/首包”的上限)
  79. # - 默认值:600000 毫秒(600 秒)
  80. # - 取值范围:建议 10000-600000 毫秒(10-600 秒)
  81. # 使用场景:
  82. # - 需要支持长时间首字节等待(例如某些模型/代理的排队或冷启动)时,可适当增大
  83. # - 希望更快失败并切换供应商时,可适当减小
  84. FETCH_HEADERS_TIMEOUT=600000
  85. # Fetch 响应体超时配置
  86. # 功能说明:控制请求/响应体传输超时(undici 会监控 body 数据接收间隔,超时则中断请求)
  87. # - 默认值:600000 毫秒(600 秒)
  88. # - 取值范围:建议 10000-600000 毫秒(10-600 秒)
  89. # 使用场景:
  90. # - 流式响应或长推理模型:建议保留较大值,避免被 undici 默认 300s 先行终止
  91. # - 希望快速失败并切换供应商:可适当减小
  92. FETCH_BODY_TIMEOUT=600000
  93. MAX_RETRY_ATTEMPTS_DEFAULT=2 # 单供应商最大尝试次数(含首次调用),范围 1-10,留空使用默认值 2
  94. # 智能探测配置
  95. # 功能说明:当熔断器处于 OPEN 状态时,定期探测供应商以实现更快恢复
  96. # - ENABLE_SMART_PROBING:是否启用智能探测(默认:false)
  97. # - PROBE_INTERVAL_MS:探测周期间隔(毫秒,默认:30000 = 30秒)
  98. # - PROBE_TIMEOUT_MS:单次探测超时时间(毫秒,默认:5000 = 5秒)
  99. # 工作原理:
  100. # - 定期检查处于 OPEN 状态的熔断器
  101. # - 使用轻量级测试请求探测供应商
  102. # - 探测成功则提前将熔断器转为 HALF_OPEN 状态
  103. ENABLE_SMART_PROBING=false
  104. PROBE_INTERVAL_MS=30000
  105. PROBE_TIMEOUT_MS=5000
  106. # Provider Endpoint Probing (always enabled)
  107. # Probes all enabled endpoints based on dynamic intervals and refreshes endpoint selection ranking.
  108. # Note: No ENABLE switch, enabled by default; tune via parameters below.
  109. #
  110. # Dynamic Interval Rules (in priority order):
  111. # 1. Timeout Override (10s): If endpoint's lastProbeErrorType === "timeout" and not recovered (lastProbeOk !== true)
  112. # 2. Single-Vendor (10min): If vendor has only 1 enabled endpoint
  113. # 3. Base Interval (default): All other endpoints
  114. #
  115. # ENDPOINT_PROBE_INTERVAL_MS controls the base interval. Single-vendor and timeout intervals are fixed.
  116. ENDPOINT_PROBE_INTERVAL_MS=60000
  117. ENDPOINT_PROBE_TIMEOUT_MS=5000
  118. ENDPOINT_PROBE_CONCURRENCY=10
  119. ENDPOINT_PROBE_CYCLE_JITTER_MS=1000
  120. ENDPOINT_PROBE_LOCK_TTL_MS=30000
  121. # 探测日志保留与清理
  122. # - 所有探测结果(成功/失败)均记录到历史表
  123. # - 自动清理任务每 24 小时运行,删除过期记录
  124. ENDPOINT_PROBE_LOG_RETENTION_DAYS=1
  125. ENDPOINT_PROBE_LOG_CLEANUP_BATCH_SIZE=10000