HitKeep 2.15.1 配置参数详解

HitKeep 2.15.1 配置参数详解:四层配置优先级与覆盖实测、config init/validate 用法、17 组 100 个配置项逐项拆解、生产配置模板与高频坑位。

HitKeepHitKeepGo自托管2026/11/01

HitKeep 2.15.1 配置参数详解

目标:把 HitKeep v2.15.1 的 100 个配置项一次讲透——查看方式、四层修改途径与优先级、17 个分组的逐项含义与默认值、生产模板与高频坑位。全部内容基于 v2.15.1 容器与二进制的真实实测,配合官方配置参考交叉核对。

一、环境信息

本文实测环境与证据来源:

  • 版本基线:v2.15.1(容器 ghcr.io/hitkeep/hitkeep:2.15.1,与从镜像提取的 linux-amd64 二进制一致)
  • 旗标全集证据:hitkeep --help 全量输出 100 个旗标(实测捕获 101 行 usage 文本)
  • YAML 全集证据:hitkeep config init 生成的配置模板(实测 11276 字节、权限 0600),与仓库 hitkeep.example.yaml 逐项一致:76 个可见键 + 24 个注释占位的敏感键 = 100 项
  • 分组证据:模板按 17 个分组组织(general/data/custom-tracking/spam-filtering/backups/s3/clustering/oauth/mcp/ai/webhooks/search-console/social-sign-in/email/rate-limits/trusted-proxies/internals)
  • 环境变量等价证据:HITKEEP_HTTP_ADDR=:9090 启动实测(见 3.2);部署栈实测 HITKEEP_PUBLIC_URL、HITKEEP_BACKUP_PATH、HITKEEP_MCP_ENABLED 均在启动日志的 PublicURL/BackupPath/MCPEnabled 字段生效
  • 官方口径来源:https://hitkeep.com/reference/configuration/ 与二进制安装指南(查询日期 2026-11-01)

二、前置条件

  • 一份可运行的 HitKeep v2.15.1(容器 docker exec 进容器执行,或宿主二进制;注意二进制基线为 Ubuntu 22.04 构建、glibc 2.35+,老系统请用容器);
  • 了解自己的部署形态:容器部署以环境变量为主,原生部署可选 YAML/旗标;
  • 生产环境准备好 openssl(生成 jwt-secret)与备份目标。

三、参数查看与修改方式

3.1 查看全量参数:两条互补路径

路径一:--help 旗标清单(注意怪癖:usage 走 stderr,且打印后不会退出、会继续启动服务,务必配合超时或后台捕获):

hitkeep --help 2> usage.txt &
sleep 1 && kill %1

实测得到 100 个旗标及默认值,例如(节选):

      --http-addr string                             HTTP listen address (default ":8080")
      --log-level string                             Log level (debug/info/warn/error) (default "info")
      --data-retention-days int                      Default data retention in days (default 365)
      --bind-addr string                             Address for cluster gossip (default "0.0.0.0:7946")

路径二:config init 生成带注释的 YAML 模板(推荐,含每个参数的类型与默认值注释):

hitkeep config init --output /wk/hitkeep.yaml

实测回显:

Created configuration file /wk/hitkeep.yaml
ls -l /wk/hitkeep.yaml
-rw------- 1 root root 11276 Nov  1 04:26 /wk/hitkeep.yaml

模板内容即官方 hitkeep.example.yaml 同款,按 17 组组织,形如:

# general settings
# HTTP listen address (type: string; default: ":8080")
http-addr: ":8080"
# Log level (debug/info/warn/error) (type: string; default: "info")
log-level: "info"
# Secret key for JWT (type: string; default: "unset"; sensitive; derived)
# jwt-secret:

3.2 修改途径与优先级(附实测)

四条途径按优先级从高到低:命令行旗标 > 非空环境变量 > YAML 配置文件 > 默认值。官方二进制指南原文:"Flags and non-empty environment variables still override file values."

环境变量命名规则:HITKEEP_ + 旗标名大写、- 换 _(如 http-addr → HITKEEP_HTTP_ADDR)。覆盖实测——在容器内以 HITKEEP_HTTP_ADDR=:9090 启动临时实例,首行启动日志的配置快照:

"HTTPAddr":":9090"

对照组(不带该变量):

"HTTPAddr":":8080"

部署栈中的等效实证:compose 注入的 HITKEEP_PUBLIC_URL=http://localhost:8128、HITKEEP_BACKUP_PATH=/var/lib/hitkeep/backups、HITKEEP_MCP_ENABLED=true 分别体现在启动日志 "PublicURL":"http://localhost:8128"、"BackupPath":"/var/lib/hitkeep/backups"、"MCPEnabled":true。

