我把加图片的原文发给你吧 看能不能有帮助
摘要
本文详细介绍了如何在飞牛OS上通过Docker部署Clash和yacd,并配置自动更新节点脚本。主要内容包括:
- 下载Clash与yacd镜像:
- 修改镜像仓库设置,添加1panel仓库。
- 从飞牛docker镜像仓库下载
dreamacro/clash 和 haishanh/yacd 镜像。
- Docker部署Clash与yacd:
- 准备Clash的
config.yaml 配置文件,并创建相应的文件夹。
- 部署Clash容器,配置端口映射和存储路径映射。
- 部署yacd容器,设置开机自启动和端口映射。
- 配置yacd对接Clash:
- 使用飞牛OS的IP和映射端口访问yacd,添加Clash的控制器地址(IP+9090端口)。
- 进入yacd的web控制台,确认Clash配置。
- 设置自动更新节点:
- 配置更新节点脚本
clash_refresh.sh ,通过SSH连接到飞牛OS并编辑脚本。
- 使用
crontab 设置定时任务,每天自动执行脚本更新节点。
- Windows使用代理:
- 在Windows系统中设置代理服务器,填入飞牛OS的IP地址和Clash的端口。
通过以上步骤,用户可以在飞牛OS上成功部署Clash和yacd,并实现自动更新节点和代理配置。
- 自动化安装脚本使用:
在后台SSH中使用自动化脚本进行Clash&yacd的安装配置,以及自动刷新订阅的脚本配置
下载Clash与yacd镜像
1.**修改可用镜像仓库**


2.**飞牛docker镜像仓库下载**
- 搜索==dreamacro/clash==与==haishanh/yacd==并下载


docker部署Clash与yacd
1.**准备Clash的config.yaml配置文件**

2.**部署Clash**



- 添加存储路径映射(本地路径可以按照自己需求进行改动)
需要选择之前config.yaml原始路径
获取原始路径
**右键-详细信息

**复制原始路径

将原始路径填入本地路径**
本地路径 |
装载路径 |
/vol2/1000/docker/clash/config.yaml |
/root/.config/clash/config.yaml |


3.部署yacd


- 修改端口映射
由于默认80端口已经被占用,需要修改到空闲端口,可以按照自己的喜好修改


配置yacd对接clash
1.**使用飞牛OS的IP+刚才映射的端口进行访问yacd**

- 添加本机ip地址+9090端口(如果端口映射到其他的就修改为映射的端口)



设置自动更新节点
1.**配置更新节点脚本**

- 使用putty等ssh工具链接,并sudo su提权 用户名密码均为web登录的用户名密码

-
进入clash docker 目录使用vi编辑脚本
脚本名称为clash_refresh.sh 内容如下
# 下载订阅连接中的节点配置文件(替换xxxxxx的内容,有的尾部需要加入参数,如&flag=clash):
wget -O "/vol2/1000/docker/clash/config.yaml" "https://XXXXXXX&flag=clash"
# 修改节点配置文件部分端口、IP地址(每家配置文件各不相同,具体根据自己来,在线测试sed [https://sed.js.org/](https://club.fnnas.com/https://sed.js.org/)):
sed -i "s/mixed-port: 7890/port: 7890\nsocks-port: 7891/; s/external-controller: '127.0.0.1:9090'/external-controller: '0.0.0.0:9090'/" "/vol2/1000/docker/clash/config.yaml"
# 重新加载配置文件(参考官网API调用方法 [https://clash.gitbook.io/doc/restful-api/config](https://club.fnnas.com/https://clash.gitbook.io/doc/restful-api/config)):
curl --location --request PUT 'http://localhost:9090/configs' \
--header 'Content-Type: application/json' \
--data-raw '{"path": "/root/.config/clash/config.yaml"}'
-
脚本创建好了 手动运行测试一下


2.**配置定时任务**
- 在脚本可以正常更新节点后我们要去配置定时任务
- 利用crontab 去定时执行脚本
crontab -e
增加如下内容 我的是每天3点去执行我的clash刷新脚本,里面脚本路径按照自己时间情况填写 0 3 * * * ./vol2/1000/docker/clash/clash_refresh.sh

