Mihomo 使用教程:Linux 命令行部署、导入订阅、systemd 服务与常见错误

发布于 2026/10/08约 12 分钟读完
客户端
Mihomo
支持平台
Linux / 路由器
价格
免费(开源)
官方地址
前往下载
  1. 下载
  2. 安装
  3. 导入订阅
  4. 设置
  5. 排错

Mihomo 是 Clash Meta 内核改名后的名称,由 MetaCubeX 社区维护。Clash Verge Rev、Mihomo Party、Clash Meta for Android 等图形客户端,底层运行的都是它。在没有桌面环境的 Linux 服务器、软路由或树莓派上,可以直接运行 Mihomo 内核,用配置文件和网页面板管理。

本文面向有一定 Linux 基础的用户,以 x86_64 架构、使用 systemd 的发行版(如 Debian、Ubuntu)为例。如果你的 Linux 有桌面环境,更推荐使用上面提到的图形客户端。

下载

Mihomo 下载示意图

Mihomo 的官方发布渠道是 MetaCubeX 在 GitHub 上的 mihomo 仓库 Releases 页面。发布页中的文件按“系统-架构”命名,选择方法:

设备 选择文件名中含有的关键字
普通 x86_64 电脑或服务器 linux-amd64
树莓派 4/5 等 64 位 ARM 设备 linux-arm64
较老的 32 位 ARM 设备 linux-armv7

用 uname -m 可以查看架构:输出 x86_64 选 amd64,输出 aarch64 选 arm64。amd64 有时还会细分出兼容性版本(如带 compatible 字样),老旧 CPU 运行报错时可以改用兼容版本。

发布页同时提供 .gz 压缩的单文件二进制和 .deb、.rpm 等安装包。本文以二进制文件为例。

只从官方仓库下载。网上流传的“一键脚本”“魔改内核”可能夹带后门,运行前务必确认来源。

安装

以下载 .gz 二进制为例,在终端中执行(文件名以实际下载的为准):

gunzip mihomo-linux-amd64-*.gz
sudo mv mihomo-linux-amd64-* /usr/local/bin/mihomo
sudo chmod +x /usr/local/bin/mihomo
mihomo -v

最后一条命令能输出版本信息,说明安装成功。接着创建配置目录:

sudo mkdir -p /etc/mihomo

-d 参数指定的就是这个配置目录。Mihomo 运行时会在这里读取 config.yaml,并存放 Geo 数据文件、订阅缓存(providers 子目录)和网页面板文件等。以后备份或迁移,只需要复制整个目录。建议目录权限只允许 root 读写,因为配置文件中包含订阅链接和控制密码。

首次启动时,Mihomo 会在配置目录下自动下载分流所需的 GeoIP / GeoSite 等数据文件。如果服务器直接访问这些下载地址较慢,启动会卡在这一步,耐心等待或稍后重试即可。

导入订阅

Mihomo 导入订阅示意图

Mihomo 本身没有“导入订阅”按钮,一切由 config.yaml 决定。把机场订阅变成配置,有两种思路:

思路一:直接使用机场的 Clash 配置

机场提供的 Clash / Mihomo 订阅,本身就是一份完整的 config.yaml。可以下载后直接放到配置目录:

sudo curl -L -o /etc/mihomo/config.yaml "你的Clash订阅链接"

注意:部分机场会根据请求的 User-Agent 返回不同格式的内容,如果下载下来的不是 YAML,可以在 curl 中加 -A 参数指定一个 Clash 类客户端的 User-Agent。缺点是更新订阅时整份配置会被覆盖,自己的修改会丢失。

思路二:用 proxy-providers 引用订阅(推荐)

自己写一份主配置,节点部分通过 proxy-providers 引用订阅链接,Mihomo 会自动下载和定时更新。一个最小示例:

mixed-port: 7890
allow-lan: false
mode: rule
log-level: info
external-controller: 127.0.0.1:9090
secret: "自己设置一个复杂的密码"

proxy-providers:
  my-airport:
    type: http
    url: "你的Clash订阅链接"
    interval: 86400
    path: ./providers/my-airport.yaml
    health-check:
      enable: true
      url: https://www.gstatic.com/generate_204
      interval: 300

proxy-groups:
  - name: 节点选择
    type: select
    use:
      - my-airport
  - name: 自动选择
    type: url-test
    use:
      - my-airport
    url: https://www.gstatic.com/generate_204
    interval: 300

rules:
  - GEOIP,LAN,DIRECT
  - GEOSITE,cn,DIRECT
  - GEOIP,CN,DIRECT
  - MATCH,节点选择

这份示例只演示结构,字段的完整含义以 Mihomo 官方文档为准。不建议把订阅链接交给来路不明的在线“订阅转换”网站处理,订阅链接等同于账号凭证,交给第三方存在泄露风险。

添加节点

Mihomo 节点选择与测试

