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,实在是太方便了

28 条评论

昵称
  1. david

    确定配置文件和上图一样,hostname是docker所在机器的ip

    1. mokeyjay

      这就很奇怪了,我也不知是什么原因。safari 浏览器?

      1. david

        chrome

      2. david

        博主,尝试了多种方法无法定位到原因,方便加下QQ吗?3061127 谢谢

      3. david

        博主,方便加下你的Telegram 吗?

        1. mokeyjay

          关于页面有哈,不过这会儿在加班暂时没空

  2. david

    通过浏览器访问目的地址返回如下内容 “hello”: “clash”,求博主答疑,谢谢

  3. david

    我也遇到了同样的问题,配完hostname后提示Failed to connect 求答疑,谢谢

    1. mokeyjay

      先确定 clash 配置文件是否跟我图上一样;再确定你填的 hostname 是否为 docker 所在机器的 ip

  4. Kate

    为什么图形界面老是显示127.0.0.1:9090
    我在群晖上设置的
    我用电脑浏览器访问的图形界面

    1. mokeyjay

      显示在哪里?无法修改么?