Docker搭建在线网页代理实践记录
有什么用
在线网页代理,docker-compose搭建访问国际互联网:https://c.carlzeng.top:3/web
使用方法
- 打开在线测试访问国际互联网 或拉到最下方的‘预览’
- 在文本框中键盘按键输入要访问的网址( 比如: www.google.com)
- 键盘回车
- 网页会弹出匿名访问的国际互联网google.com,或者输入www.youtube.com回车访问
- 在这访问的新页面就可以继续访问国际互联网(比如继续点击页面中的视频等...)
预览
实现方法
个人安装路径(仅供参考)/www/server/panel/data/compose/hideipnetwork-web
最终版本的docker-compose.yml文件:
version: "3"
services:
browser:
image: stilleshan/hideipnetwork-web
container_name: hideipnetwork
restart: always
ports:
- 56559:56559
volumes:
#这里映射浏览网页时出J4125走的代理的地址
- ./socks5.txt:/app/proxy/socks5.txt
#这个配置文件,要修改到MODO从normal到socks5
- ./.env:/app/.env
这是具体的.env文件内容:
PORT = 56559
HOST = "0.0.0.0"
WEBDIR ="/" #该功能暂时下线优化 | This function is temporarily offline for optimization
MODO = "socks5"
这是具体的socks5.txt文件内容:
192.168.6.116:7890
由于这个socks5是从clash.meta在J4125的另外一个docker中host映射出来的端口,所以要从原来的127.0.0.1:7890改为本地的IP地址。否则会在提交要具体浏览网页是报错
Service Errorconnect ECONNREFUSED 127.0.0.1:7890
定位为:默认的socks5.txt错误,
Hnet的docker是bridge的形式,127.0.0.1只会停留在docker容器中
配置成功;修改映射出来的socks5.txt文件内容为:192.168.6.116:7890
因为两个 docker镜像是以不同的网卡模式,一个是默认的bridge,一个是host(metaclash)
http://192.168.6.116:9090/#/conns
看到经过HNet Web的数据,从socks5传递到clash.meta,meta内核。
如何在debian中搭建clash.meta?
体验+试用
试用地址 https://c.carlzeng.top:3/web
安卓手机端
Chrome浏览器,显示不是太正常;无法正常使用
Kiwi 浏览器,显示正常;可以正常使用,但是嵌入在网页中的视频播放无法正常播放
电脑端
Chrome或者FireFox
都能正常使用,嵌入在网页中的视频也正常播放,完美。
灵感来源
https://hub.docker.com/r/metacubex/clash-meta
https://github.com/Hideipnetwork/hideipnetwork-web/tree/v3.1-beta
https://hub.docker.com/r/stilleshan/hideipnetwork-web
相关内容
-------------------如何在debian中搭建clash.meta
仅供参考
前提是: 小伙伴要了解怎么获取clash中的proxy节点,通俗的做法是购买机场服务,从机场中导出订阅连接即可。也有自建机场(要有计算机知识),获取网络上小伙伴分享的节点(可参见文章:go语言学习与应用日志-proxypool)
替换Clash For Windows方案,找到类似的解决方案并找到debian AMD64平台合适的应用:clash-verge
最终的metacubexd实现docker-compose.yml
version: '3'
services:
metacubexd:
container_name: metacubexd
image: ghcr.io/metacubex/metacubexd
restart: always
ports:
- '9090:80' #这里是WEB UI对应的端口
# optional
meta:
container_name: meta
image: docker.io/metacubex/clash-meta:Alpha
restart: always
network_mode: host
cap_add:
- NET_ADMIN
volumes:
- /root/.config/clash:/root/.config/clash
记得在Debian防火墙中开放所有这里指定的对外端口。
对应的/root/.config/clash目录中的文件内容(开头节选):
mixed-port: 7890
secret: **********
external-ui: /etc/clash-meta/ui
external-controller: 0.0.0.0:9091
#...其他的clash配置配置内容
着重讲解这里的config.yaml要注意的内容:
- mixed-port: 7890 这个很简单,clash开放的服务端口
- secret: 这是webui连接上clash.meta内容的密钥,关系到Webui可否查看和操作clash
- external-ui 这是docker中的webui路径,不需要修改,在上面的docker-compose会帮忙都部署好
- external-controller: 0.0.0.0:9091 这是可以操作webui的端口,关系到Webui可否查看和操作clash
注意到webui的访问是通过9090端口进行的,然后在设置中,要正确的制定上面这些对应的参数,才能让两个模块(clash和UI)搭配起来联动。
两者都搭配部署配合妥当后效果:在线测试
过程很艰辛
过程很艰辛:
tried 3 docker project:
- metacubex/clash-meta
一开始没理解
- junxy/clash
https://github.com/junxy/docker-clash/blob/master/docker-compose.yml
版本太久了配置了.config/clash下的文件后, clash 程序无法正常运行
- https://hub.docker.com/r/dreamacro/clash
部署成功,但不知道怎么用,后来知道还得有UI,命令行启动正常但似乎卡死在一个提示..
- https://github.com/RayWangQvQ/sing-box-installer
- [在 Linux 服务器上安装 Clash,以及开机自动启动](https://www.xxpyy.top/detailed?id=14#toc116)
/www/server/panel/data/compose/clash
HNet的Next有这么一个TODO:给Node的docker中部署clash for linux
后来思路转变:最好是docker里,debian中可用的clash客户端;
从docker中把clash复制出来,/usr/bin,然后到ssh的bash中测试
clash -v
Clash v0.16.0-27-gbd4302e-containerd linux amd64 Sun Dec 8 11:29:03 UTC 2019
/root/.config/clash
测试了各个版本的clash版本
用可找到的最新版的原作者dreamacro/clash
Clash v1.18.0 linux amd64 with go1.21.0 Thu Aug 17 14:45:47 UTC 2023
INFO[0000] Start initial compatible provider loadbalance1
放弃,clash没希望了,需要寻找替代品了
https://github.com/RayWangQvQ/sing-box-installer
nekoray-macos
建议根据延迟测试结果自动切换服务器
你可以试试clash verge,应该可以满足你的要求
https://github.com/zzzgydi/clash-verge
下载:https://github.com/zzzgydi/clash-verge/releases/tag/v1.3.8
Mac 端切换成功:Clash.Verge_1.3.8_x64.dmg 28.8 MB last month
next:proxypool,自动导入到Clash verge中
给linux找客户端
https://mirror.ghproxy.com/https://github.com/zzzgydi/clash-verge/releases/download/v1.3.8/clash-verge_1.3.8_amd64.deb
deb文件包用dpkg安装后,不知道去哪里了,
https://mirror.ghproxy.com/
正在下载: https://mirror.ghproxy.com/https://github.com/zzzgydi/clash-verge/releases/download/v1.3.8/clash-verge_1.3.8_amd64.AppImage.tar.gz
clash-meta,卡死
INFO[2023-11-29T20:58:20.184745908+08:00] Start initial configuration in progress
INFO[2023-11-29T20:58:20.187312982+08:00] Geodata Loader mode: memconservative
INFO[2023-11-29T20:58:20.191162285+08:00] Initial configuration complete, total time: 6ms
INFO[2023-11-29T20:58:20.216059686+08:00] Sniffer is closed
INFO[2023-11-29T20:58:20.216252817+08:00] Start initial compatible provider default
INFO[2023-11-29T20:58:20.216299376+08:00] Start initial compatible provider loadbalance1
(后来的思路是:debian 直接运行 Clash Verge)
我的debian本来就没有GUI;
在nas里直接装clash内核就行吧,又不需要gui
https://github.com/zzzgydi/clash-verge/releases/download/alpha/clash-verge_1.3.8_amd64-debug.deb
根据@zzzgydi 的建议,下载并安装debug版本。
版本号为1.3.7时,完成了如下测试:
居然在gui的WEB思路下面找到了哦:https://github.com/MetaCubeX/metacubexd/tree/main
没有GUI,那就WEB的gui啊!
Request failed with status code 405 Method Not Allowed
BUG
zzzgydi/clash-verge
https://github.com/zzzgydi/clash-verge/issues/808
mixed-port: 7890
secret: **********
external-controller: 0.0.0.0:9090
终于按文档配置成功:https://github.com/MetaCubeX/metacubexd/tree/main
Enable external-controller in your config file
external-controller: 0.0.0.0:9090
Use pre-built assets from gh-pages branch
First time setup
git clone https://github.com/metacubex/metacubexd.git -b gh-pages /etc/clash-meta/ui
Make sure you have external-ui directory set correctly in your config file
external-ui: /etc/clash-meta/ui
works great: http://192.168.6.116:9090/#/config
修改后端:http://192.168.6.116:9090/#/setup
http://192.168.6.116:9091
**********
对应config.yaml中的配置
思路来源及关联
Clash for Windows 设置方法入门(适用于Windows+Mac))
go语言学习与应用日志-proxypool)