Clash 中文网搜索

Mihomo 内核部署教程:Linux 服务器 / 软路由 + systemd 开机自启 + Docker

Clash 中文网编辑部 · 更新于 2026/10/22 · 对照版本 Mihomo(Clash.Meta 内核) v1.19.33

Mihomo 是 Clash.Meta 内核的现名,也是绝大多数现役 Clash 客户端的底层核心。 在没有图形界面的 Linux 服务器、软路由或 NAS 上,可以直接运行内核:下载二进制 → 放好 config.yaml → mihomo -d /etc/mihomo 启动,再用 systemd 设置开机自启。

适用场景

场景 说明
Linux 服务器 / VPS 为服务器上的程序提供代理
软路由 / 旁路由 为整个家庭网络提供代理
NAS(群晖、飞牛等) 下载工具、Docker 容器走代理
树莓派等 ARM 设备 低功耗常驻代理
桌面用户 推荐直接用 Clash Verge Rev 等客户端,它们已内置 Mihomo

第一步:选择版本

前往 Mihomo 下载页。Mihomo 每个版本有一百多个文件,下载页已按系统和架构分类。文件名格式为:

mihomo-系统-架构[-变体]-版本号.gz

Linux 常用文件

文件名 适用
mihomo-linux-amd64-vX.Y.Z.gz 64 位 x86,较新 CPU
mihomo-linux-amd64-v3-vX.Y.Z.gz 支持 AVX2 的 CPU(约 2015 年后的 Intel / AMD),性能最好
mihomo-linux-amd64-v2-vX.Y.Z.gz 支持 SSE4.2 的 CPU
mihomo-linux-amd64-v1-vX.Y.Z.gz / compatible 兼容所有 64 位 x86 CPU,遇到 illegal instruction 时选这个
mihomo-linux-arm64-vX.Y.Z.gz ARM64(树莓派 4/5、ARM 云服务器、多数软路由)
mihomo-linux-armv7-vX.Y.Z.gz 32 位 ARM
mihomo-linux-mips* / riscv64 等 对应架构的路由器
mihomo-linux-amd64-vX.Y.Z.deb / .rpm 发行版安装包

查看 CPU 架构与是否支持 AVX2

uname -m                 # x86_64 → amd64;aarch64 → arm64;armv7l → armv7
grep -o avx2 /proc/cpuinfo | head -1   # 有输出说明支持 AVX2,可用 v3

第二步:安装二进制

方法一:手动安装(通用)

# 把 vX.Y.Z 换成下载页显示的最新版本号
wget https://github.com/MetaCubeX/mihomo/releases/download/vX.Y.Z/mihomo-linux-amd64-vX.Y.Z.gz
gunzip mihomo-linux-amd64-vX.Y.Z.gz
sudo install -m 755 mihomo-linux-amd64-vX.Y.Z /usr/local/bin/mihomo
mihomo -v

mihomo -v 输出版本号即安装成功。如果服务器无法访问 GitHub,可以在本地下载后用 scp 上传。

方法二:deb / rpm 安装包

sudo apt install ./mihomo-linux-amd64-vX.Y.Z.deb
# 或
sudo dnf install ./mihomo-linux-amd64-vX.Y.Z.rpm

第三步:准备配置文件

Mihomo 的工作目录用于存放 config.yaml、GeoData 数据库、代理集合和规则集合缓存。推荐使用 /etc/mihomo:

sudo mkdir -p /etc/mihomo

方式 A:直接使用机场订阅

sudo wget -O /etc/mihomo/config.yaml "你的 Clash 订阅链接"

订阅链接下载下来就是一份完整的配置文件。但需要注意:

  • 订阅中通常 allow-lan: false、external-controller 只监听本机,服务器上使用时按需修改;
  • 订阅更新后需要重新下载。

方式 B:自己编写配置(推荐长期使用)

用 proxy-providers 引用订阅,自己控制规则和端口,订阅更新由内核自动完成。模板见 Mihomo 配置文件入门。

首次启动会下载 GeoData

首次启动时,内核会自动下载 GeoIP、GeoSite 数据库到工作目录。服务器无法访问 GitHub 时会失败,可以:

  • 在配置中设置 geox-url 为 CDN 地址(见 GeoData 教程);
  • 或手动下载 geoip.dat、geosite.dat、country.mmdb 放进 /etc/mihomo。

第四步:测试配置

mihomo -d /etc/mihomo -t

显示 configuration file /etc/mihomo/config.yaml test is successful 即可。有错误时会指出具体字段,常见原因是 YAML 缩进错误。

第五步:前台试运行

sudo mihomo -d /etc/mihomo

看到类似以下日志说明已正常启动:

Mixed(http+socks) proxy listening at: 127.0.0.1:7890
RESTful API listening at: 127.0.0.1:9090

另开一个终端测试代理:

curl -x http://127.0.0.1:7890 -I https://www.google.com

返回 HTTP/2 200 即可。按 Ctrl + C 停止。

