在 Linux 上搭建 mihomo(clash.meta) 服务

Clash Meta 现已改名为 mihomo。本文为 Debian 12 虚拟机上搭建 mihomo 服务的过程,供有需要的人士参考。

一、下载安装 mihomo 服务

在官方下载页面下载适合自己 Linux 系统的二进制安装包,比如 mihomo-linux-amd64-alpha-b3db113.gz,解压后将 mihomo-linux-amd64 上传到虚拟机上,同时重命名为 mihomo:

scp /path/mihomo-linux-amd64 user@host:~/mihomo

SSH 登录进主机,给 mihomo 增加执行权限:

sudo chmod +x mihomo

将 mihomo 移动到 /usr/local/bin/ 目录:

sudo cp mihomo /usr/local/bin

创建运行目录:

sudo mkdir /etc/mihomo -p

创建配置文件:

sudo vi /etc/mihomo/config.yaml

在其中添加你的配置内容,因为 mihomo 兼容 clash 配置,所以直接将可用的 clash 配置复制粘贴进去即可。

在将 mihomo 添加到系统服务之前,最好手动运行一次观察是否正常。

sudo /usr/local/bin/mihomo -d /etc/mihomo

如果启动成功,没出现错误信息,那就可以创建 mihomo 服务:

sudo vi /etc/systemd/system/mihomo.service

粘贴以下内容:

[Unit]
Description=mihomo Daemon, Another Clash Kernel.
After=network.target NetworkManager.service systemd-networkd.service iwd.service

[Service]
Type=simple
LimitNPROC=500
LimitNOFILE=1000000
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_RAW CAP_NET_BIND_SERVICE CAP_SYS_TIME CAP_SYS_PTRACE CAP_DAC_READ_SEARCH
AmbientCapabilities=CAP_NET_ADMIN CAP_NET_RAW CAP_NET_BIND_SERVICE CAP_SYS_TIME CAP_SYS_PTRACE CAP_DAC_READ_SEARCH
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

说明:vi 可通过按 ESC,再输入 :wq 保存退出。

重载 systemd:

systemctl daemon-reload

启用 mihomo 服务(开机、重启系统后自动启动):

systemctl enable mihomo

立即启动 mihomo 服务:

systemctl start mihomo

检查 mihomo 服务状态:

systemctl status mihomo

没问题的话就已经安装好 mihomo 服务了。

二、添加 Web 控制面板

刚才部署好了 mihomo 服务,如果要切换节点、重载配置等都需要 ssh 登录到虚拟机上修改,较为不便。所以我们还需要有控制面板。如果你是 Linux 桌面用户,可以用一些客户端很方便。但这次是在不带桌面的虚拟机中(相当于 Linux VPS)部署,所以需要安装一个 Web 控制面板进行简单的管理。

通过 Web 控制面板管理,需要在配置文件中添加以下内容:

external-controller: 0.0.0.0:9090

注意:0.0.0.0 意味着可以在公网访问,如果你的机器是直接暴露在公网的,请勿如此配置。

1. 通过第三方部署的 Web 控制面板管理

一般来说,我们可以通过部署在外部的 yacd 或 metacubexd 等面板管理,这是最方便的形式。如果遇到了 failed to connect 错误,是因为没有允许在 https 网站加载 http 内容。解决方式只要对第三方部署的面板设置允许不安全内容即可。如下图:

2. 自行部署 Web 控制面板

另外一种方式是自行部署。mihomo 支持在配置文件中添加 external-ui 来指定 Web 控制器的目录,这样我们就不需要再安装一个 nginx 来提供 Web 服务,比较省事。

例如我想将控制器放在 /etc/mihomo/ui 中,则添加如下配置:

external-ui: /etc/mihomo/ui

从 GitHub 下载:

sudo git clone https://github.com/metacubex/metacubexd.git -b gh-pages /etc/mihomo/ui

重启 mihomo 服务

sudo systemctl restart mihomo

现在就可以在浏览器中访问 Web 控制器了。有人会遇到访问不了的情况,一般是因为浏览器地址栏的路径填写错误,正确的地址应该是 http://ip:port/ui,例如:

http://192.168.1.202:9090/ui

三、定时从网络更新配置文件

如果你是用的机场的配置文件,如果机场变更了配置,你还需要手动更新,比较麻烦。还好我们可以通过定时任务来自动更新配置文件。

sudo crontab -e

如果你第一次使用 crontab,会让你选择编辑器,我选择 VI。进入定时任务配置文件,按 i 进入编辑状态,新起一行(可以是文件头部)输入:

0 4 * * * curl -L -o /etc/mihomo/config.yaml -A "clash" SUB_URL; systemctl reload mihomo

输入 : ,再输入 wq,按 回车 即可保存。

以上配置的意思是:在每天夜里 4 点从 SUB_URL 更新订阅配置,配置保存在 /etc/mihomo/config 中,更新完成后重载 mihomo 服务。记得自行替换 SUB_URL 为机场给到的订阅地址。

四、参考文档

发表回复