服务端部署 Clash + Yacd 助力网上冲浪(Docker + Podman)

Published: 2022-12-14

Tags: Yxorp

本文总阅读量

部署服务的方案

  • 推荐在国内云主机上部署,这样个人设备能顺利连接服务器,随时都能使用云主机转发请求。
  • 或者在树莓派、家庭服务器上部署,通过家庭网络的设备都能方便接入。

服务端部署 Clash

从网络服务平台获取 clash 配置文件 config.yaml,一些平台仅提供订阅,这种情况可以使用桌面版 Clash 加载并生成配置文件。(互联网上的服务需务必设置认证)

添加认证

在配置文件 config.yaml 中添加修改如下设置,分别为 RESTful API 监听地址、RESTful API 密钥,另一个是认证代理的用户名密码。

external-controller: '0.0.0.0:9090'
secret: "your-secret"
authentication:
 - "username:passwd"

启动服务

将配置放置在 /etc/clash/config.yaml

$ sudo docker run -d --name clash --restart=unless-stopped  -v "/etc/clash/config.yaml:/root/.config/clash/config.yaml" -p 9090:9090 -p 7890:7890 dreamacro/clash

在本地测试服务器端口是否可达,如果访问不通,排查云主机是否开放了端口。

$ telnet [服务器IP] 7890

telnet clash service port

如果在配置文件中使用的是 mixed-port,则 socks5 和 http 代理共用 7980 端口,代理地址都为

username:passwd@[服务器IP]:7890

此时 HTTP 代理已经可以工作,使用 curl 工具测试代理。

curl --socks5 user:passwd@[服务器IP]:7890 https://ifconfig.me/ip

输出 IP 地址为代理提供的地址说明代理已工作。

Cash Web 面板(Yacd)

Yach 是 Clash Web 版的面板,可以查看服务状态,上传下载的流量统计信息。

$ sudo docker run -p 1234:80 -d --name yacd ghcr.io/haishanh/yacd:master

访问 http://[服务器IP]:1234 进入页面,填写 Clash 地址,本例为 http://[服务器IP]:9090,secret 填写 config.yaml 中配置的 secret 值,添加后点击新增的链接进入页面。

yacd panel

clash 及 yacd 的部署使用到这里就记录完成了。

以下是 Podman 部署方式(可选)

$ podman run -d --name clash  -v "/etc/clash/config.yaml:/root/.config/clash/config.yaml" -p 9090:9090 -p 7890:7890 dreamacro/clash

$ podman run -p 1234:80 -d --name yacd ghcr.io/haishanh/yacd:master

因为 podman 无守护进程,所以不能在系统重启时自动启动容器。

配置自启动,可查阅 podman generate systemd 使用,此处不做过多记录。