3.3 配置文件校验

YAML 写好后先校验再上线(--config 必须放在所有参数最前,官方指南明确):

hitkeep config validate --config /wk/hitkeep.yaml

实测回显:

Configuration file /wk/hitkeep.yaml is valid

3.4 敏感参数的注释占位机制

config init 对 24 项敏感参数(jwt-secret、public-url、mail-password、全部 *-client-secret、S3 三件套等)只生成注释掉的键名,不生成值——避免模板文件本身泄密。启用时取消注释手动填值,或保持注释改用环境变量注入(推荐后者,密钥不落盘)。

四、参数总览

17 个分组、100 个配置项的分布与一句话定位:

分组项数定位
general8监听地址、JWT、日志、会话时长
data15数据库文件、DuckDB 调优、保留与导入暂存
custom-tracking3自定义追踪域名的 DNS 与 TLS 模式
spam-filtering3OSS 垃圾流量列表的刷新与缓存
backups3自动备份的间隔、目标与保留
s37备份上传对象存储的连接参数
clustering3gossip 集群绑定、加入与节点名
oauth1预注册公共 OAuth 客户端
mcp6只读 MCP 端点与官方文档工具
ai11AI 功能总开关与预算限制
webhooks9外发 webhook 的并发/重试/保留
search-console3Google Search Console OAuth
social-sign-in8Google/GitHub/Microsoft 社交登录
email9SMTP 发信
rate-limits8ingest/API/auth/webhook 四类限流
trusted-proxies1反代网段信任列表
internals2内嵌 NSQ 的回环绑定

五、核心参数分类详解

5.1 general(8 项)

参数默认值说明
http-addr:8080HTTP 监听地址,仪表盘/ingest/API 共用
public-url未设(敏感)浏览器可见地址,签发 JWT 的 iss/aud,反代/子路径部署的关键项
jwt-secret未设(敏感)JWT 签名密钥,openssl rand -hex 32 生成 64 位 hex;更换会使全部会话失效
log-levelinfodebug/info/warn/error
auth-session-minutes15登录会话时长(分钟),部署篇实测会话接口返回 duration_seconds: 900
auth-session-warning-seconds120到期前提醒秒数
auth-remember-me-days30「记住我」时长(天)
healthcheckfalse以健康检查客户端运行(容器 HEALTHCHECK 机制内部使用,勿手改)

5.2 data(15 项)

参数默认值说明
db-pathhitkeep.db主库(共享元数据)文件路径
data-pathdata可写数据根目录:租户库、DuckDB 扩展缓存、恢复包都在其下
archive-patharchive超过保留期的归档目录
data-retention-days365原始数据保留天数,过期归档
db-compact-on-starttrue启动与租户打开时压缩碎片、把删除释放的空间还给文件系统
db-checkpoint-interval5周期性 DuckDB checkpoint(分钟),0 关闭
db-auto-recovertrue识别性非唯一索引损坏时自动恢复(先落一个受限权限的恢复包)
db-auto-recover-walfalse恢复后是否接受绕过非迁移 WAL、丢弃其增量(默认保守关闭)
db-recovery-path派生恢复包目录,默认 <data-path>/recovery(部署篇实测存在)
duckdb-memory-limit派生每库内存上限;none 用 DuckDB 默认(80% 系统内存);实测 15Gi/6vCPU 容器派生 7714MiB
duckdb-threadsGOMAXPROCS每库线程数,实测 6
import-max-stage-bytes107374182400导入暂存上传上限(100GiB)
import-stage-retention-days7过期暂存文件清理天数,0 关闭
api-url未设(敏感)离线导入客户端基址,缺省回落 public-url
api-token未设(敏感)离线导入客户端 token

5.3 backups + s3(3 + 7 项)

参数默认值说明
backup-interval60备份间隔(分钟);部署篇实测生成 backups/shared/<时间戳>/ Parquet 快照集
backup-retention24保留快照份数
backup-path未设(敏感)备份目标:本地目录或 s3:// 桶
s3-regionus-east-1区域
s3-use-ssltrue本地 MinIO 走 HTTP 时设 false
s3-endpoint未设(敏感)自定义端点(MinIO/R2/Spaces)
s3-url-style""path 或 vhost 寻址
s3-access-key-id / s3-secret-access-key / s3-session-token未设(敏感)静态密钥与 STS 临时凭证

5.4 clustering + internals(3 + 2 项)

