Table of Contents
- Linux
- Windows. 请转到 Windows README
- 对 clash 配置有一定了解。
- 喜欢 TUI 软件。
比如: ArchLinux。
# ## 安装 mihomo
paru -S mihomo
# ## 添加 mihomo hook
# cat /etc/pacman.d/hooks/mihomo.hook (没有类似于 hook 的系统可以使用 ClashSrvCtl Tab 的 SetPermission 或者使用 mihomo@root 服务)
[Trigger]
Operation = Install
Operation = Upgrade
Type = Path
Target = usr/bin/mihomo
[Action]
When = PostTransaction
Exec = /usr/bin/setcap 'cap_net_admin,cap_net_bind_service=+ep' /usr/bin/mihomo
# ## 编辑 mihomo service unit
# systemctl edit mihomo
[Service]
# 删除原先的 ExecStart
ExecStart=
ExecStart=/usr/bin/mihomo -d /srv/mihomo -f /srv/mihomo/config.yaml
# ## 创建 /srv/mihomo
mkdir /srv/mihomo
cd /srv/mihomo
chown -R mihomo:mihomo /srv/mihomo
usermod -a -G mihomo <user>
groups <user> # 查看是否已经加入 mihomo group
# Optional. 0.2.0 之后版本的 clashtui 会自动修复文件的权限。
chmod g+w /srv/mihomo # clashtui 要有创建文件的权限。
chmod g+s /srv/mihomo # 使 clashtui 创建的文件的组为 mihomo。为了使 clashtui 对该目录的文件有组的读写权限。
chmod g+w /srv/mihomo/config.yaml # clashtui 要有写的权限。
# ## 设置 mihomo service unit
systemctl enable mihomo # 开机启动
systemctl restart mihomo # 启动服务
建议先用一个可用的 mihomo 配置测试 mihomo 服务是否成功。检查是否缺少 meta-rules-dat 文件。
mihomo
package 提供的 mihomo.service
:
[Unit]
Description=Mihomo daemon
After=network.target NetworkManager.service systemd-networkd.service iwd.service
[Service]
Type=simple
User=mihomo
Group=mihomo
LimitNPROC=500
LimitNOFILE=1000000
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_RAW CAP_NET_BIND_SERVICE
AmbientCapabilities=CAP_NET_ADMIN CAP_NET_RAW CAP_NET_BIND_SERVICE
Restart=always
RestartSec=5
ExecStart=/usr/bin/mihomo -d /etc/mihomo
[Install]
WantedBy=multi-user.target
比如: ArchLinux
# ## 安装 clashtui
# 有最新的 [PKGBUILD](./PkgManagers/PKGBUILD)。
paru -S clashtui。 # 其他 linux 发行版, 手动下载, 将 clashtui 放在 PATH 即可。
# ## 配置 clashtui
clashtui # 先运行会在 ~/.config/clashtui 生成一些默认文件。
# nvim ~/.config/clashtui/config.yaml
# 下面参数对应命令 <clash_core_path> -d <clash_cfg_dir> -f <clash_cfg_path>
clash_core_path: "/usr/bin/mihomo"
clash_cfg_dir: "/srv/mihomo"
clash_cfg_path: "/srv/mihomo/config.yaml"
clash_srv_name: "mihomo" # systemctl {restart | stop} <clash_srv_name>
clash_srv_is_user: false # true: systemctl --user ...
clashtui 后续的版本没有上传到 crates.io
, 因为现在 clashtui 分离为多个模块, 如果上传到 crates.io
, 需要上传依赖的每个模块, 而有些模块没有必要上传到 crates.io
。See ref。所以不要使用 cargo install clashtui
来安装了。
自行配置 ~/.config/clashtui/basic_clash_config.yaml
。该文件的一些基础字段会合并到 clash_cfg_path
。可以参考这里配置 tun 模式。
在 clashtui 程序所在的目录创建一个名为 data
的文件夹。则会将数据放在 data
内而不是 ~/.config/clashtui
。
按 ?
显示 help。
- 导入 profile: 在
Profile
区域, 按i
输入 Name (尽量不使用后缀) 和 Uri (url or file path)。 - 更新 profile: 按
a
更新 Profile 的依赖的所有资源。默认使用自身代理更新, 如果开启 tun 模式或系统代理且没有可用节点的情况下, 先停止 mihomo 服务 (ClashSrvCtl Tab 的 StopClashService), 再更新即可。 - 选择 profile: 按
Enter
选择该 Profile。 - 打开 mihomo 的 ui: 在浏览器输入
http://127.0.0.1:9090/ui
。前提是你的 mihomo 配置已经配置了 ui 相关的字段, 参考。
如果是首次安装 clashtui:
- 如果更改了
basic_clash_config
等配置, 则重启 clashtui, 使其重新解析basic_clash_config
等的更改。 - 导入一个不需要代理更新的 profile。
- 按
a
更新 Profile 的依赖的所有资源。 - 回车选择该 profile, 使得
basic_clash_config
的字段合并到clash_cfg_path
。 - 重启 mihomo 服务 (ClashSrvCtl Tab 的 StartClashService)。
clashtui -u # 以命令行的模式更新所有 profiles。如果 profile 有 proxy-providers, 同时也会更新它们。
所以可以结合 cronie 来定时更新 profiles:
# crontab -e
0 10,14,16,22 * * * /usr/bin/env clashtui -u >> ~/cron.out 2>&1
cronie 的使用, See ref。
-
按
t
切换到 Templates 区域。 -
选择
template_proxy_providers
, 按e
编辑, 输入订阅链接即可。比如:
https://.... https://.... # 支持注释 #https://....
-
按
Enter
生成配置到Profile
。按p
切换回Profile
,Enter
选择该配置即可。
在这里有最新的 templates。
在 ~/.config/clashtui/config.yaml
中配置即可。%s
会自动替换为选择的文件的路径。
比如:
edit_cmd: "alacritty -e nvim %s"
opendir_cmd: "alacritty -e ranger %s"
模板功能是 clashtui 独有的。具体使用规则参考提供例子模板。
定义重复使用的字段:
proxy-anchor:
- delay_test: &pa_dt {url: https://www.gstatic.com/generate_204, interval: 300}
- proxy_provider: &pa_pp {interval: 3600, intehealth-check: {enable: true, url: https://www.gstatic.com/generate_204, interval: 300}}
为 template_proxy_providers
的每个链接生成一个 proxy-provider:
proxy-providers:
provider:
tpl_param:
type: http # type 字段要放在此处, 不能放入 pa_pp。原因是 clashtui 根据这个字段检测是否是网络资源。
<<: *pa_pp
为每个 proxy-providers 生成一个 Select, Auto
proxy-group。
proxy-groups:
- name: "Select"
tpl_param:
providers: ["provider"]
type: select
- name: "Auto"
tpl_param:
providers: ["provider"]
type: url-test
<<: *pa_dt
使用 Select, Auto
proxy-groups:
proxy-groups:
- name: "Entry"
type: select
proxies:
- <Auto>
- <Select>
- basic_clash_config.yaml: mihomo 配置的基本字段, 会合并到
clash_cfg_path
。 - config.yaml: clashtui 的配置。
此项目仅供学习和参考之用。作者并不保证项目中代码的准确性、完整性或适用性。使用者应当自行承担使用本项目代码所带来的风险。
作者对于因使用本项目代码而导致的任何直接或间接损失概不负责,包括但不限于数据丢失、计算机损坏、业务中断等。
使用者应在使用本项目代码前,充分了解其功能和潜在风险,并在必要时寻求专业建议。对于因对本项目代码的使用而导致的任何后果,作者不承担任何责任。
在使用本项目代码时,请遵守相关法律法规,不得用于非法活动或侵犯他人权益的行为。
作者保留对本免责声明的最终解释权,并可能随时对其进行修改和更新。