Skip to content

环境变量

注意

环境变量优先级高于配置文件。

本页面可能未及时更新,完整可配置键请以交付包根目录的配置文件示例 config.example.yaml 为准。

配置文件转环境变量

将配置文件中的变量名全部大写,遇到子集用下划线连接,例如:

yaml
# 配置文件
user_token_secret: "<32 位以上的随机字符串>"
logs:
  filename: "capkii.log" # 日志文件名

转换为环境变量:

bash
USER_TOKEN_SECRET="<32 位以上的随机字符串>"
LOGS_FILENAME="capkii.log"

环境变量说明

  1. REDIS_CONN_STRING:设置之后将使用 Redis 作为缓存使用。
    • 例子:REDIS_CONN_STRING=redis://default:redispw@localhost:49153
    • 如果数据库访问延迟很低,没有必要启用 Redis,启用后反而会出现数据滞后的问题。
  2. SESSION_SECRET:设置之后将使用固定的会话密钥,这样系统重新启动后已登录用户的 cookie 将依旧有效。
    • 取值请用 openssl rand -base64 48 | tr -d '\n' 生成强随机字符串,不要使用简单口令。
  3. SQL_DSN:设置之后将使用指定数据库而非 SQLite,请使用 MySQL 或 PostgreSQL。
    • 例子(尖括号为占位符,请替换为实际值):
      • MySQL:SQL_DSN=<DB_USER>:<DB_PASSWORD>@tcp(<DB_HOST>:3306)/capkii
      • PostgreSQL:SQL_DSN=postgres://<DB_USER>:<DB_PASSWORD>@<DB_HOST>:5432/capkii(适配中,欢迎反馈)
    • 请为 Capkii 单独创建数据库账号并设置强密码,不要复用 root 等超级用户账号。
    • 注意需要提前建立数据库 capkii,无需手动建表,程序将自动建表。
    • 如果使用本地数据库:部署命令可添加 --network="host" 以使得容器内的程序可以访问到宿主机上的 MySQL。
    • 如果使用云数据库:如果云服务器需要验证身份,需要在连接参数中添加 ?tls=skip-verify
    • 请根据实际数据库配置修改下列参数(或者保持默认值):
      • SQL_MAX_IDLE_CONNS:最大空闲连接数,默认为 100
      • SQL_MAX_OPEN_CONNS:最大打开连接数,默认为 1000
        • 如果报错 Error 1040: Too many connections,请适当减小该值。
      • SQL_MAX_LIFETIME:连接的最大生命周期,默认为 60,单位分钟。
  4. FRONTEND_BASE_URL:设置之后将重定向页面请求到指定的地址,仅限从服务器设置。
    • 例子:FRONTEND_BASE_URL=https://<主服务器域名>
  5. MEMORY_CACHE_ENABLED:启用内存缓存,会导致用户额度的更新存在一定的延迟,可选值为 truefalse,未设置则默认为 false
    • 例子:MEMORY_CACHE_ENABLED=true
  6. SYNC_FREQUENCY:在启用缓存的情况下与数据库同步配置的频率,单位为秒,默认为 600 秒。
    • 例子:SYNC_FREQUENCY=60
  7. NODE_TYPE:设置之后将指定节点类型,可选值为 masterslave,未设置则默认为 master
    • 例子:NODE_TYPE=slave
  8. CHANNEL_UPDATE_FREQUENCY:设置之后将定期更新渠道余额,单位为分钟,未设置则不进行更新。
    • 例子:CHANNEL_UPDATE_FREQUENCY=1440
  9. CHANNEL_TEST_FREQUENCY:设置之后将定期检查渠道,单位为分钟,未设置则不进行检查。
    • 例子:CHANNEL_TEST_FREQUENCY=1440
  10. POLLING_INTERVAL:批量更新渠道余额以及测试可用性时的请求间隔,单位为秒,默认无间隔。
    • 例子:POLLING_INTERVAL=5
  11. BATCH_UPDATE_ENABLED:启用数据库批量更新聚合,会导致用户额度的更新存在一定的延迟可选值为 truefalse,未设置则默认为 false
    • 例子:BATCH_UPDATE_ENABLED=true
    • 若出现数据库连接数过多的问题,可以尝试启用该选项。
  12. BATCH_UPDATE_INTERVAL=5:批量更新聚合的时间间隔,单位为秒,默认为 5
    • 例子:BATCH_UPDATE_INTERVAL=5
  13. 请求频率限制:
    • GLOBAL_API_RATE_LIMIT:全局 API 速率限制(除中继请求外),单 ip 三分钟内的最大请求数,默认为 180
    • GLOBAL_WEB_RATE_LIMIT:全局 Web 速率限制,单 ip 三分钟内的最大请求数,默认为 60
  14. 编码器缓存设置:
    • TIKTOKEN_CACHE_DIR:默认程序启动时会联网下载一些通用的词元的编码,如:gpt-3.5-turbo,在一些网络环境不稳定,或者离线情况,可能会导致启动有问题,可以配置此目录缓存数据,可迁移到离线环境。
    • DATA_GYM_CACHE_DIR:目前该配置作用与 TIKTOKEN_CACHE_DIR 一致,但是优先级没有它高。
  15. RELAY_TIMEOUT:中继超时设置,单位为秒,默认不设置超时时间。
  16. SQLITE_BUSY_TIMEOUT:SQLite 锁等待超时设置,单位为毫秒,默认 3000
  17. TG_BOT_API_KEY:Telegram bot 的 API 密钥,可在 BotFather 获取。
  18. TG_WEBHOOK_SECRET:(可选)webhook 密钥,可自定义。设置该密钥后将使用 webhook 方式接收消息,否则使用轮询(Polling)方式。
  19. USER_TOKEN_SECRET : 设置用户令牌签名密钥,必填,大于 32 位以上, 设置后请勿修改,否则会导致用户令牌失效。
    • 取值请用 openssl rand -base64 48 | tr -d '\n' 生成,且与 SESSION_SECRET 使用不同的值。
  20. HASHIDS_SALT :Sqids 字母表,用于混淆用户令牌信息, 可空,如为空则使用默认字母表abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789,如设置,则需要保证字母表中无重复字符。
  21. AUTO_PRICE_UPDATES:自动更新价格,可选值为 truefalse,未设置则默认为 false。开启后每次启动程序时,会比对数据库中的数据与程序内置的默认模型价格,若数据库中的模型价格有缺失将自动同步到数据库中。需注意:开启后无法删除程序内置的默认模型价格,删除后重启会重新写入,该选项适用于价格与官方保持一致的场景。
  22. AUTO_PRICE_UPDATES_MODE:价格更新模式,可选值为 add:仅增加系统不存在的价格;overwrite:覆盖系统所有价格配置;update:仅更新现有数据;system:使用程序内置价格表初始化价格配置,默认为 system。生产环境建议使用 system 模式,并在 Web 端价格管理模块手动获取价格更新服务数据后逐条核对更新。
  23. AUTO_PRICE_UPDATES_INTERVAL :价格自动更新时间,单位分钟,仅AUTO_PRICE_UPDATES_MODEaddoverwrite时生效,系统将按照此时间周期性从价格更新服务器获取价格配置并更新系统价格。默认值:1440
  24. UPDATE_PRICE_SERVICE :价格更新服务地址,设置之后将从该地址拉取价格数据更新价格。默认为空,为空时不启用外部价格服务(此时 AUTO_PRICE_UPDATES_MODE 请使用 system,即以程序内置价格表初始化)。
  25. USER_INVOICE_MONTH:是否开启用户月度账单功能,开启后系统每月 1 日凌晨生成用户上一月度的数据汇总账单;数据量较大时资源消耗较高,请谨慎开启,默认 false
  26. ROOT_PASSWORD :root 账号的初始密码,仅在数据库中还没有任何用户(即首次启动)时生效,长度需为 8–64 位,超出范围程序会启动失败。
    • 不设置时,程序会生成 16 位强随机密码,并仅在首次启动日志中打印一次。
    • 请在首次登录后立即修改 root 密码,并清理含有初始密码的启动日志。

