4.0 KiB
4.0 KiB
mihomo-up
一个 bash 脚本,用来在 Linux 服务器上检查、安装、升级、回滚 mihomo 内核(Clash.Meta 的继任者,MetaCubeX 维护的代理核心)。可以直接跑交互菜单,也可以用子命令接进 cron / CI。
脚本只管内核二进制本身:它不会替你创建 systemd 服务、生成配置文件或设置订阅,这些需要你自己先准备好。
特性
- 双模式:终端下无参数运行进入交互菜单;被管道/cron 调用时自动退化为安静的
check - 两道安全闸门:替换前先验证新二进制能运行且版本号对得上,再用新二进制
-t校验你现有的配置,任一失败就中止、不动任何文件 - 自动备份与回滚:替换前把旧版备份到
/var/backups/mihomo/(保留最近 3 份);升级后服务起不来会自动回滚并重启旧版 - curl 一键运行友好:交互输入读
/dev/tty,bash <(curl ...)管道方式运行菜单照样能按键 - 支持 amd64 / arm64 / armv7,amd64 可指定微架构变体(v1/v2/v3/compatible)
环境要求
- Linux + bash
- 依赖命令:
curl、gzip、install、awk(一般发行版自带) - 升级操作需要 root(要写
/usr/local/bin并重启服务) - 服务的启停依赖 systemd 中名为
mihomo的 service;没有的话脚本只替换二进制、跳过重启
快速开始
交互菜单:
bash <(curl -fsSL https://git.im0o.top/im0o/mihomo-up/raw/branch/main/mihomo-up.sh)
命令行:
chmod +x mihomo-up.sh
./mihomo-up.sh check # 只查不改:当前版本 vs 最新版本
sudo ./mihomo-up.sh update # 升级到最新版
sudo ./mihomo-up.sh update --version v1.19.28 # 装指定版本
sudo ./mihomo-up.sh rollback # 回滚到上一个备份
./mihomo-up.sh list # 查看本地备份
菜单里另有:校验配置文件、服务控制(启停/状态/最近日志)等入口。
在 cron / CI 里用
check 的退出码专为脚本化设计:
| 退出码 | 含义 |
|---|---|
| 0 | 已是最新 |
| 10 | 有新版(或未安装) |
| 1 | 出错 |
例子——有新版时自动升级:
mihomo-up.sh check && exit 0
[ $? -eq 10 ] && mihomo-up.sh update -y
加 --json 会额外输出一行机器可读的 JSON,方便接入监控:
{"current":"v1.19.27","latest":"v1.19.28","outdated":true}
选项一览
| 选项 | 作用 |
|---|---|
-y, --yes |
非交互确认,全部默认同意 |
-n, --dry-run |
只打印会做什么,不实际执行 |
--force |
即使版本相同也重装(install 子命令等价于 update --force) |
--version <v> |
指定版本,如 v1.19.28 |
--no-restart |
装完不启动服务 |
--json |
check 时额外输出一行 JSON |
--arch <a> |
覆盖自动识别的架构:amd64 / arm64 / armv7 |
--variant <v> |
amd64 微架构变体:v1 / v2 / v3 / compatible |
--bin <path> |
二进制路径,默认 /usr/local/bin/mihomo |
--conf-dir <dir> |
配置目录,默认 /etc/mihomo |
默认值与环境变量
| 默认值 | 环境变量 |
|---|---|
/usr/local/bin/mihomo |
MIHOMO_BIN |
/etc/mihomo |
MIHOMO_CONF_DIR |
mihomo(systemd 服务名) |
MIHOMO_SERVICE |
/var/backups/mihomo |
MIHOMO_BACKUP_DIR |
备份最多保留 3 份(脚本内常量 KEEP=3)。
升级时发生了什么
- 从 GitHub Releases 下载对应架构的
.gz包并解压 - 闸门 1:新二进制必须能执行,且
-v报告的版本号与目标一致 - 闸门 2:若存在
config.yaml,用新二进制-t校验现有配置,失败即中止 - 备份旧二进制 → 停服务 → 安装新版 → 启动服务
- 启动失败则自动回滚到刚才的备份并重启,最后提示你查
journalctl -u mihomo -n 50
任何一步失败都不会留下半个新系统:要么没动,要么已回滚。