写出配置落盘的保护链路

顺序是:检查基准是否过时 → 自己校验 → 临时文件上跑 mihomo -t → 备份 → 写入 → 重载,
最后两步任一失败就从备份还原并让内核载回原样。

自己校验那一步不能省:实测 v1.19.29,入站的 proxy 指向不存在的出站时 mihomo -t 会通过、
重载会成功,直到有流量走到那个入站才在日志里报错。这类错误只有 Patchbay 查得出来。

路径在读环境变量时就转成绝对路径,因为内核的 PUT /configs 拒绝相对路径。
This commit is contained in:
im0o
2026-08-10 02:56:04 +08:00
parent 26bb0f3456
commit ac91b96ef8
7 changed files with 578 additions and 9 deletions
+19 -9
View File
@@ -1,15 +1,25 @@
# 复制成 .env 再填。.env 已在 .gitignore 里,不会被提交。
# mihomo 管理接口的地址。开发时通过 SSH 隧道映射到本机:
# ── 本地开发(默认这一套)────────────────────────────────
# 用仓库里的 dev/config.yaml 和本地内核,整条「写回 → 校验 → 重载 → 失败还原」
# 都能在本机真跑一遍,包括故意写坏配置看它怎么恢复。
# 端口刻意避开 mihomo 的默认值(7890 / 9090),免得和机器上其它内核打架。
MIHOMO_API=http://127.0.0.1:19090
MIHOMO_SECRET=dev-secret-local-only
PATCHBAY_CONFIG=./dev/home/config.yaml
PATCHBAY_MIHOMO_BIN=../binary/mihomo-windows-amd64-v3-go125.exe
PATCHBAY_MIHOMO_HOME=./dev/home
# ── 想对着真实机器调试时改成这一套 ──────────────────────
# 先开隧道把管理接口映射到本机:
# ssh -N -f -L 9090:127.0.0.1:9090 用户名@服务器地址
MIHOMO_API=http://127.0.0.1:9090
# 注意:隧道只转发管理接口。配置文件和内核在远端,所以 mihomo -t 校验和
# PUT /configs 重载都作用不到本地的文件,这套只适合读真实的订阅和线路数据。
# MIHOMO_API=http://127.0.0.1:9090
# MIHOMO_SECRET=服务器上 secret: 那一行的值
# PATCHBAY_CONFIG=../pkgs/sample-config.yaml
# 管理接口的访问密钥,即配置文件里 secret: 那一行的值
MIHOMO_SECRET=
# 要编辑的配置文件路径。开发时指向本地副本,部署时指向 /etc/mihomo/config.yaml
PATCHBAY_CONFIG=../pkgs/sample-config.yaml
# Patchbay 自己监听的地址和端口。默认只监听本机,远程访问走 SSH 隧道。
# ── Patchbay 自己 ──────────────────────────────────────
# 默认只监听本机,远程访问走 SSH 隧道。
PATCHBAY_HOST=127.0.0.1
PATCHBAY_PORT=7580