更多配置项

以下为上方未展开、但代码实际读取的常用配置项,完整列表与默认值请以交付包根目录的 config.example.yaml 为准。

服务器

  • PORT:监听端口,默认 3000
  • GIN_MODE:Gin 运行模式,release / debug,默认 release
  • HTTPS:是否以 HTTPS 对外(影响 cookie Secure 等),默认 false
  • TRUSTED_HEADER:获取真实客户端 IP 的请求头,例如 CF-Connecting-IP
  • SHUTDOWN_TIMEOUT:优雅关闭超时,单位秒,默认 30
  • PPROF_ENABLED:是否开启 pprof 性能分析,默认 false
  • LANGUAGE:默认语言,默认 zh_CN
  • FAVICON:自定义 favicon 路径。
  • GITHUB_PROXY:外部资源下载的代理前缀。

数据库与 Redis

  • SQLITE_PATH:SQLite 数据库文件路径,默认 capkii.db
  • REDIS_DB:Redis DB 序号(连接串未含 DB 时生效),默认 0
  • REDIS_POOL_SIZE:连接池大小,默认 100
  • REDIS_MIN_IDLE_CONNS:最小空闲连接数,默认 10
  • REDIS_POOL_TIMEOUT / REDIS_READ_TIMEOUT / REDIS_WRITE_TIMEOUT:连接池等待 / 读 / 写超时,单位秒,默认 5 / 2 / 2