第六步:systemd 开机自启

创建服务文件 /etc/systemd/system/mihomo.service:

[Unit]
Description=mihomo Daemon
After=network.target NetworkManager.service systemd-networkd.service

[Service]
Type=simple
LimitNPROC=500
LimitNOFILE=1000000
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_RAW CAP_NET_BIND_SERVICE CAP_SYS_TIME
AmbientCapabilities=CAP_NET_ADMIN CAP_NET_RAW CAP_NET_BIND_SERVICE CAP_SYS_TIME
Restart=always
ExecStartPre=/usr/bin/sleep 1s
ExecStart=/usr/local/bin/mihomo -d /etc/mihomo
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target

CAP_NET_ADMIN 等能力是 TUN 模式和绑定低端口所需的。启用并启动:

sudo systemctl daemon-reload
sudo systemctl enable --now mihomo
systemctl status mihomo

常用管理命令

命令 作用
sudo systemctl start mihomo 启动
sudo systemctl stop mihomo 停止
sudo systemctl restart mihomo 重启(修改配置后)
systemctl status mihomo 查看状态
journalctl -u mihomo -f 实时查看日志
journalctl -u mihomo --since "10 min ago" 查看最近 10 分钟日志

让服务器上的程序使用代理

方式一:环境变量

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

写入 ~/.bashrc 可以永久生效。

方式二:TUN 模式(接管全部流量)

在配置中加入:

tun:
  enable: true
  stack: mips
  auto-route: true
  auto-redirect: true        # Linux 上自动配置 nftables/iptables 重定向
  auto-detect-interface: true
  dns-hijack:
    - any:53
dns:
  enable: true
  enhanced-mode: fake-ip

重启服务后,服务器上所有程序的流量都会经过 Mihomo。远程服务器上开启 TUN 前务必确认 SSH 连接会被规则直连(例如添加 DST-PORT,22,DIRECT 或 SRC-PORT,22,DIRECT),否则可能导致 SSH 断开、无法登录。

Docker 部署

docker run -d --name mihomo \
  --restart unless-stopped \
  --network host \
  --cap-add NET_ADMIN \
  --device /dev/net/tun \
  -v /etc/mihomo:/root/.config/mihomo \
  metacubex/mihomo:latest
  • --network host 让容器直接使用宿主机网络;
  • --cap-add NET_ADMIN 和 --device /dev/net/tun 用于 TUN 模式,不用 TUN 可以去掉;
  • 容器内默认工作目录为 /root/.config/mihomo,挂载到宿主机的 /etc/mihomo。

命令行参数

参数 作用
-d <目录> 指定工作目录,读取其中的 config.yaml
-f <文件> 指定配置文件路径
-t 只测试配置,不启动
-v 显示版本
-ext-ctl <地址> 覆盖外部控制器地址
-secret <密钥> 覆盖 API 密钥
-ext-ui <目录> 覆盖面板目录

升级内核

sudo systemctl stop mihomo
# 下载新版本并替换 /usr/local/bin/mihomo(同第二步)
sudo systemctl start mihomo
mihomo -v

也可以通过 Web 面板的“升级内核”功能在线升级(需要外部控制器)。

卸载

sudo systemctl disable --now mihomo
sudo rm /etc/systemd/system/mihomo.service /usr/local/bin/mihomo
sudo systemctl daemon-reload
sudo rm -rf /etc/mihomo   # 同时删除配置,谨慎操作

Windows / macOS 直接运行内核

Mihomo 也提供 Windows(windows-amd64.zip)和 macOS(darwin-arm64.gz)版本,解压后在命令行运行:

./mihomo -d ./config

但桌面用户更推荐使用图形客户端,它们会自动管理内核、系统代理和 TUN。旧系统用户注意:文件名带 go120、go122 的版本使用旧版 Go 编译,用于兼容 Windows 7、旧版 macOS 等系统。

下一步

常见问题

运行时报 illegal instruction 怎么办?

说明 CPU 不支持该版本使用的指令集,改用文件名带 compatible 或 amd64-v1 的版本。

修改配置后需要重启吗?

用 systemctl restart mihomo 重启即可;也可以通过外部控制器 API 或面板重新加载配置。

Windows 和 macOS 能直接用内核吗?

可以,但图形客户端(如 Clash Verge Rev)已经内置 Mihomo,桌面用户直接用客户端更方便。

v1、v2、v3 版本有什么区别?

对应 x86-64 的微架构等级。v3 需要支持 AVX2 的较新 CPU,性能最好;v1 兼容所有 64 位 CPU。不确定时选 compatible 或 v1。

文件名里的 go120、go122 是什么?

表示用旧版 Go 编译,用于兼容老系统(如 Windows 7、旧版 macOS)。新系统选不带 go 后缀的版本。

还没安装 Mihomo(Clash.Meta 内核)?

最新版 v1.19.33,直链 GitHub 官方安装包。

前往下载