avatar

十六小站

欢迎来到我的个人主页! 期待与您分享我的经验与故事,一起探索技术的无穷可能!

  • 首页
  • NAS专题
  • 关于
Home 群晖Docker安装和运行Clash并自动更新订阅
文章

群晖Docker安装和运行Clash并自动更新订阅

Posted 2023-09-15 Updated 2024-10- 19
By 十六
38~49 min read

原文链接 https://fugary.com/?p=363

机场链接

先奉上我对比下来最划算的机场飞兔云

​ 最近买了Clash的机场订阅地址,试用发现Clash梯子访问网络还是比较方便的,不过需要每台电脑或者设备上安装相应的软件,相对来讲比较麻烦,其实局域网内可以启用Allow LAN模式,其他设备可以通过这个代理访问,正好本地局域网中有一台长期运行的NAS,可以通过它作为长期代理。

注意:本文不涉及怎么购买订阅地址,请自行解决。

准备Clash配置文件

新增一个config.yaml文件,需要上传到群晖的/docker/clash/config.yaml,这个yaml文件可以从本地电脑的Clash中复制出来:

image-20220703164622625

注意:这里只能用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

配置文件准备好,上传到群晖之后,就可以开始了。

Docker安装Clash镜像

进入群晖Docker套件,搜素clash,可以看到dreamacro/clash,双击下载下来。

image-20220703140044584

对应开源地址:

GitHub地址:https://github.com/Dreamacro/clash Docker地址:https://registry.hub.docker.com/r/dreamacro/clash/

参考配置文件:https://github.com/Dreamacro/clash/wiki/configuration

配置Clash容器

找到刚才下载的镜像,现在可以开始配置Clash容器了,点击【启动】,再下一步:

image-20220703142612130

配置端口,目前开放的端口最好映射出来,根据实际情况配置本地端口,容器端口是固定的,如果是mixed-port: 7890,可以少暴露端口:

image-20220703143036183

然后映射配置文件,本地配置文件/docker/clash/config.yaml映射到容器的/root/.config/clash/config.yaml

image-20220703143230426

配置完成可以启动了。

其实clash代理已经可以使用了,不过为了方便查看,可以再用UI工具查看一下。

使用UI界面

在线版UI界面:http://yacd.haishan.me/ (目前似乎有兼容问题)

输入对应的地址即可,比如本地的:http://192.168.31.126:9090

也可以自己安装一个UI容器,名字叫:haishanh/yacd,搜索后下载安装

image-20220703165059849

下载后,进入启动配置,配置自动重新启动:

image-20220703165339662

配置端口:

image-20220703165555219

启动完毕。

访问:http://192.168.31.126:9080/ 添加clash服务的地址

image-20220703170428513

进入之后可以看到clash的订阅信息了:

image-20220703170538462

UI安装配置完成。

代理使用

以iOS手机为例,在【无线局域网】设置中,已连接的WIFI右边的信息图标:

配置HTTP代理:

image-20220703170819896

然后就可以尝试访问https://google.com测试一下了。

自动更新

目前这种操作方式不能自动更新代理,可以考虑使用定时任务来更新,编写定时任务脚本,并存放到/docker/clash/reload-clash.sh:

注意:如果订阅地址用浏览器打开不是yml格式,不能使用这个方法,可以尝试在url后面增加参数:?target=clash或clash=1或flag=clash之类的看看是否能转换出yml数据。

# 下载节点配置文件,根据实际的订阅地址填写
curl -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

配置群晖定时任务,进入【控制面板】->【任务计划】:

image-20220703175703733

然后新增一个任务,【用户定义的脚本】任务,并配置名称等

chrome_NvhlmHcwVn

配置运行频率:

image-20220704085518944

配置运行脚本bash /volume1/docker/clash/reload-clash.sh:

chrome_MLTqofS0wr

需要注意路径,完整路径是要包含/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

config.yaml文件下载不下来或者下载下来为空

sudo -i
##进入root身份证
ipkg remove wget
##卸载原有wget
ipkg install wget-ssl
##安装支持https的wget

新自动刷新

运行发现,重启Docker方式刷新并不是很好,参考了API文档,发现可以用另外的方式更新:

https://clash.gitbook.io/doc/restful-api/config

文件路径:/docker/clash/reload-clash.sh

实际配置到【任务计划】中需要全路径bash /volume1/docker/clash/reload-clash.sh:

# 下载节点配置文件,根据实际的订阅地址填写
curl -o /volume1/docker/clash/config.yaml "https://xxxxxx?token=xxxx&flag=clash"
# 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"}'

注意:代理端口不要使用默认的7890,暴露外网可能会被扫描到,出现流量偷跑的情况,另外UI界面并不需要,可以测试完后停止UI相关容器

NAS专题
群晖
License:  CC BY 4.0
Share

Further Reading

Nov 1, 2023

群晖搭建iSCSI服务

iSCSI是什么 这里首先来介绍下iSCSI。iSCSI(Internet Small Computer System Interface)是一种用于在IP网络上传输SCSI协议的存储协议。它允许计算机通过网络连接到远程存储设备,并将其视为本地连接的存储设备。 传统上,SCSI(Small Comp

Sep 27, 2023

群晖NAS使用nps获取到真实访问IP

背景 由于使用黑群晖,自己使用nps搭建的内网穿透,由于经常有莫名的访问日志,又看不到访问者IP,未配置前,如果: 能够看到所有访问的ip都是127.0.0.1,日志也无任何参考意义。 思路 收到一片博客启发,自己动手搭建试了试然后成功了。 原文地址:http://k.sina.com.cn/art

Sep 15, 2023

群晖Docker安装和运行Clash并自动更新订阅

原文链接 https://fugary.com/?p=363 机场链接 先奉上我对比下来最划算的机场飞兔云 最近买了Clash的机场订阅地址,试用发现Clash梯子访问网络还是比较方便的,不过需要每台电脑或者设备上安装相应的软件,相对来讲比较麻烦,其实局域网内可以启用Allow LAN模式,其他设备

OLDER

好站收藏

NEWER

onlyoffice修改字体样式和大小

Recently Updated

  • Onlyoffice编译
  • K6+Playwright实现并发测试
  • 简单规则引擎
  • 在WEB中子线程可以访问Request上下文
  • onlyoffice配置

Trending Tags

Java Docker 前端 中间件 数据库 群晖 unraid

Contents

©2025 十六小站. 陕ICP备2023009742号-2