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代理。
主要过程
-
首先吐槽一下作者的github wiki。明明是一个
優れました Chinese
,却不给个中文文档。这就算了,面向国际化,能够理解。但是文档也是写的神秘莫测,怕别人看懂似的,从头到尾没有介绍清楚一个完整的使用方法,而写了一堆奇怪的东西。 -
在Ubuntu Server上实现Clash代理,我们不可或缺的是一个网页版的客户端,因为没有可视化界面,那真是虚空代理了,都不知道自己到底代上没。
-
作者的github放出了许多release。但是我们一个也用不上,我们用最简单的docker实现代理。拉取以下两个镜像并分别生成容器。
1
2
3
4docker 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 -
解释一下,dreamacro/clash是clash核心,里面运行着clash可执行文件。我们需要在它的容器里放一个config.yaml,即clash的配置文件,生成容器的时候我们和主机的
$PWD/config.yaml
进行了绑定。 haishanh/yacd是clash dashboard,haishanh做的第三方网页客户端,比原版ui更加漂亮,虽然我都没有找到原本的dashboard在哪,作者写的文档太拉了。 -
这里要特别注意,我们的config.yaml里有两个项特别重要的配置。
这个
external-controller
就是相当于额外的一个api,这个9090端口之后的dashboard会用到,而且需要设置为0.0.0.0,保证dashboard容器能够访问到。然后这个allow-lan必须设置为true。allow-lan按我的理解就是看你局域网里的其他应用能不能访问你的7890端口,如果设置为false是无法实现代理的,所以要代理就得全程开着。
-
确保config.yaml没错并且运行完以上四个命令后,就可以进dashboard了,url就是的
主机ip:1234
一开始会让你选择服务的ip和端口。
默认的
http://127.0.0.1:9090
是不可能成功进去的,因为这个127.0.0.1代表的是dashboard的本地,而真正的clash服务是在令一个容器内,所以我们真正的地址应该是主机ip:9090
。一开始在这里卡了好久 -
然后就能进入图形化界面啦。
-
然后我们可以利用
curl -x
来检测代理是否成功,尝试利用代理访问谷歌。1
curl -x http://127.0.0.1:7890 https://www.google.com.hk/
如果返回结果了,那么说明你的clash成功了!
-
那怎么给git设置代理呢?十分简单,只需要要终端中输入以下两条命令,之后的git push就不怕卡住啦!
1
2git config --global http.proxy http://127.0.0.1:7890
git config --global https.proxy https://127.0.0.1:7890
战术总结
这次终于是实现了Ubuntu Server里的代理,过程较为曲折,结果十分成功。
这里再打个广告,我的科学上网小助手更新了一个永久节点,但是由于内容比较敏感,所以文章加密了。迫切科学上网的同学可以联系我获取文章密码。延续无私奉献的黄金精神2333