github komari-monitor/komari Snapshot-2607112238

latest release: Snapshot-2607120101
pre-release5 hours ago

主要更新内容

  • 指标存储全面迁移:运行期监控数据读写(records、ping_records、GPU 记录)全部走 metric store(默认 SQLite ./data/metrics.db 或配置的 MySQL/PostgreSQL),旧表仅作为一次性迁移数据源。
  • 新增数据库运维 API:支持 vacuum 和查询数据库大小(PR #578)。
  • 指标保留策略管理:可配置 metric_retention_days,按时间自动清理过期数据。
  • 指标滚动聚合(Rollup):定时压缩原始数据并保留分桶摘要,支持可配置保留层级(1min/5min/1h)。
  • 存储后端热迁移:支持运行时切换 metric DB(如 SQLite → MySQL),可暂停/恢复/查询进度。
  • 安装脚本增强:支持稳定版/快照版通道选择,新增 TUI 交互(whiptail/dialog 及纯文本回退)。
  • 身份模型重构:引入 Principal 结构体,区分匿名、Agent、管理员、API Key 四种主体,权限由角色集合判定(不再是线性等级)。
  • 统一身份识别入口IdentifyPrincipal 集中处理 API Key / Session / Client Token 三种认证,消除三处重复逻辑。
  • 移除废弃功能:内置 Cloudflare Tunnel 支持、Cloudflare Access OAuth 提供者、旧 record_*ping_record_* 配置项。
  • 构建 CI 优化:前端构建提取为独立 Action,新增 Snapshot 自动发布工作流。

Bug修复

  • 安全:RPC 边界强制要求敏感操作(如 admin:exec)通过双因素认证(2FA)(PR #571)。
  • 安全:修复 DeleteTheme/UpdateTheme/SetTheme 中的路径穿越漏洞,主题名称仅允许字母数字下划线连字符(PR #584)。
  • 修复common:getNodes RPC 返回 uuid-keyed map 而非数组,确保节点顺序不变(PR #566)。
  • 修复:Telegram 通知在非 200 响应时返回 API 错误描述而非仅状态码(PR #583)。
  • 修复:临时分享访客绕过私有站点限制。
  • 修复:SQLite 数据库锁定问题,避免并发 record 写入报 database is locked
  • 修复:指标聚合查询保留系列身份(Tags),不同标签序列不再被错误合并。
  • 修复:metrics 迁移性能优化,使用批量写入和 keyset 分页。

其他

  • 配置文件模型清理:删除 cloudflare_tunnel_tokenrecord_enabledrecord_preserve_timeping_record_preserve_time,统一使用 metric_retention_days
  • 启动阶段重构为显式生命周期(Bootstrap → InitStores → InitProviders → StartBackground → BuildRouter → Run → Shutdown)。
  • 热重载管理统一到 ReloadManager,每个 handler 独立 panic 隔离。
  • 删除 utils/cloudflared 包及相关测试。
  • 重构 traffic_report 通知模块,改用 metric store 查询流量增量。
  • CI 工作流精简:复用前端构建 Action、Zig 工具链缓存,仅限 PR 触发构建。

What's Changed

  • fix(rpc): 在 RPC 边界强制对敏感操作进行双因素认证(2FA) by @carbofish in #571
  • fix: preserve node order in common:getNodes RPC by @yuanhhs in #566
  • feat: add database vacuum and size API endpoints by @Akizon77 in #578
  • fix(security): prevent path traversal in theme name (DeleteTheme/UpdateTheme/SetTheme) by @guocn in #584
  • fix(telegram): 非 200 响应时返回 API 错误描述而非仅状态码 by @Torther in #583

Commits

New Contributors

Full Changelog: 1.2.5...Snapshot-2607112238

Don't miss a new komari release

NewReleases is sending notifications on new releases.