zmuke-n-00001 运维操作
通用前提:
- 默认只读。任何启停、重建、改配置都需 owner 明确授权,并记入
docs/CHANGELOG.md。 - 永远不要执行
docker compose down -v(会删卷)。 - 不要执行
env/printenv/ 裸docker inspect/docker compose config。docker inspect必须带排除Env的--format,且注意.Config.Cmd也可能含 token。 - 变更方向:仓库 → 实机,人工执行。
总览
ssh zmuke-brain 'docker ps --format "{{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}"'
ssh zmuke-brain 'systemctl list-units --type=service --state=running --no-pager --no-legend'
ssh zmuke-brain 'systemctl list-timers --no-pager --no-legend'
zmuke-gitea
# 状态与日志
ssh zmuke-brain 'docker ps --filter name=zmuke-gitea --format "{{.Status}}"'
ssh zmuke-brain 'docker logs --tail=100 zmuke-gitea'
# 启停(需授权,在主机上执行)
cd /opt/zmuke-gitea && sudo docker compose up -d
cd /opt/zmuke-gitea && sudo docker compose down
验证:
ssh zmuke-brain 'curl -fsS http://127.0.0.1:3002/api/healthz'
备份:/opt/zmuke-gitea/data 是权威状态,必须纳入加密备份。本仓不承载备份产物, 备份策略见 vault / 备份侧文档。
回滚:镜像按 digest 固定(Gitea 1.27.0),改回上一 digest 后 up -d。
cloudflared
ssh zmuke-brain 'docker ps --filter name=cloudflared --format "{{.Status}}"'
ssh zmuke-brain 'docker logs --tail=50 zmuke-cloudflared' # 期望看到 Registered tunnel connection
# 启停(需授权)
cd ~/devops/docker/cloudflared && docker compose up -d
隧道 ingress 规则在 Cloudflare Zero Trust 控制台,不在主机文件内。 隧道 ID 在文档中一律写 <TUNNEL_ID>。
回滚:镜像为浮动 latest,无固定版本;回滚前需先确定上一可用 digest。
zmuke-pages
ssh zmuke-brain 'curl -fsS -o /dev/null -w "%{http_code}\n" http://127.0.0.1:3080/'
ssh zmuke-brain 'docker logs --tail=50 zmuke-pages'
站点内容由 zmuke-fleet-prototype 的 Actions 发布到 /opt/zmuke-pages。 内容回滚在 fleet 仓重跑发布流水线,不在本仓操作。
act-runner
ssh zmuke-brain 'systemctl is-active act-runner'
ssh zmuke-brain 'sudo journalctl -u act-runner -n 100 --no-pager'
# 重启(需授权)
sudo systemctl restart act-runner
在 Gitea Web 的 Actions Runners 页确认在线。/opt/act-runner 对 adminb84002 不可读,排查需 root。
vault-backup
ssh zmuke-brain 'systemctl list-timers vault-backup.timer --no-pager'
ssh zmuke-brain 'sudo journalctl -u vault-backup.service -n 50 --no-pager'
# 手动触发一次(需授权)
sudo systemctl start vault-backup.service
计划:每日 09:31 UTC,Persistent=true(错过会补跑)。 恢复流程属 vault 模块,见 zmuke-vault 仓,不在此重写。
evebox
ssh zmuke-brain 'curl -s -o /dev/null -w "%{http_code}\n" http://192.168.5.200:5636/'
ssh zmuke-brain 'systemctl is-active suricata'
ssh zmuke-brain 'docker logs --tail=50 evebox'
无数据先查 suricata.service 与 /var/log/suricata/eve.json 是否在产出。 数据在 /opt/evebox/data/*.sqlite(root 属主),重建容器前确认不会被清除。
logging 栈
当前未运行,且归属未定。在 owner 决定前不要启动。 状态确认:
ssh zmuke-brain 'docker ps -a --filter name=slaunchx-loki --format "{{.Names}}\t{{.Status}}"'
站点发布(本仓自身)
python3 scripts/build-site.py
bash scripts/verify-site.sh
git --no-pager diff --check
# 提交 public/ 后, 合并 main -> preview 触发 Gitea Actions 发布