Appearance
环境变量
注意
环境变量优先级高于配置文件。
本页面可能未及时更新,完整可配置键请以交付包根目录的配置文件示例 config.example.yaml 为准。
配置文件转环境变量
将配置文件中的变量名全部大写,遇到子集用下划线连接,例如:
yaml
# 配置文件
user_token_secret: "<32 位以上的随机字符串>"
logs:
filename: "capkii.log" # 日志文件名转换为环境变量:
bash
USER_TOKEN_SECRET="<32 位以上的随机字符串>"
LOGS_FILENAME="capkii.log"环境变量说明
REDIS_CONN_STRING:设置之后将使用 Redis 作为缓存使用。- 例子:
REDIS_CONN_STRING=redis://default:redispw@localhost:49153 - 如果数据库访问延迟很低,没有必要启用 Redis,启用后反而会出现数据滞后的问题。
- 例子:
SESSION_SECRET:设置之后将使用固定的会话密钥,这样系统重新启动后已登录用户的 cookie 将依旧有效。- 取值请用
openssl rand -base64 48 | tr -d '\n'生成强随机字符串,不要使用简单口令。
- 取值请用
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(适配中,欢迎反馈)
- MySQL:
- 请为 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,单位分钟。
- 例子(尖括号为占位符,请替换为实际值):
FRONTEND_BASE_URL:设置之后将重定向页面请求到指定的地址,仅限从服务器设置。- 例子:
FRONTEND_BASE_URL=https://<主服务器域名>
- 例子:
MEMORY_CACHE_ENABLED:启用内存缓存,会导致用户额度的更新存在一定的延迟,可选值为true和false,未设置则默认为false。- 例子:
MEMORY_CACHE_ENABLED=true
- 例子:
SYNC_FREQUENCY:在启用缓存的情况下与数据库同步配置的频率,单位为秒,默认为600秒。- 例子:
SYNC_FREQUENCY=60
- 例子:
NODE_TYPE:设置之后将指定节点类型,可选值为master和slave,未设置则默认为master。- 例子:
NODE_TYPE=slave
- 例子:
CHANNEL_UPDATE_FREQUENCY:设置之后将定期更新渠道余额,单位为分钟,未设置则不进行更新。- 例子:
CHANNEL_UPDATE_FREQUENCY=1440
- 例子:
CHANNEL_TEST_FREQUENCY:设置之后将定期检查渠道,单位为分钟,未设置则不进行检查。- 例子:
CHANNEL_TEST_FREQUENCY=1440
- 例子:
POLLING_INTERVAL:批量更新渠道余额以及测试可用性时的请求间隔,单位为秒,默认无间隔。- 例子:
POLLING_INTERVAL=5
- 例子:
BATCH_UPDATE_ENABLED:启用数据库批量更新聚合,会导致用户额度的更新存在一定的延迟可选值为true和false,未设置则默认为false。- 例子:
BATCH_UPDATE_ENABLED=true - 若出现数据库连接数过多的问题,可以尝试启用该选项。
- 例子:
BATCH_UPDATE_INTERVAL=5:批量更新聚合的时间间隔,单位为秒,默认为5。- 例子:
BATCH_UPDATE_INTERVAL=5
- 例子:
- 请求频率限制:
GLOBAL_API_RATE_LIMIT:全局 API 速率限制(除中继请求外),单 ip 三分钟内的最大请求数,默认为180。GLOBAL_WEB_RATE_LIMIT:全局 Web 速率限制,单 ip 三分钟内的最大请求数,默认为60。
- 编码器缓存设置:
TIKTOKEN_CACHE_DIR:默认程序启动时会联网下载一些通用的词元的编码,如:gpt-3.5-turbo,在一些网络环境不稳定,或者离线情况,可能会导致启动有问题,可以配置此目录缓存数据,可迁移到离线环境。DATA_GYM_CACHE_DIR:目前该配置作用与TIKTOKEN_CACHE_DIR一致,但是优先级没有它高。
RELAY_TIMEOUT:中继超时设置,单位为秒,默认不设置超时时间。SQLITE_BUSY_TIMEOUT:SQLite 锁等待超时设置,单位为毫秒,默认3000。TG_BOT_API_KEY:Telegram bot 的 API 密钥,可在 BotFather 获取。TG_WEBHOOK_SECRET:(可选)webhook 密钥,可自定义。设置该密钥后将使用webhook方式接收消息,否则使用轮询(Polling)方式。USER_TOKEN_SECRET: 设置用户令牌签名密钥,必填,大于 32 位以上, 设置后请勿修改,否则会导致用户令牌失效。- 取值请用
openssl rand -base64 48 | tr -d '\n'生成,且与SESSION_SECRET使用不同的值。
- 取值请用
HASHIDS_SALT:Sqids 字母表,用于混淆用户令牌信息, 可空,如为空则使用默认字母表abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789,如设置,则需要保证字母表中无重复字符。AUTO_PRICE_UPDATES:自动更新价格,可选值为true和false,未设置则默认为false。开启后每次启动程序时,会比对数据库中的数据与程序内置的默认模型价格,若数据库中的模型价格有缺失将自动同步到数据库中。需注意:开启后无法删除程序内置的默认模型价格,删除后重启会重新写入,该选项适用于价格与官方保持一致的场景。AUTO_PRICE_UPDATES_MODE:价格更新模式,可选值为add:仅增加系统不存在的价格;overwrite:覆盖系统所有价格配置;update:仅更新现有数据;system:使用程序内置价格表初始化价格配置,默认为system。生产环境建议使用system模式,并在 Web 端价格管理模块手动获取价格更新服务数据后逐条核对更新。AUTO_PRICE_UPDATES_INTERVAL:价格自动更新时间,单位分钟,仅AUTO_PRICE_UPDATES_MODE为add、overwrite时生效,系统将按照此时间周期性从价格更新服务器获取价格配置并更新系统价格。默认值:1440UPDATE_PRICE_SERVICE:价格更新服务地址,设置之后将从该地址拉取价格数据更新价格。默认为空,为空时不启用外部价格服务(此时AUTO_PRICE_UPDATES_MODE请使用system,即以程序内置价格表初始化)。USER_INVOICE_MONTH:是否开启用户月度账单功能,开启后系统每月 1 日凌晨生成用户上一月度的数据汇总账单;数据量较大时资源消耗较高,请谨慎开启,默认false。ROOT_PASSWORD:root 账号的初始密码,仅在数据库中还没有任何用户(即首次启动)时生效,长度需为 8–64 位,超出范围程序会启动失败。- 不设置时,程序会生成 16 位强随机密码,并仅在首次启动日志中打印一次。
- 请在首次登录后立即修改 root 密码,并清理含有初始密码的启动日志。
更多配置项
以下为上方未展开、但代码实际读取的常用配置项,完整列表与默认值请以交付包根目录的 config.example.yaml 为准。
服务器
PORT:监听端口,默认3000。GIN_MODE:Gin 运行模式,release/debug,默认release。HTTPS:是否以 HTTPS 对外(影响 cookieSecure等),默认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。