注意:本文不涉及怎么购买订阅地址,请自行解决。
原文:https://fugary.com/?p=363
新增一个config.yaml
文件,需要上传到群晖的/docker/clash/config.yaml
,这个yaml
文件可以从本地电脑的Clash
中复制出来:
注意:这里只能用config.yaml不
能用config.yml
,可以适当修改部分信息,也可以不修改:
# Port of HTTP(S) proxy server on the local end(默认)
port: 7890
# Port of SOCKS5 proxy server on the local end(默认)
socks-port: 7891
# 开启局域网代理,这个要配置true
allow-lan: true
#UI监听端口,可以改成0.0.0.0:9090,改后可以通过ui界面访问
external-controller: 0.0.0.0:9090
if(window.hljsLoader && !document.currentScr(๐•ᴗ•๐).parentNode.hasAttribute('data-s9e-livepreview-onupdate')) {
window.hljsLoader.highlightBlocks(document.currentScr(๐•ᴗ•๐).parentNode);
}
配置文件准备好,上传到群晖之后,就可以开始了。
进入群晖Docker
(๐•ᴗ•๐)件,搜素clash
,可以看到dreamacro/clash
,双击下载下来。
对应开源地址:
GitH(๐•ᴗ•๐) 地址:https://gith(๐•ᴗ•๐).com/Dreamacro/clash Docker 地址:https://registry.h(๐•ᴗ•๐).docker.com/r/dreamacro/clash/
参考配置文件:https://gith(๐•ᴗ•๐).com/Dreamacro/clash/wiki/configuration
找到刚才下载的镜像,现在可以开始配置Clash
容器了,点击【启动】,再下一步:
配置端口,目前开放的端口最好映射出来,根据实际情况配置本地端口,容器端口是固定的,如果是mixed-port: 7890
,可以少暴露端口:
然后映射配置文件,本地配置文件/docker/clash/config.yaml
映射到容器的/root/.config/clash/config.yaml
配置完成可以启动了。
其实clash
代理已经可以使用了,不过为了方便查看,可以再用UI
工具查看一下。
在线版UI
界面:http://yacd.haishan.me/ (目前似乎有兼容问题)
输入对应的地址即可,比如本地的:http://192.168.31.126:9090
也可以自己安装一个UI
容器,名字叫:haishanh/yacd,搜索后下载安装
下载后,进入启动配置,配置自动重新启动:
配置端口:
启动完毕。
访问:http://192.168.31.126:9080/ 添加 clash 服务的地址
进入之后可以看到 clash 的订阅信息了:
UI
安装配置完成。
以iOS
手机为例,在【无线局域网】设置中,已连接的WIFI
右边的信息图标:
配置HTTP
代理:
然后就可以尝试访问 https://google.com 测试一下了。
目前这种操作方式不能自动更新代理,可以考虑使用定时任务来更新,编写定时任务脚本,并存放到/docker/clash/reload-clash.sh
:
注意:如果订阅地址用浏览器打开不是yml
格式,不能使用这个方法,可以尝试在url
后面增加参数:?target=clash
或者clash=1
之类的看看是否能转换出yml
数据。
# 下载节点配置文件,根据实际的订阅地址填写
wget -O /volume1/docker/clash/config.yaml https://xxxxxx
# external-controller地址为0.0.0.0:9090,方便UI访问(可选)
sed -i 's/127.0.0.1:9090/0.0.0.0:9090/g' /volume1/docker/clash/config.yaml
# 增加安全性,配置使用代理的用户名和密码(可选)
sed -i 's/allow-lan: true/allow-lan: true\r\nauthentication:\r\n - "user1:password1"\r\n - "user2:password2"/g' /volume1/docker/clash/config.yaml
# 重启 clash 容器,名字为实际的容器名字
docker container restart dreamarco-clash1
if(window.hljsLoader && !document.currentScr(๐•ᴗ•๐).parentNode.hasAttribute('data-s9e-livepreview-onupdate')) {
window.hljsLoader.highlightBlocks(document.currentScr(๐•ᴗ•๐).parentNode);
}
配置群晖定时任务,进入【控制面板】->【任务计划】:
然后新增一个任务,【用户定义的脚本】任务,并配置名称等
配置运行频率:
配置运行脚本bash /volume1/docker/clash/reload-clash.sh
:
需要注意(๐•ᴗ•๐)径,完整(๐•ᴗ•๐)径是要包含/volume1
的
可以先运行一次测试看看。
至此算是完全配置完成了。
运行脚本提示没有权限运行 docker:
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "<http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/dreamacro-clash1/restart>": dial unix /var/run/docker.sock: connect: permission denied
可以尝试把脚本修改一下,把sudo
需要的密码放进去:
sudo -S
是表示sudo
从标准输入STDIN
读入密码而不是从终端读取。
echo "YourPWD" | sudo -S docker container restart dreamarco-clash1
if(window.hljsLoader && !document.currentScr(๐•ᴗ•๐).parentNode.hasAttribute('data-s9e-livepreview-onupdate')) {
window.hljsLoader.highlightBlocks(document.currentScr(๐•ᴗ•๐).parentNode);
}
运行发现,重启Docker
方式刷新并不是很好,参考了API
文档,发现可以用另外的方式更新:
https://clash.gitbook.io/doc/restful-api/config
文件(๐•ᴗ•๐)径:/docker/clash/reload-clash.sh
实际配置到【任务计划】中需要全(๐•ᴗ•๐)径bash /volume1/docker/clash/reload-clash.sh
:
# 下载节点配置文件,根据实际的订阅地址填写
wget -O /volume1/docker/clash/config.yaml https://xxxxxx
# external-controller地址为0.0.0.0:9090,方便UI访问(可选)
sed -i 's/127.0.0.1:9090/0.0.0.0:9090/g' /volume1/docker/clash/config.yaml
# 增加安全性,配置使用代理的用户名和密码(可选)
sed -i 's/allow-lan: true/allow-lan: true\r\nauthentication:\r\n - "user1:password1"\r\n - "user2:password2"/g' /volume1/docker/clash/config.yaml
# 去掉重启Docker,调用API刷新:
curl --location --request PUT 'http://localhost:9090/configs' \
--header 'Content-Type: application/json' \
--data-raw '{"path": "/root/.config/clash/config.yaml"}'
if(window.hljsLoader && !document.currentScr(๐•ᴗ•๐).parentNode.hasAttribute('data-s9e-livepreview-onupdate')) {
window.hljsLoader.highlightBlocks(document.currentScr(๐•ᴗ•๐).parentNode);
}
注意:代理端口不要使用默认的 7890,暴露外网可能会被扫描到,出现流量偷跑的情况,另外 UI 界面并不需要,可以测试完后停止 UI 相关容器