Docker

使用 Docker 搭建图形化 Clash 服务端并添加订阅

前提条件当然是确保你成功安装了 Docker ,以及掌握了通过 Clash 来科学上网的方式

准备订阅文件

首先,打开你的科学上网供应商网站,点击类似这样的按钮复制 Clash 的订阅链接
801d5ee6563c3014b3a6c3c145f2ccef.png
(如果你的供应商不支持 Clash 订阅,那就不用看下去了)

接着把订阅链接粘贴在浏览器地址栏中,回车,正常情况下会下载下来一个 .yaml 文件。内容大概是这样:
bfb7367a3bb725d59cab3233b0fbc3a1.png
将其重命名为 config.yaml,用专业编辑器打开它,确保 allow-lan 的值为 true,否则搭起来也连不上

部署 Clash 核心

Clash 有官方的Docker 部署教程,以及完整的配置项说明文档。有兴趣深入了解的可以看看,咱们简单粗暴点略过 docker-compose 直接上命令

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

注意,这条命令中的端口号要根据你自身情况来。打开你的 config.yaml,查看其中 portsocks-portredir-portmixed-portexternal-controller 的值,根据你的实际需要来暴露相应的端口。如果你不知道这些英文是什么意思,请查看上面提到过的配置项说明文档
一般来说,只需要暴露 mixed-portexternal-controller 这两个端口就够了。如果你的配置文件中没有 mixed-port,那么可以将 port 改为 mixed-port,这样方便一些,省的区分 http 和 socks

回车,不出意外的话会出现一串16进制字符,此时 docker ps 可以看到我们刚才跑起来的 clash 核心

部署图形化控制台

如果你有认真阅读 clash 的官方文档,你会发现其实 clash 核心自带一个图形化控制台。但是部署稍微麻烦一些,且不够美观强大。这里我们选择第三方的一个控制台 haishanh/yacd
有三种方案,选一个你喜欢的即可:

1、用现成的在线版控制台

http://yacd.haishan.me/

2、静态部署

git clone -b gh-pages https://github.com/haishanh/yacd.git,用浏览器访问其中的 index.html。这是 yacd 作者编译好的版本

3、自行 Docker 部署

docker run -p 1234:80 -d --rm --name yacd haishanh/yacd

回车把控制台跑起来

假设 docker 所在机器的 ip 为 192.168.0.5,那么我们就访问 192.168.0.5:1234,可以看到如下登录界面
4b7ee28ab2d9d42552819b096e3d0a2b.png
根据你的实际情况填写 ip 和 端口号(即配置文件中 external-controller 内的端口号),点击 Confirm

接下来的操作对于用过 clash 的你来说应该就比较熟悉了
8fbdc5369c86ec84467fb17e391f0095.png
点击 Proxies,展开节点列表,点击测速,选一个没有超时的节点即可

大功告成

整个部署过程到此结束,可以将 192.168.0.5:7890 设为代理地址尝试科学上网了。如果连不上,请先检查防火墙设置等等
对于 zsh 用户,再次安利一波 zsh-proxy,实在是太方便了

12 条评论

昵称
  1. 岷江灵隐

    非常感谢mokeyjay大佬的帮助,终于找到了问题所在,发现是服务商提供的yaml配置文件与docker上的dreamacro/clash最新版本不兼容导致的。服务商提供的配置文件是基于
    clash_for_windows 0.10.1版本生成的,而最新版本已经是0.11.3了。而在docker上的dreamacro/clash的最新版本为1.0.0,我尝试着换了早一个版本的0.20.0版本,终于成功的加载了yaml配置文件,在yacd终于看到了熟悉的节点。

  2. 岷江灵隐

    大佬你好,请教一下,我按照你的教程使用docker创建了dreamacro/clash和haishanh/yacd两个容器,也弄好了clash的配置文件,节点信息都是可以使用的。启动容器之后,可以看到clash的登陆界面,但是进去之后就是找不到节点信息,尝试了各种办法,都不行,不知道是哪一步错误了,希望得到你的帮助。方便的话可以加一下QQ吗,QQ;874570048

    1. 岷江灵隐

      我是在群晖中用docker安装clash,但是就是获取不到配置文件中的节点信息

      1. mokeyjay

        你登录到 clash 的容器中去看看 /root/.config/clash/config.yaml,我估计是这个文件没有被成功加载进去。你用群辉的 docker 的话不能按照我那里填的 $PWD/config.yaml,必须用你配置文件的完整路径

        1. 岷江灵隐

          yaml的路径我修改过了,我尝试着在配置文件中添加密码,登录界面也确实更新到了密码,但就是节点没有加载

          1. mokeyjay

            clash 前段时间改过一波配置文件格式,可能是你的服务商没有对格式进行更新。你可以先在 github 上下个最新的 clash 客户端,看看能否正常你服务商提供的配置文件

    2. mokeyjay

      yacd 的登录界面你填的是什么?

      1. 岷江灵隐

        登录界面我也是按照我的ip和设置的端口登录的,可以登录进去,只是没有节点信息,方便的话,可以加个好友聊一下吗,方便发图片

        1. mokeyjay

          QQ基本不用,欢迎使用 telegram 或者邮件联系我

  3. totoro625

    图形界面不需要自己弄一个呀,本质就是个静态页面。http://yacd.haishan.me/ / http://clash.razord.top/ 这两个都可以用的(主要是不想记一个端口号)

    1. mokeyjay

      也、也是哦

    2. mokeyjay

      编辑了一下补充上了