参数默认值说明
bind-addr0.0.0.0:7946gossip 监听;单机本地跑建议 127.0.0.1:7946(官方排障节同口径)
join-addr""要加入的 peer 地址,多节点集群用
node-name派生默认 主机名-时间戳(部署篇日志可证)
nsq-tcp-address127.0.0.1:4150内嵌 NSQ TCP,仅回环,不要暴露
nsq-http-address127.0.0.1:4151内嵌 NSQ HTTP,仅回环

5.5 rate-limits + trusted-proxies(8 + 1 项)

参数默认值说明
ingest-rate-limit / ingest-burst20 / 40埋点上报限流(每秒令牌 / 突发)
api-rate-limit / api-burst10 / 20REST API 限流
auth-rate-limit / auth-burst2 / 5登录/认证限流(公网暴露时重点关注)
webhook-rate-limit / webhook-burst30 / 60外发 webhook 限流
trusted-proxies*信任的反代 CIDR;默认信任全部转发头,直连部署可保持默认,反代部署务必收紧为代理网段,否则访客 IP 可被伪造

5.6 mcp + ai(6 + 11 项)

参数默认值说明
mcp-enabledfalseleader-only 的只读 MCP 服务器;部署篇实测 compose 开启后日志 MCPEnabled:true
mcp-path/mcpMCP 挂在主 HTTP 端口上的路径
mcp-max-range-days366MCP 查询日期跨度上限
mcp-docs-enabledtrue允许 MCP/Ask AI 读取官方文档(离线环境设 false)
mcp-docs-urlhttps://hitkeep.com(敏感)官方文档基址
mcp-docs-cache-minutes60文档抓取缓存
ai-enabledfalseAI 功能总开关
ai-provider / ai-model""GoAI 路由的 provider key 与模型标识
ai-api-key / ai-base-url / ai-region未设/""(敏感)显式凭证/网关/区域(优先用 provider 原生环境变量)
ai-timeout-seconds30请求超时
ai-request-limit / ai-token-limit100 / 100000每预算窗口请求与 token 上限,0 关闭
ai-budget-window1440预算窗口(分钟)
ask-ai-enabledfalse仪表盘 Ask AI(需 ai-enabled 且已配模型)

5.7 webhooks(9 项)

参数默认值说明
webhook-delivery-timeout10单次投递超时(秒)
webhook-delivery-concurrency8全局并发投递上限
webhook-per-endpoint-concurrency1单个 webhook 的并发(默认串行保序)
webhook-max-attempts6最大投递尝试
webhook-retry-base-seconds30首次重试延迟
webhook-retry-max-seconds21600重试退避上限(6 小时)
webhook-sweep-seconds30待投递恢复扫描间隔
webhook-retention-days30投递日志保留
webhook-allow-development-targetsfalse允许 HTTP/私网目标(仅开发自测开启)

5.8 email + search-console + social-sign-in + custom-tracking + spam-filtering + oauth(9 + 3 + 8 + 3 + 3 + 1 项)

参数默认值说明
mail-driver / mail-encryptionsmtp / tls发信驱动与加密
mail-host / mail-port"" / 587SMTP 主机与端口;mail-host 为空时邮件功能整体关闭
mail-username / mail-password"" / 未设(敏感)SMTP 认证
mail-from-address / mail-from-namehitkeep@localhost / HitKeep发件人
mail-insecure-skip-verifyfalse跳过证书校验(自签 SMTP 才用)
google-search-console-client-id / -client-secret / -redirect-url"" / 未设(敏感)Search Console OAuth 三件套
social-google-client-id / -client-secret"" / 未设(敏感)Google 社交登录(成对配置才显示入口)
social-github-client-id / -client-secret"" / 未设(敏感)GitHub 社交登录
social-microsoft-client-id / -client-secret / -tenant"" / 未设(敏感)/ commonMicrosoft 社交登录与租户选择
social-signup-enabledfalse是否允许社交渠道注册新账号
custom-tracking-dns-target""自定义追踪域需指向的 DNS 目标,默认取 public-url 主机
custom-tracking-tls-modeexternalexternal 或 caddy-on-demand
caddy-tls-ask-token未设(敏感)Caddy on-demand TLS ask 端点的路径令牌
spam-filter-auto-updatefalseleader 自动刷新 OSS 垃圾列表(离线/隔离环境保持 false;部署篇实测开启后生成 96KB 的 spam-filter.json)
spam-filter-path""缓存路径,默认 <data-path>/spam-filter.json
spam-filter-update-interval1440刷新间隔(分钟)
oauth-clients[](敏感)预注册公共 OAuth 客户端 JSON 数组(精确 redirect URI;不支持 client secrets)

六、生产配置模板

