为什么要在 Linux 上直接跑 Mihomo

很多教程聚焦 Windows 与 macOS 下的 Clash Verge Rev 图形界面,但在无桌面环境的服务器、轻量发行版,或你只想用终端与配置文件管理一切时,直接在系统里运行 Mihomo(原 Clash Meta 内核)会更干净、更可脚本化。Mihomo 与主流 Clash 配置高度兼容,同一份 config.yaml 往往只需放好路径即可工作;再用 systemd 托管进程,就能获得崩溃自动拉起、开机自启与统一的日志入口。

本文假设你已具备合法的代理订阅或自建节点信息,并理解本地监听端口、规则与 DNS 的基本概念。若你尚未熟悉订阅链接如何转成配置文件,可先阅读站内的《Clash 订阅链接怎么用?机场配置文件一键导入完整教程》,再回到本文完成 Linux 侧的落地。

适用场景与发行版差异

以下步骤适用于大多数基于 systemd 的发行版(如 Debian、Ubuntu、Fedora、Arch 及其衍生版)。若你使用 OpenRC 或其它 init,思路相同:核心仍是「可执行文件 + 配置目录 + 守护进程」,只是服务单元写法不同。

架构方面,请在官方 Release 中选择与机器一致的包:常见桌面与云主机为 amd64,树莓派或部分 ARM 云主机为 arm64。下错架构会导致无法执行或立即退出,下载前用 uname -m 确认即可。

下载、解压与安装路径

从 Mihomo 官方 GitHub Releases 获取对应平台的压缩包(文件名通常包含 linux-amd64linux-arm64)。下载后解压得到名为 mihomo 的二进制文件,赋予可执行权限并放入固定路径,便于后续 systemd 引用:

  • 将二进制复制到 /usr/local/bin/mihomo(系统级)或 ~/.local/bin/mihomo(用户级,需保证该目录在登录用户的 PATH 中)
  • 执行 chmod +x 确保可运行
  • 可选:使用发行版包管理器或自建脚本做版本更新;生产环境建议校验发布页提供的校验和,避免供应链风险

若你希望了解 Mihomo 与旧版 Clash 核心的关系、以及新协议能力,可对照《Clash Meta 核心升级指南:从旧版迁移到 Mihomo 的完整步骤》,其中对核心能力与配置兼容性也有说明。

配置目录与导入方式

Mihomo 通过 -d 参数指定配置目录,该目录下至少需要 config.yaml。推荐为专用目录,例如用户级 ~/.config/mihomo 或系统级 /etc/mihomo,避免与工作目录混淆。

导入配置的常见方式有三种:第一,把机场提供的 Clash 配置全文保存为 config.yaml;第二,在配置中使用 proxy-providers 引用远程订阅 URL,由内核定期拉取;第三,从本机其它客户端导出兼容 YAML 再拷贝进来。无论哪种方式,都请检查 mixed-portportexternal-controller(外部 REST API 端口)是否与现有服务冲突。

若你计划使用 TUN 透明代理,需要额外内核权限与路由表配合,细节比纯 HTTP/SOCKS 监听复杂。可先完成本教程的基础常驻,再阅读《Clash TUN 模式开启方法:实现真正的全局透明代理》按场景开启。

命令行前台试运行

在写入 systemd 之前,务必先以前台方式验证配置无误:

mihomo -d ~/.config/mihomo

观察终端输出是否出现「配置加载成功」「监听端口已打开」等日志;若报错,多半是 YAML 缩进、字段不被当前版本识别,或端口被占用。前台验证通过后再按 Ctrl+C 结束,进入守护进程阶段。

使用 systemd 用户服务(推荐桌面与单用户)

用户服务不需要 root 写系统单元,适合个人笔记本或单用户 VPS。创建目录 ~/.config/systemd/user/,新建 mihomo.service,示例内容如下(请按实际路径修改 ExecStart 与配置目录):

[Unit]
Description=Mihomo (Clash) proxy daemon
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
ExecStart=/usr/local/bin/mihomo -d /home/你的用户名/.config/mihomo
Restart=on-failure
RestartSec=3
LimitNOFILE=65536

[Install]
WantedBy=default.target

然后执行:

systemctl --user daemon-reload
systemctl --user enable --now mihomo.service
systemctl --user status mihomo.service

用户服务的「开机自启」依赖用户 lingering:部分发行版需执行 sudo loginctl enable-linger 你的用户名,否则登出后用户服务不会随开机启动。若你在无图形 SSH 环境,这一点尤其重要。

系统级 systemd 服务(多用户或固定路径)

若二进制与配置放在 /usr/local/bin/etc/mihomo,可使用系统单元 /etc/systemd/system/mihomo.service,将 ExecStart 改为 /usr/local/bin/mihomo -d /etc/mihomo,并以 sudo systemctl enable --now mihomo 启用。系统服务默认随多用户目标启动,适合家庭网关或共享服务器;请注意配置文件权限,避免普通用户读到敏感节点信息。

验证:端口、API 与日志

配置中若开启了 external-controller(例如 127.0.0.1:9090),可在本机执行 curl http://127.0.0.1:9090/version,返回 JSON 中含 mihomo 与版本号即表示控制面正常。代理端口可用 ss -tlnp | grep mihomocurl 走本地 SOCKS/HTTP 代理访问测试页(请使用合法测试目标)。

日志查看:journalctl --user -u mihomo.service -f(用户服务)或 sudo journalctl -u mihomo.service -f(系统服务)。出现持续重连、DNS 失败或规则匹配异常时,可结合日志级别 log-level: infodebug 临时调高(注意磁盘与隐私)。

权限、安全与更新习惯

尽量不要以 root 身份运行 Mihomo,除非你必须绑定特权端口或做系统级 TUN。配置文件含订阅地址与节点凭证,建议目录权限设为仅当前用户可读。更新二进制时,先 systemctl stop 对应服务,替换文件后再 start,避免半写入状态。企业环境还可配合只读配置分区、定时任务校验哈希等方式加固。

常见问题速查

端口已被占用

修改 config.yamlmixed-port/port/external-controller 为空闲端口,或停止占用进程后重启服务。

Exec format error 或 Permission denied

多为架构不匹配或缺少可执行位,重新下载对应架构并 chmod +x

SELinux 拒绝(Fedora/RHEL)

查看 audit2why 日志,按需调整策略或将二进制与配置放到允许路径;生产环境避免粗暴关闭 SELinux。

小结与桌面用户的另一种选择

在 Linux 上无图形客户端跑 Clash,本质是「Mihomo 二进制 + 配置目录 + systemd 生命周期管理」。这条路径对自动化、远程服务器与最小化系统特别友好;相较需要界面点击的客户端,你完全掌握启动参数、日志与更新节奏。若你同时在桌面环境需要规则可视化、一键切换节点与内置诊断,图形客户端在易用性上仍更省心——例如 Clash Verge Rev 已内置最新 Mihomo 核心,省去手动下载与替换的琐碎步骤。

无论你选择纯命令行还是客户端,稳定的核心与清晰的配置结构才是长期使用体验的关键。若你希望省去服务器上手工维护内核版本的精力,也可以在桌面或常用工作机上使用官方客户端统一管理订阅与规则。→ 立即免费下载 Clash,开启流畅上网新体验