Ubuntu Server利用Clash实现git代理

背景

四月份vaala向我分享了它的科学上网小助手,利用的是clash。界面十分漂亮。这个暑假我也自己购买了国外的vps,实现了自己的节点。但是我能够使用代理一直都只是在Windows和Android,在github上你很容里能找到Clash For Windows和Clash For Android,但是如何在Linux上利用Clash实现代理呢?

另一方面,我在实验室主机上每次写完博客,试图git push的时候,都是卡的要死,都是看运气,也让我萌生了在Ubuntu Server实现代理的迫切愿望。

昨天花了一点时间终于实现了在Ubunutu Server【不是Desktop版,没有图形化界面,只有终端】实现git代理。

主要过程

  1. 首先吐槽一下作者的github wiki。明明是一个 優れました Chinese,却不给个中文文档。这就算了,面向国际化,能够理解。但是文档也是写的神秘莫测,怕别人看懂似的,从头到尾没有介绍清楚一个完整的使用方法,而写了一堆奇怪的东西。

  2. 在Ubuntu Server上实现Clash代理,我们不可或缺的是一个网页版的客户端,因为没有可视化界面,那真是虚空代理了,都不知道自己到底代上没。

  3. 作者的github放出了许多release。但是我们一个也用不上,我们用最简单的docker实现代理。拉取以下两个镜像并分别生成容器。

    1
    2
    3
    4
    docker pull dreamacro/clash
    docker pull haishanh/yacd
    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
    docker run -p 1234:80 -d --name clash-dashboard haishanh/yacd
  4. 解释一下,dreamacro/clash是clash核心,里面运行着clash可执行文件。我们需要在它的容器里放一个config.yaml,即clash的配置文件,生成容器的时候我们和主机的$PWD/config.yaml进行了绑定。 haishanh/yacd是clash dashboard,haishanh做的第三方网页客户端,比原版ui更加漂亮,虽然我都没有找到原本的dashboard在哪,作者写的文档太拉了

  5. 这里要特别注意,我们的config.yaml里有两个项特别重要的配置。

    config.yml

    这个external-controller就是相当于额外的一个api,这个9090端口之后的dashboard会用到,而且需要设置为0.0.0.0,保证dashboard容器能够访问到。

    然后这个allow-lan必须设置为true。allow-lan按我的理解就是看你局域网里的其他应用能不能访问你的7890端口,如果设置为false是无法实现代理的,所以要代理就得全程开着。

  6. 确保config.yaml没错并且运行完以上四个命令后,就可以进dashboard了,url就是的主机ip:1234

    一开始会让你选择服务的ip和端口。

    选择服务地址

    默认的http://127.0.0.1:9090是不可能成功进去的,因为这个127.0.0.1代表的是dashboard的本地,而真正的clash服务是在令一个容器内,所以我们真正的地址应该是主机ip:9090一开始在这里卡了好久

  7. 然后就能进入图形化界面啦。

    界面1

    界面2

  8. 然后我们可以利用 curl -x来检测代理是否成功,尝试利用代理访问谷歌。

    1
    curl -x http://127.0.0.1:7890 https://www.google.com.hk/

    curl测试

    如果返回结果了,那么说明你的clash成功了!

  9. 那怎么给git设置代理呢?十分简单,只需要要终端中输入以下两条命令,之后的git push就不怕卡住啦!

    1
    2
    git config --global http.proxy http://127.0.0.1:7890
    git config --global https.proxy https://127.0.0.1:7890

战术总结

这次终于是实现了Ubuntu Server里的代理,过程较为曲折,结果十分成功。

这里再打个广告,我的科学上网小助手更新了一个永久节点,但是由于内容比较敏感,所以文章加密了。迫切科学上网的同学可以联系我获取文章密码。延续无私奉献的黄金精神2333

自建科学上网小助手文章

Ubuntu Server利用Clash实现git代理
https://wuuconix.link/2021/08/14/clash-dashboard/
作者
wuuconix
发布于
2021年8月14日
许可协议