开启左侧

求一份完整的yacd和clash自动化教程

发表于:2025-2-7 12:39:14 问答互助 696
悬赏1飞牛币已解决

如题求一份完整的yacd和clash自动化教程,小白求教,论坛两位佬的帖子一个没有图片一个没得权限,看的云里雾里啊

bc419a8f4fe95b246b300eba7135b3d.png

0d7b8887e0431187b6a2e7ffc990295.png

附件: 您需要 登录 才可以下载或查看,没有账号?立即注册
收藏
送赞 1
分享

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

3条回答

我把加图片的原文发给你吧 看能不能有帮助

摘要

本文详细介绍了如何在飞牛OS上通过Docker部署Clash和yacd,并配置自动更新节点脚本。主要内容包括:

  1. 下载Clash与yacd镜像
    • 修改镜像仓库设置,添加1panel仓库。
    • 从飞牛docker镜像仓库下载 dreamacro/clashhaishanh/yacd镜像。
  2. Docker部署Clash与yacd
    • 准备Clash的 config.yaml配置文件,并创建相应的文件夹。
    • 部署Clash容器,配置端口映射和存储路径映射。
    • 部署yacd容器,设置开机自启动和端口映射。
  3. 配置yacd对接Clash
    • 使用飞牛OS的IP和映射端口访问yacd,添加Clash的控制器地址(IP+9090端口)。
    • 进入yacd的web控制台,确认Clash配置。
  4. 设置自动更新节点
    • 配置更新节点脚本 clash_refresh.sh,通过SSH连接到飞牛OS并编辑脚本。
    • 使用 crontab设置定时任务,每天自动执行脚本更新节点。
  5. Windows使用代理
    • 在Windows系统中设置代理服务器,填入飞牛OS的IP地址和Clash的端口。

通过以上步骤,用户可以在飞牛OS上成功部署Clash和yacd,并实现自动更新节点和代理配置。

  1. 自动化安装脚本使用在后台SSH中使用自动化脚本进行Clash&yacd的安装配置,以及自动刷新订阅的脚本配置

下载Clash与yacd镜像

1.**修改可用镜像仓库**

  • 点击仓库设置

a946fbdbe9a91ec75cb911eb057639d8.png

  • 点击添加1panel仓库(如不可用可自行替换)

87ad5b55aa30d8f67e0374a42a55d4cc.png

2.**飞牛docker镜像仓库下载**

  • 搜索==dreamacro/clash==与==haishanh/yacd==并下载

6ab43830e0b3357c69e80c3038d16121.png

f1c707aa2726b6423edb9dd977ee33b8.png

docker部署Clash与yacd

1.**准备Clash的config.yaml配置文件**

  • 我个人习惯是每一个docker一个文件夹

314ad6c7475f6ede5f677a98bf2ec141.png

  • 文件夹创建好后创建上传config.yml文件,文件内容如下 可以现在自己电脑创建好config.yaml文件然后写入以下内容。也可以走ssh 通过vim进行创建 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: ""

2.**部署Clash**

  • 找到Clash本地镜像点击运行

50f33ae18f9d3b3012e0ae8f972e0f97.png

  • 按照实际需求修改容器名称,并勾选开机自启动

b86ab5bb8e436eafe22f36f218d2bc82.png

  • 添加以下端口映射

26a31b630d4a8c998198db5321f0b098.png

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

f0a99dd27dadbce08aa455a8d6f11514.png

**复制原始路径

3e437214c149744bb816c3daee4c45a6.png

将原始路径填入本地路径**

本地路径 装载路径
/vol2/1000/docker/clash/config.yaml /root/.config/clash/config.yaml

e07b90dad51b943643554e9f472e6c2e.png

  • 下一步后勾选创建后启动容器后创建

d78cb4da9e4b455b702cbf5a60727205.png

3.部署yacd

  • 找到本地镜像点击运行

8fc389d0ed49b5c8e3a920e5dedf1f29.png

  • 设置开机自启动 按需修改名称

442b2feb31b5205983cef89c2740750d.png

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

a42598b1eb917b8eec0e323d038bdcf3.png

  • 创建并启动容器
  • 确认容器启动状态

41fa911c6691f1b6b15e3650124a3c21.png

配置yacd对接clash

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

  • 我是1180端口

43f14033961b983e7c8d62d3d1144d96.png

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

7918256b42674c1babfc96daa84abe7d.png

  • 点击添加的链接,进入web控制台

74ef4fc38f131d4835e68e70a82742e3.png

eee7bbe735d06fe9512e4b9cda027295.png

设置自动更新节点

1.**配置更新节点脚本**

  • 先确认飞牛打开了SSH功能

be997b1896257ca01dce1797ed5d8ecd.png

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

2385a7b4e008026c168b1889c80fcc34.png

  • 进入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"}'
  • 脚本创建好了 手动运行测试一下

04ff01bad2dcb38b77a957837115d5d0.png

  • 运行完成后返回yacd的web查看是否更新节点

517313142b0e171bf67e3b53cc766524.png

  • 到这里就说明脚本配置没有问题可以正常使用

2.**配置定时任务**

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

0fc5b7c00e27a34ae005c8a31cf364c2.png

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

47601cc9886dba0debd574ed7999d522.png

  • 给脚本加可执行权限
  • chmod +x /vol2/1000/docker/clash/clash_refresh.sh

到此已经配置完成所有内容

window使用代理

1.**搜索代理服务器设置**

dabba7ba67083575b8716a9ef13cfdde.png

  • 点击设置

8483843c792603abb1028234d5b447d4.png

  • 填入飞牛IP地址和Clash端口

713d90c197929aa8d44454f1113581be.png

自动化安装脚本使用

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

image.png

#!/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

2025-2-7 12:39:15 回复
实在蛋疼不想折腾了,大佬可以帮忙远程吗 有偿,虽然不多  详情 回复
2025-2-7 19:17
感谢大佬的帮助,但是我刚刚没有注意里面的储存位置,所以填错了,想请问一下有没有办法删除,另外这些代码感觉好多啊,是不是几种办法,完全小白,求教  详情 回复
2025-2-7 18:39
感谢大佬的帮助,但是我刚刚没有注意里面的储存位置,所以填错了,想请问一下有没有办法删除,另外这些代码感觉好多啊,是不是几种办法,完全小白,求教
2025-2-7 18:39:18 回复
实在蛋疼不想折腾了,大佬可以帮忙远程吗
有偿,虽然不多
2025-2-7 19:17:03 回复
悬赏 问答
  悬赏     1 飞牛币
  回答人数     3 人
话题