Docker

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

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

准备订阅文件

首先,打开你的科学上网供应商网站,点击类似这样的按钮复制 Clash 的订阅链接
801d5ee6563c3014b3a6c3c145f2ccef.png

如果你的供应商不支持 Clash 订阅,那就不用看下去了

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

部署 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 核心

以下我们假设 Docker 所在机器的 IP 为 192.168.0.5、配置文件中 external-controller 的值为 '0.0.0.0:9090'(记住这个 9090)
509766207aa5fa66f02d5f245a80ec14.png

部署图形化控制台

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

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

http://yacd.haishan.me/

在后续使用中如果发现在线控制台打不开,请先检查是不是你的科学上网节点挂了

2、静态部署

git clone -b gh-pages https://github.com/haishanh/yacd.git

这是 yacd 作者编译好的版本,克隆下来之后用浏览器访问其中的 index.html 即可

3、自行 Docker 部署

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

回车,等待容器运行起来,然后访问 192.168.0.5:1234 即可

配置图形化控制台

7d2a6630ddfa5b32aa86b1899b4ffbfc.png
此处的 API Base URLhttp://192.168.0.5:9090。然后点击 Add 按钮
然后下面就会出现一行 http://192.168.0.5:9090,点击它连接到 Clash 核心

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

大功告成

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

34 条评论

昵称
  1. 长留仙

    装了容器启动不起来。1,4 。1。5都试过了

  2. 长留仙

    用了上面的链接装了容器一直重启不起来

  3. 小白

    爱快3.5中Docker里面怎么部署Clash,能否给个教程

    1. mokeyjay

      你送我一台我就出个教程😆