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 官方安装包。