- 随后按Ctrl+x 再按y 再按回车退出
配置完成后按crontab -l 查看是否有自己添加的那台定时任务

到此已经配置完成所有内容
window使用代理
1.**搜索代理服务器设置**



自动化安装脚本使用
1.**脚本内容: 除了yacd的映射端口其余端口不建议修改哦!如果修改了请自行修改对应端口哦 **需要修改URL为自己的机场订阅URL!!!! 需要修改URL为自己的机场订阅URL!!!! 需要修改URL为自己的机场订阅URL!!!! 需要修改URL为自己的机场订阅URL!!!! 需要修改URL为自己的机场订阅URL!!!!

#!/bin/bash
# 用户配置区域
SUBSCRIBE\_URL="https://231321312.21312321312321.com/api/v1/client/subscribe?token=sdadasdasdsa233asd&flag=clash"
# 请将上述URL替换为您自己的订阅地址保留&flag=clash
# 显示帮助信息
show\_help() {
echo "用法: \$0 [选项]"
echo "选项:"
echo " -i 安装并启动Clash和YACD管理界面"
echo " -r 刷新订阅配置"
echo " -h 显示此帮助信息"
echo
echo "如果没有提供选项,默认显示帮助信息"
}
# 获取脚本所在目录
SCRIPT\_DIR=**(dirname "**0")
# 解析命令行参数
if [[ \$# -eq 0 ]]; then
show\_help
exit 0
fi
while getopts ":irh" opt; do
case \$opt in
i)
INSTALL=true
;;
r)
REFRESH=true
;;
h)
show\_help
exit 0
;;
\*)
echo "无效选项: -\$OPTARG" >&2
show\_help
exit 1
;;
esac
done
# 安装Clash
if [[ \$INSTALL == true ]]; then
# 生成config.yaml配置文件
cat > \$SCRIPT\_DIR/config.yaml < port: 7890
socks-port: 7891
redir-port: 7892
allow-lan: true
mode: Rule
log-level: silent
external-controller: '0.0.0.0:9090'
secret: ""
EOF
echo "Clash 配置文件生成完成"
# 运行Docker容器
docker run -d
--name clash
--hostname clash
-v \$SCRIPT\_DIR/config.yaml:/root/.config/clash/config.yaml:rw
-p 7890:7890
-p 7891:7891
-p 7892:7892
-p 9090:9090
--restart no
dreamacro/clash:latest
echo -e "\\033[32mClash 容器已成功创建并启动\\033[0m"
# 提取代理端口
HTTP\_PORT=\$(docker port clash 7890/tcp | cut -d: -f2)
SOCKS5\_PORT=\$(docker port clash 7891/tcp | cut -d: -f2)
REDIR\_PORT=\$(docker port clash 7892/tcp | cut -d: -f2)
CLASH\_EXT\_PORT=\$(docker port clash 9090/tcp | cut -d: -f2)
# 显示端口信息
echo "HTTP代理端口: \$HTTP\_PORT"
echo "SOCKS5代理端口: \$SOCKS5\_PORT"
echo "Redir端口: \$REDIR\_PORT"
# 获取本地IP地址
LOCAL\_IP=**(hostname -I | awk '{print **1}')
# 运行YACD容器
docker run -d
--name yacd
--hostname yacd
-p 2888:80
-e YACD\_DEFAULT\_BACKEND=http://**LOCAL\_IP:**CLASH\_EXT\_PORT
--restart no
haishanh/yacd:latest
# 显示管理信息
echo -e "\\033[32mYACD 管理界面已启动\\033[0m"
echo -e "\\033[32mClash 管理端口: \$CLASH\_EXT\_PORT\\033[0m"
YACD\_PORT=\$(docker port yacd 80/tcp | cut -d: -f2)
echo -e "\\033[32mYACD 访问地址: http://**LOCAL\_IP:**YACD\_PORT\\033[0m"
fi
# 刷新订阅配置
if [[ \$REFRESH == true ]]; then
echo "开始更新订阅配置..."
if wget -O "**SCRIPT\_DIR/config.yaml" "**SUBSCRIBE\_URL"; then
# 修改配置文件
sed -i "s/mixed-port: 7890/port: 7890\\nsocks-port: 7891/; s/external-controller: '127.0.0.1:9090'/external-controller: '0.0.0.0:9090'/" "\$SCRIPT\_DIR/config.yaml"
# 重新加载配置
if curl --location --request PUT "http://localhost:9090/configs"
--header 'Content-Type: application/json'
--data-raw '{"path": "/root/.config/clash/config.yaml"}'; then
echo -e "\\033[32m订阅配置更新成功\\033[0m"
else
echo -e "\\033[31m配置重载失败,请检查Clash是否正常运行\\033[0m"
fi
else
echo -e "\\033[31m订阅配置下载失败,请检查网络连接或订阅地址\\033[0m"
fi
fi
2.**使用方法 首先要能ssh连到飞牛nas,其次将脚本vi编辑放到你docker需要使用的目录。或者你可以复制了到自己电脑的文本文档将命名为run_clash.sh 记得改文件后缀名然后上传到你需要的目录。**
以下是我使用的日志 日志已经脱敏就参考执行过程即可 bash run_clash.sh -i 安装并启动Clash和YACD管理界面 bash run_clash.sh -r 刷新订阅配置
root@ZsjCloud:/vol2/1000/docker/clash# bash run_clash.sh
用法: run_clash.sh [选项]
选项:
-i 安装并启动Clash和YACD管理界面
-r 刷新订阅配置
-h 显示此帮助信息
如果没有提供选项,默认显示帮助信息
root@ZsjCloud:/vol2/1000/docker/clash# bash run_clash.sh -i
Clash 配置文件生成完成
a3d4323fbdb325fa85bcced441f3944e37e1017614275ef5b612751458347516
Clash 容器已成功创建并启动
HTTP代理端口: 7890
SOCKS5代理端口: 7891
Redir端口: 7892
85fb2fb033fd57a470e9bf57d8643f25037339b914353fad044e0e4fb4e63bce
YACD 管理界面已启动
Clash 管理端口: 9090
YACD 访问地址: [http://192.168.140.88:2888](https://club.fnnas.com/http://192.168.140.88:2888)
root@ZsjCloud:/vol2/1000/docker/clash# vi run_clash.sh
root@ZsjCloud:/vol2/1000/docker/clash# bash run_clash.sh -r
开始更新订阅配置...
--2025-01-18 20:57:01-- [https://sdasdasdasd.qytsublink.com/api/v1/client/subscribe?token=dsadasdsadsadsadasd&flag=clash](https://club.fnnas.com/https://sdasdasdasd.qytsublink.com/api/v1/client/subscribe?token=dsadasdsadsadsadasd&flag=clash)
Resolving sdadasdasda.qytsublink.com (asdasdasdasd.qytsublink.com)... 192.168.0.0
Connecting to sadasdsadas.qytsublink.com (sadasdasdasd.qytsublink.com)|192.168.0.0|:443... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: [https://link01.sadasdasd.pro/api/v1/client/subscribe?token=sdasadasdsadsadwsa&flag=clash](https://club.fnnas.com/https://link01.sadasdasd.pro/api/v1/client/subscribe?token=sdasadasdsadsadwsa&flag=clash) [following]
--2025-01-18 20:57:01-- [https://link01.sdadsadasdas.pro/api/v1/client/subscribe?token=dfsadasdsadsaeasdasdas&flag=clash](https://club.fnnas.com/https://link01.sdadsadasdas.pro/api/v1/client/subscribe?token=dfsadasdsadsaeasdasdas&flag=clash)
Resolving link01.dsadasdasdas.pro (link01.dsadasdasd.pro)... 192.168.0.0
Connecting to link01.asdasdasdasdas.pro (link01.asdasdasdasd.pro)|192.168.0.0|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: ‘./config.yaml’
./config.yaml [ <=> ] 39.54K --.-KB/s in 0.08s
2025-01-18 20:57:03 (500 KB/s) - ‘./config.yaml’ saved [40493]
订阅配置更新成功
root@ZsjCloud:/vol2/1000/docker/clash#```*
3.**配置定时更新 先给脚本加权限**
chmod +x run_clash.sh
然后crontab -e 增加一掉定时规则
0 3 * * * ./vol2/1000/docker/clash/run_clash.sh -r /dev/null 2>&1 |