形态一:YAML + 环境变量注密(原生部署推荐)——非敏感项进文件,敏感项走环境:

# general
public-url: "https://analytics.example.com"
http-addr: ":8080"
log-level: "info"

# data
data-path: "/var/lib/hitkeep/data"
archive-path: "/var/lib/hitkeep/archive"
db-path: "/var/lib/hitkeep/data/hitkeep.db"
data-retention-days: 365
duckdb-memory-limit: "2GB"

# backups(本地目录;对象存储改 s3:// 并配 s3-* 组)
backup-path: "/var/lib/hitkeep/backups"
backup-interval: 60
backup-retention: 24

# spam / mcp
spam-filter-auto-update: true
mcp-enabled: true
mcp-path: /mcp

# 安全
trusted-proxies: "10.89.0.0/16"
auth-rate-limit: 2
auth-burst: 5

# email
mail-host: "smtp.example.com"
mail-port: 587
mail-from-address: "analytics@example.com"
mail-from-name: "Analytics"

配套环境变量(systemd drop-in 或 compose 注入,文件保持 0600):

HITKEEP_JWT_SECRET=<openssl rand -hex 32 生成>
HITKEEP_MAIL_PASSWORD=<SMTP 密码>

启动:hitkeep --config /etc/hitkeep/hitkeep.yaml(--config 必须最前)。

形态二:纯环境变量(容器部署推荐)——见部署篇 compose.yml,每个 YAML 键都有 HITKEEP_ 等价物。改完任一形态后执行 hitkeep config validate 或观察启动日志的配置快照行确认生效。

七、常见问题

1. 改了参数不生效? 按优先级排查:旗标 > 非空环境变量 > YAML > 默认值。特别注意「非空」——空字符串环境变量不参与覆盖;容器里挂了 YAML 但没加 command: ["--config", ...] 时文件根本不会被读取,且 --config 必须放参数最前。

2. config init 生成的文件里找不到 jwt-secret 的值? 24 项敏感参数只生成注释键名(防模板泄密),需手动取消注释填值或用环境变量注入,见 3.4。

3. DuckDB 内存上限「派生」是什么逻辑? 按运行环境自动推导:本系列实测 15Gi 内存、6 vCPU 的宿主上容器派生 7714MiB(约为宿主一半)与 6 线程;显式 duckdb-memory-limit: "2GB" 可收紧;none 则用 DuckDB 默认的 80% 系统内存——容器里务必显式设置,防止 OOM。

4. 启动日志出现 Mailer configuration rejected 警告? mail-host 为空时邮件子系统拒绝加载(启动日志实录该 WARN),邀请/密码重置/邮件报告不可用,统计与告警之外的其余功能不受影响。

5. 反代后面访客 IP 全是代理 IP? trusted-proxies 没有收紧或反代未传 X-Forwarded-For。把代理网段写进 trusted-proxies(多个用逗号分隔),并确认官方 trusted-proxies 指南中的转发头配置。

6. 登录十几分钟就掉线? auth-session-minutes 默认 15 分钟(部署篇实测会话接口 duration_seconds:900)。浏览器端勾选「记住我」走 auth-remember-me-days(30 天),或按需调大 auth-session-minutes。

7. 离线环境怎么配? spam-filter-auto-update: false、mcp-docs-enabled: false(默认会访问 hitkeep.com 拉文档),备份用本地目录而非 s3://;DuckDB 扩展已随包内置、不会启动时联网下载。

8. 参数到底有多少个?会不会有遗漏? 以 hitkeep --help(100 个旗标)与 config init 模板(100 个 YAML 键)互为全集校验:实测两者一一对应(无仅存在于单侧的参数);新增参数以当次 --help 输出为准,本文口径为 v2.15.1(2026-11-01 实测)。

八、参考链接

  • 官方配置参考:https://hitkeep.com/reference/configuration/
  • 官方二进制安装指南(优先级与 --config 口径来源):https://hitkeep.com/guides/installation/binary/
  • 仓库配置模板:https://raw.githubusercontent.com/HitKeep/hitkeep/main/hitkeep.example.yaml
  • 受信代理指南:https://hitkeep.com/guides/installation/trusted-proxies/
  • 备份与恢复:https://hitkeep.com/guides/data/backups-and-restore/
  • 本系列:《HitKeep 2.15.1 Docker Compose 部署指南》(环境变量实战与持久化)、《HitKeep 介绍与选型指南》(认知与选型)、《HitKeep 2.15.1 常用 CLI 命令与工具详解》(config 子命令与排障实录)
HitKeep 2.15.1 配置参数详解 - Quzuo