kitsunetrail/stackwatch
GitHub: kitsunetrail/stackwatch
StackWatch 对运行中的 Docker 容器进行每日 CVE 扫描,筛选并优先排序高危漏洞,仅在有可修复项时通过 Slack 通知,帮助自托管用户高效处理安全风险。
Stars: 0 | Forks: 0
# StackWatch
专为自托管玩家和家庭实验室(homelab)爱好者打造。它能帮你完成阅读 Trivy 原始输出这项繁琐的工作,并直接呈现出你*现在*就能修复的内容。
## 功能说明
1. 从 `docker.sock`(只读)读取你正在运行的容器所使用的唯一镜像
2. 使用 [Trivy](https://github.com/aquasecurity/trivy) 扫描每个镜像(CVE 数据库由 Trivy 负责处理)
3. 仅保留 **HIGH / CRITICAL**(高危 / 严重)级别的发现
4. 根据 Trivy 的 `Status`(状态)进行排序(当前可修复 / 等待上游修复 / 不会修复)
5. 按包进行汇总,并标注升级风险(对于编程语言相关的包,semver 会告诉你此次版本升级是安全的还是需要谨慎处理)
6. 将基础操作系统生命周期结束(EOL)标记为最高优先级
7. 每天向 Slack / webhook 发送一次通知 —— 但仅限在有值得采取行动的内容时才发送
## 快速开始
```
# 1. 创建你的 config(只需填入一个 Slack Incoming Webhook URL 即可开始)
cp config.example.yml config.yml
$EDITOR config.yml
# 2. 运行它(以只读方式挂载 docker.sock)
docker run -d --name stackwatch \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-v "$PWD/config.yml:/etc/stackwatch/config.yml:ro" \
ghcr.io/kitsunetrail/stackwatch:latest
```
大功告成 —— 宿主机上的每个容器(无论是通过哪个 compose 项目还是单次的 `docker run` 启动的)都会被每日扫描。
你不需要为每个容器或每个 compose 项目部署一个实例:**每台宿主机只需一个实例**。
### 使用 docker compose 运行
仓库内包含了一个开箱即用的 [docker-compose.yml](docker-compose.yml):
```
cp config.example.yml config.yml # then add your Slack webhook to config.yml
docker compose up -d
docker compose logs -f
```
## 配置说明
请参阅 [config.example.yml](config.example.yml)。你至少需要设置 `notify.slack_webhook_url` 或 `notify.generic_webhook_url` 中的任意一个,即可开始使用。
## 开发说明
```
go test ./... -short # fast unit tests (no Docker / network needed)
go test ./... # also runs integration tests that use Trivy (needs trivy + network)
go build ./...
```
该处理流水线被拆分为了多个小型包:`docker`(枚举) → `scanner`(运行并解析 Trivy) → `analyze`(排序、汇总、评估) → `notify`(格式化与发送),并由 `runner` 将它们串联在一起。
## 开源许可证
[GNU AGPL-3.0](LICENSE)。Copyright (c) 2026 Kitsune Trail.
简而言之:你可以自由地使用、修改和自托管它。如果你将修改后的版本
作为网络服务运行,你必须向其用户公开你修改后的源代码。
标签:DevSecOps, Docker, EVTX分析, Go, Ruby工具, Web报告查看器, 上游代理, 安全告警, 安全防御评估, 日志审计, 自动化运维, 请求拦截