ZMUKE DevOps / CHANGELOG.md

变更记录

每条采用四段式:做了什么 / 为什么 / 影响面 / 回滚点。只追加,不改写既有条目。

2026-08-27 — 建立 zmuke-devops 仓库,导入 zmuke-n-00001 业务运维单元

做了什么

新建本地 Git 仓库 zmuke-devops(main 分支),建立目录骨架、模块边界文档、 主机文档、站点构建与 Gitea Actions 发布流水线,并以只读方式从 zmuke-n-00001 导入下列业务运维单元:

单元导入内容来源
giteacompose.yml + README/opt/zmuke-gitea/compose.yml(原样,无密钥)
cloudflareddocker-compose.yml + .env.example + README~adminb84002/devops/docker/cloudflared/docker-compose.yml(原样,token 为变量引用)
pagescompose.yml(重建件)+ README实机无 compose 源,按 docker inspect 观测重建
act-runneract-runner.service + README/etc/systemd/system/act-runner.service(原样)
vault-backupvault-backup.service.timer + README/etc/systemd/system/(原样)
eveboxcompose.yml(重建件)+ README实机无 compose 源,来源待查,按 docker inspect 观测重建
loggingdocker-compose.yml(已脱敏)+ .env.example + README~adminb84002/devops/docker/logging/docker-compose.yml

同时导入运维手册 docs/runbooks/loki-issue-watcher-auto-500.md (源 ~adminb84002/devops/docs/ops/,已逐行确认无凭据真值)。

脱敏项(提交前逐行核对,只记路径与行号,不记值):

未取回(权限不足,亦不应入库):/opt/act-runner/ 下的运行器注册文件、 /usr/local/sbin/vault-backup.sh

未导入:所有 data/secrets/、sqlite、日志;logging 栈的子配置目录; Hermes 试装目录的任何内容;slaunchx-media 的任何文件。

记录本次决策 D1(三模块边界)、D2(Pages + Access 发布)、D3(zmuke-router / zmuke-ad-browser 重新归位,工作待办)、D4(zmuke-gost 归 fleet,合并待办)。

为什么

zmuke-n-00001 上的业务运维单元此前没有版本化的记录源:四个运行中的业务 容器全部由 docker run 创建,磁盘上的 compose 文件与运行态未收敛,部分单元 (zmuke-pagesevebox)在全主机范围内找不到任何启动来源。这使得变更无法 追溯、回滚点不明确。按 D1 确定的模块边界,这些内容归 devops 模块,需要一个独立 于 fleet 与 vault 的仓库承载。

影响面

回滚点

本次核实发现的残留与异常

  1. Hermes 试装残留~adminb84002/devops/docker/hermes/,2026-05-07 试装 nousresearch/hermes-agent:latest,无容器运行,data/secrets/ 为 root 属主,compose 声明挂载 ./secrets/.netrc待 owner 核查后清理,本仓未复制。
  2. 跨组织负载slaunchx-media-mysql / slaunchx-media-redis (compose 项目 slaunchx-media,~adminb84002/workspace/claude/slaunchx-media-platform) 是 SlaunchX 的业务负载,却运行在 ZMUKE 主机上,且端口绑 0.0.0.0:3307 / 0.0.0.0:6380。登记为跨组织残留,归 slaunchx-devops,本仓不导入其文件。
  3. logging 栈未运行且归属存疑~adminb84002/devops/docker/logging/ 是 SlaunchX 观测栈副本(slaunchx-* 容器名、gitea.slaunchx.cc、SlaunchX targets), docker ps 中无任何对应容器。归属待 owner 决定,决定前不要启动。
  4. Cloudflare Tunnel token 暴露在容器命令行zmuke-cloudflared--token <值> 启动,docker inspect.Config.Cmd 可读到完整 token。 建议改为环境变量或 credentials 文件注入并轮换该 token。本仓未做变更。
  5. 运行态与 compose 全面漂移zmuke-giteazmuke-pageszmuke-cloudflaredeveboxcom.docker.compose.* label 全部缺失。 zmuke-cloudflared 的实际容器名与 compose 中的 container_name: cf-tunnel 不符。
  6. 浮动镜像标签 — cloudflared、nginx、evebox 均未按 digest 固定,无确定回滚点。
  7. 来源缺失zmuke-pagesevebox~adminb84002/usr/local/sbin/etc/systemd 范围内(排除会话日志)均无 compose / unit / 启动脚本命中。
  8. 其它 /opt 残留openvpn-ui.old-backup(fleet,待清理)、 slaunchx-fleet-backups(SlaunchX)、apache-maven-3.9.16; 主机级 redis-server.service 用途待查。

Gitea 实例设置核实(非密钥)

设置
ENABLE_PUSH_CREATE_ORGfalse
ENABLE_PUSH_CREATE_USERfalse
DEFAULT_PRIVATEprivate
DISABLE_REGISTRATIONtrue

组织仓库不支持 push-to-create,zmuke/zmuke-devops 必须由 owner 先在 Web 端建仓;新建仓库默认可见性为 private。