单个节点可以直接写在配置的 proxies 字段中,按 Mihomo 文档中对应协议的格式填写服务器、端口、密码等参数,然后把节点名加入某个 proxy-groups 的 proxies 列表。自己写的节点和 proxy-providers 引用的订阅节点可以同时存在。

修改配置后,可以先用测试参数检查语法:

mihomo -d /etc/mihomo -t

更新订阅

  • 使用思路一时,重新执行 curl 下载命令,然后重启服务;
  • 使用思路二时,Mihomo 会按 interval(单位秒)自动更新;也可以在外部控制面板的 Providers 页面手动更新。

更新后如果节点数量变成 0,多半是订阅已过期,或机场返回了错误页面而不是节点列表。可以查看 providers 目录下缓存文件的内容判断原因,同时登录机场后台确认套餐状态。修改 config.yaml 本身后,需要重启服务或在面板中重新加载配置才会生效。

配置 systemd 服务

让 Mihomo 开机自启、崩溃自动重启,创建文件 /etc/systemd/system/mihomo.service:

[Unit]
Description=mihomo daemon
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
ExecStart=/usr/local/bin/mihomo -d /etc/mihomo
Restart=on-failure
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE CAP_NET_RAW
AmbientCapabilities=CAP_NET_ADMIN CAP_NET_BIND_SERVICE CAP_NET_RAW

[Install]
WantedBy=multi-user.target

然后执行:

sudo systemctl daemon-reload
sudo systemctl enable --now mihomo
systemctl status mihomo
journalctl -u mihomo -f

status 显示 active (running) 即运行成功,journalctl 用于查看实时日志。

外部控制面板

命令行不便于切换节点,Mihomo 提供了 RESTful 控制接口(即配置中的 external-controller),可以配合网页面板使用,常见的有 MetaCubeXD、Yacd(及其 Meta 分支)、Zashboard 等。它们都是纯前端页面,连接到你填写的控制地址和 secret 后,就能在浏览器里切换节点、测速、查看连接和日志。

面板也可以通过配置中的 external-ui 字段放到本机目录由 Mihomo 直接提供。安全提醒:如果把控制地址改为 0.0.0.0 供局域网访问,务必设置强密码,并且不要暴露到公网。

系统代理

Mihomo 开启系统代理

服务器上没有“系统代理”开关。让程序走代理的常见方式是设置环境变量:

export http_proxy=http://127.0.0.1:7890
export https_proxy=http://127.0.0.1:7890
export all_proxy=socks5://127.0.0.1:7890

只对当前终端会话生效,写入 shell 配置文件可以长期生效。如果要让局域网其他设备使用,把 allow-lan 改为 true,并在防火墙中只对可信网段开放端口。

TUN 模式

不读取环境变量的程序(如 Docker 拉取镜像、部分服务进程),可以用 TUN 模式接管:

tun:
  enable: true
  stack: mixed
  auto-route: true
  auto-detect-interface: true
dns:
  enable: true
  enhanced-mode: fake-ip

TUN 模式通常要和 DNS 配置一起使用:fake-ip 模式下,Mihomo 会对域名查询先返回一个保留地址段的假 IP,等程序真正发起连接时再按域名匹配规则,这样分流更准确、响应也更快。如果本机还运行着其他 DNS 服务(如 systemd-resolved),需要留意端口和解析顺序是否冲突。

TUN 需要 CAP_NET_ADMIN 权限,上面的 systemd 文件已授予。在远程服务器上开启 TUN 前请确认有其他登录方式(如服务商的控制台),配置不当可能导致 SSH 断开。

规则模式

配置中 mode: rule 即规则模式,按 rules 自上而下匹配,命中即停止,最后一条 MATCH 兜底。上面的示例让局域网和国内流量直连,其余走“节点选择”组。也可以在控制面板中临时切换模式。

全局模式

把 mode 改为 global,或在控制面板中切换为全局,所有流量都走所选节点,适合临时排查。排查完切回规则模式,避免浪费流量,流量计算见机场流量怎么算。

常见错误

现象 可能原因 解决方法
运行提示 exec format error 下载了错误架构的二进制 用 uname -m 确认架构后重新下载
启动卡在下载 Geo 数据 服务器访问下载地址慢 等待重试,或手动放入数据文件
配置检查报 YAML 错误 缩进错误或使用了 Tab 统一用空格缩进,用 -t 检查
订阅下载内容不是 YAML 机场按 User-Agent 返回格式 复制 Clash 订阅,必要时指定 User-Agent
面板连接失败 控制地址、端口或 secret 不对 核对 external-controller 与面板填写
开启 TUN 失败 缺少权限 以 root 运行或授予 CAP_NET_ADMIN
开启 TUN 后 SSH 断开 路由被接管 通过控制台关闭 TUN,并调整路由排除规则
节点全部超时 订阅过期或流量用完 登录机场后台检查套餐

更多 Linux 客户端可以看 Linux 客户端教程。

下一步

换个客户端

Linux / 路由器 其他客户端