HTTP 客户端 / 中继超时

  • CONNECT_TIMEOUT:连接超时,单位秒,默认 5
  • RELAY_REQUEST_TIMEOUT:中继单次请求超时,单位秒,默认 300
  • STREAM_IDLE_TIMEOUT:流式空闲超时,渠道流式响应期间每收到数据即重置计时,静默超过该时长则中止流(与墙钟总超时互补,用于精准处理"卡死流"),单位秒,默认 300,设为 0 禁用。
  • RESPONSE_HEADER_TIMEOUT:响应头超时,单位秒,默认 120
  • TLS_HANDSHAKE_TIMEOUT:TLS 握手超时,单位秒,默认 30
  • TLS_INSECURE_SKIP_VERIFY:跳过 TLS 证书校验(不安全),默认 false
  • MAX_CONNS_PER_HOST / MAX_IDLE_CONNS / MAX_IDLE_CONNS_PER_HOST:连接数上限,默认 0(不限)/ 1000 / 200

价格 / 计费

  • CATALOG_PRICING_URL:模型目录价格同步源地址。
  • CATALOG_PRICING_AUTO_SYNC:是否自动同步目录价格,默认 true
  • CHANNEL_PRICING_AUTO_SYNC:是否自动同步渠道价格,默认 true
  • UNPRICED_MODEL_POLICY:未定价模型策略,默认 block
  • UNPRICED_MODEL_DEFAULT_RATIO:未定价模型默认倍率,默认 30.0
  • MODEL_DRIFT_AUTO_CHECK:是否自动检测模型漂移,默认 false

日志 / 指标 / 集成

  • LOG_DIR:日志目录,默认 ./logs
  • LOG_LEVEL:日志级别,debug 输出更详细。
  • LOGS_FILENAME / LOGS_MAX_SIZE / LOGS_MAX_AGE / LOGS_MAX_BACKUP / LOGS_COMPRESS:日志文件名及轮转设置,默认 capkii.log / 100(MB) / 7(天) / 10 / false
  • METRICS_USER / METRICS_PASSWORD/metrics 接口 Basic Auth,留空则不鉴权。
  • MCP_ENABLE:是否启用 MCP,默认 false
  • UPTIME_KUMA_ENABLE / UPTIME_KUMA_DOMAIN / UPTIME_KUMA_STATUS_PAGE_NAME:Uptime Kuma 状态页集成。
  • DISABLE_TOKEN_ENCODERS:禁用本地 token 编码器(改用估算),默认 false
  • TG_HTTP_PROXY:访问 Telegram 的 HTTP/SOCKS5 代理。

通知 / 存储 / 搜索

通知(NOTIFY_*)、对象存储图床(STORAGE_*)、联网搜索(SEARCH_*)等分组配置项较多,键名与默认值请直接参考交付包根目录的 config.example.yaml

Capkii 产品文档