You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Stack: flaresolverr
Host: infra-docker-01
Current image: ghcr.io/flaresolverr/flaresolverr@sha256:old
New image: ghcr.io/flaresolverr/flaresolverr@sha256:new
Policy: auto
Backup: not required
Health check: HTTP GET / on port 8191
Rollback: previous digest / previous compose commit
Risk: low
背景
Astralith v1.0.0 已经具备 AI-native GitOps control plane 的核心原型:GitOps 仓库配置、Desired Resource 解析、Actual Resource 写入、Desired / Actual diff、Apply Plan、Policy Result、Docker Compose Apply Run、AI Proposal 与 Operation Module Proposal。
但当前 v1.0.0 的 GitOps / Docker Compose 能力仍然偏 MVP / 演示闭环:
localhostinventory 演示执行,还没有真正根据stack.yaml选择受管主机。compose.yaml并检测 privileged、host network、危险挂载、公开端口、latest 镜像等风险。在整理 homelab / Docker Compose 管理方案时,原本考虑引入 Watchtower 之类的自动更新器,用于让低风险容器自动获取新镜像,从而更快获得安全修复。
但后续发现
containrrr/watchtower上游已经归档,且在 Docker 29.x 环境下还出现过 Docker API 版本兼容问题。因此,不希望把一个缺乏未来维护承诺的项目作为新架构的核心依赖。这件事可以转化为 Astralith 后续的重要能力方向:
新定位
本 issue 是 issue #1 之后的落地路线,重点从“AI-native GitOps 控制平面原型”推进到:
目标不是简单做到:
而是做到:
设计原则
Desired State Schema 草案
Host 声明
说明:
private_key_path只保存路径,不保存私钥内容。target_host查找到对应 Host / inventory。Stack 声明
Compose 文件
更新策略分级
建议将服务分为四类。
Class A:Auto Candidate,可自动更新候选
适合对象:
示例:
策略:
Class B:Notify / Semi-auto,仅提醒或半自动更新
适合对象:
示例:
策略:
Class C:Manual,仅手动更新
适合对象:
示例:
策略:
Class D:Frozen,冻结更新
适合对象:
策略:
中立元数据标签
为了避免绑定 Watchtower 等具体工具,可以在 Compose 中使用 Astralith 自己的中立 label。
建议枚举值:
示例:
平台需要支持的核心能力
1. 正式 Desired State Parser
当前简单 key/value parser 不足以支撑真实 GitOps Compose 管理。后续应引入
PyYAML或同类库,支持:验收:
hosts/*.yaml、stacks/*/stack.yaml、stacks/*/compose.yaml。target_host、stack_path、compose_file、update_policy、healthcheck、rollback等字段。2. 真实多主机 GitOps Apply
当前 Apply 不应继续停留在 localhost demo。后续应实现:
验收:
target_host: monitoring-01。monitoring-01上创建/opt/stacks/<stack>并部署服务。3. Actual State Scanner
Actual Resource 不应主要依赖手动 upsert。平台需要只读扫描目标主机:
建议采集:
docker compose ls --format json docker ps --format json docker images --digests --format json find /opt/stacks -maxdepth 2 -name compose.yaml sha256sum /opt/stacks/*/compose.yaml扫描结果写入:
验收:
4. Desired / Actual Diff 完整化
当前 diff 应补齐 orphan / delete candidate 场景。
需要支持:
默认策略:
验收:
5. Compose Policy Engine
Policy validation 应真正解析 compose.yaml,而不是只看 stack.yaml 的单个 image 字段。
初期规则:
privileged: true。network_mode: host。pid: host。/var/run/docker.sock。/、/etc、/boot等关键路径。:latest镜像。restart策略的长期服务。0.0.0.0暴露。.env、私钥、token、password 字段疑似进入 Git 时阻断。验收:
6. 镜像更新检测
需要支持:
初期可以先做 digest 检测,不急着做 semantic version 分类。
验收:
7. Update Plan 生成
执行前生成结构化更新计划。
示例:
Update Plan 应包含:
8. Backup Plan
针对不同服务支持不同备份策略:
none:无状态服务,不备份。config_only:备份/config或项目配置目录。sqlite:备份 SQLite 数据库。metadata_only:只备份元数据,不备份大媒体库。snapshot_required:需要 PVE / 文件系统快照,平台只提示或调用外部脚本。custom_command:后续可扩展,但必须受控且人工审核。验收:
9. Health Check
更新后执行:
验收:
10. Rollback Plan
如果更新失败:
验收:
11. Audit Log
每次更新都应该记录:
数据模型草案
在已有 GitOps 表基础上,后续可增加:
也可以先复用现有
ResourceDiff/ApplyPlan/GitOpsApplyRun,等更新能力稳定后再拆专表。前端页面规划
1. Compose Stacks
展示:
2. Actual State Scanner
展示:
3. Compose Policy Results
展示:
4. Image Updates
展示:
5. Update Plans
展示:
6. Update Runs / Audit Log
展示:
与 AI-native GitOps Roadmap 的关系
本 issue 不是替代 issue #1,而是 issue #1 的工程落地延伸。
issue #1 关注:
本 issue 关注:
AI 在本 issue 中的合理角色:
AI 不应该:
分版本实现路线
v1.1.0 — Real Multi-host GitOps Compose Apply
目标:把 v1.0.0 的 localhost demo apply 升级为真实多主机 Compose Apply。
范围:
docs/desired-state-schema.md。hosts/*.yaml、stacks/*/stack.yaml、stacks/*/compose.yaml。target_host、stack_path、compose_file。/opt/stacks/<stack>。docker compose config、docker compose pull、docker compose up -d。验收:
monitoring-01。monitoring-01上部署该 stack。v1.2.0 — Actual State Scanner and Orphan Diff
目标:让平台能从目标主机自动扫描实际状态,并识别漂移。
范围:
验收:
v1.3.0 — Compose Policy Engine
目标:把策略校验从演示规则升级为真实 Compose 风险检查。
范围:
验收:
privileged: true或 docker.sock 挂载的 compose 会被高危标记。v1.4.0 — Image Update Detection MVP
目标:实现只检测、不执行的容器镜像更新能力。
范围:
验收:
v1.5.0 — Human-approved Update Plan
目标:让平台能生成人工审批的容器更新计划。
范围:
docker compose pull和docker compose up -d。验收:
v1.6.0 — Backup, Healthcheck and Rollback
目标:让更新编排具备安全闭环。
范围:
backup_policy。验收:
v1.7.0 — Limited Automatic Updates
目标:在安全闭环完整后,允许低风险服务有限自动更新。
范围:
dev.nesoriel.update.policy=auto且 risk low 的服务进入自动更新。验收:
非目标
暂时不做:
.env、密钥或原始私钥提交到公开仓库。毕设与长期价值
这个路线可以让 Astralith 区别于普通面板、Watchtower 类自动更新器或简单脚本:
对毕业设计来说,它可以作为 v1.0.0 之后的后续工作与展望;对个人 homelab 来说,它可以成为 Astralith 真正开始管理多台服务器的关键路线。