Clash on Linux
系列 - Use Clash Core
目录
注意
此文仅适用于客户端, 不适用于服务器和路由器。
改名
Clash Meta
改名为 mihomo
。1 Core
参考 FAQ 下载 二进制文件, 解压后将其重命名为 mihomo
。
chmod +x mihomo
sudo mv mihomo /usr/local/bin/
2 配置文件
参考 Clash配置文件。
mkdir /etc/mihomo
sudo cp config.yaml /etc/mihomo/
3 Dashboard
下载 Yacd-meta 或者 MetaCubeXD, 解压后将文件夹重命名为 ui
。
sudo cp -r ui /etc/mihomo/
后续一切工作正常后, 可以打开 Dashboard (http://127.0.0.1:9090/ui) 查看相应信息并进行管理。
4 设置守护进程
参考 创建运行服务。
sudo vim /etc/systemd/system/mihomo.service
写入以下内容:
[Unit]
Description=mihomo service
Documentation=https://wiki.metacubex.one
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 CAP_SYS_PTRACE CAP_DAC_READ_SEARCH CAP_DAC_OVERRIDE
AmbientCapabilities=CAP_NET_ADMIN CAP_NET_RAW CAP_NET_BIND_SERVICE CAP_SYS_TIME CAP_SYS_PTRACE CAP_DAC_READ_SEARCH CAP_DAC_OVERRIDE
Restart=on-failure
RestartSec=10s
ExecStartPre=/usr/bin/sleep 1s
ExecStart=/usr/local/bin/mihomo -d /etc/mihomo
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target
重载 systemd:
sudo systemctl daemon-reload
完成了
现在可以运行 sudo systemctl start mihomo.service
测试一下整个流程, 应该一切正常。
现在可以打开 Dashboard (http://127.0.0.1:9090/ui) 查看相应信息并进行管理。
5 日常使用
5.1 开关系统和浏览器代理
Chrome 会跟随 KDE 系统代理, Firefox 则不然。对于 KDE 系统代理和 Firefox 代理, 参考 开关系统和浏览器代理。
5.2 当前配置重启
参考 开关系统和浏览器代理, 将以下代码添加到 /etc/proxy-custom
中:
function mihomo-restart {
dir_config="/etc/mihomo"
service="mihomo.service"
sudo systemctl restart $service
sleep 3
sub_state=$(systemctl show -p SubState --value $service)
if [ $sub_state == "running" ]; then
echo -e "$service state: ${green}$sub_state${reset}."
secret=$(grep secret $dir_config/config.yaml | cut -d ' ' -f 2)
controller_api=$(grep external-controller $dir_config/config.yaml | cut -d ' ' -f 2)
response=$(curl -s -H "Authorization: Bearer ${secret}" -H "Content-Type: application/json" -X GET "http://${controller_api}/configs")
tun_state=$(echo "$response" | jq -r '.tun.enable')
if [ "$tun_state" == "true" ]; then
echo -e "Tun ${green}enabled${reset}."
echo -e "Use ${blue}tun${reset} mode."
kde-proxy-off
# ff-proxy-off
else
echo -e "Tun ${red}disabled${reset}."
echo -e "Use ${blue}system proxy${reset} mode."
kde-proxy-on
# ff-proxy-on
fi
else
echo -e "$service state: ${red}$sub_state${reset}."
fi
}
5.3 停止运行
将以下代码追加到 /etc/proxy-custom
中:
function mihomo-stop {
service="mihomo.service"
sudo systemctl stop $service
sleep 1
sub_state=$(systemctl show -p SubState --value $service)
echo -e "$service state: ${red}$sub_state${reset}."
}
5.4 切换模式重启
将以下代码追加到 /etc/proxy-custom
中:
function mihomo-switch {
dir_config="/etc/mihomo"
service="mihomo.service"
sub_state=$(systemctl show -p SubState --value $service)
if [ $sub_state != "running" ]; then
echo -e "$service state: ${red}$sub_state${reset}."
sudo systemctl restart $service
sleep 3
sub_state=$(systemctl show -p SubState --value $service)
if [ $sub_state != "running" ]; then
echo -e "$service state: ${red}$sub_state${reset}."
exit 1
fi
fi
if [ $sub_state == "running" ]; then
echo -e "$service state: ${green}$sub_state${reset}."
secret=$(grep secret $dir_config/config.yaml | cut -d ' ' -f 2)
controller_api=$(grep external-controller $dir_config/config.yaml | cut -d ' ' -f 2)
response=$(curl -s -H "Authorization: Bearer ${secret}" -H "Content-Type: application/json" -X GET "http://${controller_api}/configs")
tun_state=$(echo "$response" | jq -r '.tun.enable')
if [ "$tun_state" == "true" ]; then
curl -H "Authorization: Bearer ${secret}" -H "Content-Type: application/json" -X PATCH -d '{"tun":{"enable":false}}' "http://${controller_api}/configs"
echo -e "Tun ${red}disabled${reset}."
echo -e "Use ${blue}system proxy${reset} mode."
kde-proxy-on
# ff-proxy-on
else
curl -H "Authorization: Bearer ${secret}" -H "Content-Type: application/json" -X PATCH -d '{"tun":{"enable":true}}' "http://${controller_api}/configs"
echo -e "Tun ${green}enabled${reset}."
echo -e "Use ${blue}tun${reset} mode."
kde-proxy-off
# ff-proxy-off
fi
fi
}
5.5 查看日志
查看日志:
sudo journalctl -u mihomo.service -o cat -e
查看实时日志:
sudo journalctl -u mihomo.service -o cat -f