不建议端口在外网暴露的使用此方法,该方法并未加密有风险
一、下载
进入 docker ui 界面搜索 clash ,选择 dreamacro/clash 点击下载。
二、运行
然后在映像中启动刚刚下载的镜像。
点击下一步
将 启用自动重新启动勾上,再次点击下一步。
相当于 NAS 开机容器也启动,不需要手动重启 clash 容器 几乎不占用资源
点击新增端口,把容器内端口和 NAS(服务器) 内端口添加映射。
按照如图配置端口。
7890
:http
、https
端口;7891
:socks
端口;9090
:下文配置 UI 界面用到端口。不需要 UI 界面可不配置。
添加文件映射,将 NAS 配置文件映射到容器内。
NAS config.yaml 文件目录按需配置。这里仅供参考。
NAS /docker/clash/config.yaml
容器内 /root/.config/clash/config.yaml
然后点击下一步。
点击完成,即可运行 clash 容器。
服务器命令行同理,docker 搜索容器,配置端口、文件映射,docker run 启动即可。
三、增加 clash 配置
在 clash 客户端点击配置,选中一个配置,右击 外部编辑 中打开配置文件。将打开的文件拷贝一份到 NAS 中。(上一步配置文件映射地址 /docker/clash/config.yaml
)
- 修改
external-controller
为0.0.0.0:9090
广播地址 allow-lan
:true
可以代理局域网
最底部给出示例配置文件。
然后重启容器,读取配置文件,这时就可以设置代理然后使用了。
四、配置 UI 界面(可选)
步骤跟上面一样。
注册表 中搜索
yacd
,选中haishanh/yacd
下载;映像 中启动刚刚下载的镜像;
- 配置端口
9080:80
; - 不需要配置文件映射。
- 配置端口
启动镜像后进入
http://192.168.0.101:9080/
ip 地址根据实际修改。端口号为刚刚配置的映射端口。
默认为自动选择路线,每隔一段时间都会自动选择最优路线,有需求也可以选择其他线路。
我这里因为 openai 需要所以选择美国线路。
五、设置代理
5.1 windows
这里以 Windows 电脑为例(因为没有mac /(ㄒoㄒ)/~~)
点击编辑
修改代理 ip 地址和端口,点击保存即可。
现在就可以愉快的访问 GitHub 了。
5.2 安卓
这里手机系统是
Color OS V12.1
,其他大同小异。
进入 wifi 设置中将代理改成手动,然后配置代理 ip 地址即可。 一般都是单个 wifi 设置。
5.3 苹果
这里手机系统是
IOS 17.1.1
,其他大同小异
进入 wifi 设置中将代理改成手动,然后配置代理 ip 地址即可。
点击存储就可以了。
六、自动更新 clash 配置(暂时有问题,按需使用)
2025/03/01更新
- 此部分内容自动更新代码暂时有问题,有热心网友给出代码博主未尝试是否可用
- 这个自动更新不操作也可以正常用,无需操心
编写定时任务脚本来每日自动更新 clash 配置。
在 /docker/clash/
中增加 auto-reload-clash.sh
脚本
shellcopy codewget -O /volume1/docker/clash/config.yaml 'https://你的订阅地址' 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/' /volume1/docker/clash/config.yaml sed -i 's/interval: 86400 }/interval: 3600 }/' /volume1/docker/clash/config.yaml curl --location --request PUT 'http://localhost:9090/configs' --header 'Content-Type: application/json' --data-raw '{"path": "/root/.config/clash/config.yaml"}'
热心网友提供代码,感谢 -- 2025/03/01
shellcopy codecurl -o /volume1/docker/clash/config.yaml "https://loginxx.?token=flag=clash" 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/' /volume1/docker/clash/config.yaml sed -i 's/interval: 86400 }/interval: 3600 }/' /volume1/docker/clash/config.yaml curl —location —request PUT 'http://localhost:9090/configs' \ —header 'Content-Type: application/json' \ —data-raw '{"path": "/root/.config/clash/config.yaml"}' # 引号都不删减
在这里找到订阅地址
复制这个订阅链接,在脚本中。
最新订阅链接需要添加查询参数
&flag=clash
-- 2024/02/29 更新
然后在 NAS
的 控制面板 -> 任务计划
新增 -> 计划的任务 -> 用户定义的脚本
修改计划执行时间为每天02:00执行
任务设置 -> 运行命令
bash /volume1/docker/clash/auto-reload-clash.sh
点击确定即可。可以右击刚刚创建的任务试运行看看。
至此 NAS 配置 clash 代理已全部完成。😋😋😋
服务器的将这些可视化界面改成命令即可。
clash 配置参考
打个广告个人的邀请链接,这里购买我可以获得一点点返佣🤭
https://xn--4gq62f52gdss.art/#/register?code=9vOcKKO2
ymlcopy codemixed-port: 7890 allow-lan: true bind-address: '*' mode: rule log-level: info external-controller: '0.0.0.0:9090' dns: enable: false ipv6: false default-nameserver: [x.x.x.x, x.x.x.x] enhanced-mode: fake-ip fake-ip-range: x.x.x.x/x use-hosts: true nameserver: ['https://xxx', 'https://xxx'] fallback: ['https://xxx', 'https://xxx', 'https://xxx', 'tls://xxx'] fallback-filter: { geoip: true, ipcidr: [x.x.x.x/x, x.x.x.x/xx] } proxies: - { name: (看这里)每月刷新订阅获取新节点, type: trojan, server: xxx, port: 443, password: xxx, network: ws, udp: true, sni: 0.0.0.0, skip-cert-verify: true } rules: - 'xxx,xxx'
评论 (22 条)
spark 说:
如何在外网通过个人域名访问到docker clash的UI界面?这个端口转发的设置应该怎么做,我试了9090,7890,都无法访问
ye 说:
听说clash跑路了,有影响吗
shrak 说:
太棒了,我在另外一个博主那边看见类似的文章,但是我一直配置出错关于yaml这个映射,我一直苦于google搜索寻求答案,直到看到博主的文章,太棒了
说:
还少一个docker容易定时重启,不重启是不是不会加载更新过的yaml文件
acwan 说:
还是不要用这个方法的好,被扫描到7890端口,一点加密都没有,哪个人都可以用你的代理。我按这个方法假设了一天,发现家里网速不正常,一看路由器,NAS的下载上传速度都异常高,200多M/s,停掉了Clash就正常了。果断删了。
acwan 说:
孤尘 说:
作者大佬你好,我根据教程来操作的,唯一的区别就是你用的clash for windows,我用的clash verge.群晖docker启动就报错停止,日志提示Parse config error: proxy 0: unsupport proxy type: vless,折腾了几天了,实在没办法才想冒昧地让你帮忙处理一下,方便的请您加一下QQ10742935,十分感谢!
HUT 说:
大佬我问下,设置的自动订阅一更新我的“config.yaml”就直接清空变成0B了,下面是我的“auto-reload-clash.sh”内容
wget -O /volume1/docker/clash/config.yaml ‘https://我的订阅地址&flag=clash‘
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/‘ /volume1/docker/clash/config.yaml
sed -i ‘s/interval: 86400 }/interval: 3600 }/‘ /volume1/docker/clash/config.yaml
curl —location —request PUT ‘http://localhost:9090/configs‘ —header ‘Content-Type: application/json’ —data-raw ‘{“path”: “/root/.config/clash/config.yaml”}’
其余步骤一样,求解答
owasdf 说:
请问为什么我刚设置完成后quickconnect是能够使用的,但是过了一天以后quickconnect就一直连接不上了啊?
zzeet 说:
那docker其他容器能用这个clash的代理来上网吗?