Docker搭建在线网页代理实践记录

访问国际互联网

在线网页代理,docker-compose搭建访问国际互联网:在线测试访问国际互联网

有什么用

在线网页代理,docker-compose搭建访问国际互联网:https://c.carlzeng.top:3/web

使用方法

  1. 打开在线测试访问国际互联网 或拉到最下方的‘预览
  2. 在文本框中键盘按键输入要访问的网址( 比如: www.google.com)
  3. 键盘回车
  4. 网页会弹出匿名访问的国际互联网google.com,或者输入www.youtube.com回车访问
  5. 在这访问的新页面就可以继续访问国际互联网(比如继续点击页面中的视频等…)

实现方法

个人安装路径(仅供参考)/www/server/panel/data/compose/hideipnetwork-web
最终版本的docker-compose.yml文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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
- ./public/server/server.client.js:/app/public/server/server.client.js

这是具体的.env文件内容:

1
2
3
4
PORT = 56559
HOST = "0.0.0.0"
WEBDIR ="/" #该功能暂时下线优化 | This function is temporarily offline for optimization
MODO = "socks5"

这是具体的socks5.txt文件内容:

1
192.168.6.116:7890

由于这个socks5是从clash.meta在J4125的另外一个docker中host映射出来的端口,所以要从原来的127.0.0.1:7890改为本地的IP地址。否则会在提交要具体浏览网页是报错

1
2
3
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? 【见下个章节】

替换友好message

​ Advertisement please contact
​ 请重试,请重新刷新页面修复内部错误中…

映射文件名:

1
2
3
server.sw.js
#格式:
- ./public/server/server.sw.js:/app/public/server/server.sw.js

体验+试用

试用地址 https://c.carlzeng.top:3/web

安卓手机端

Chrome浏览器,显示不是太正常;无法正常使用

Kiwi 浏览器,显示正常;可以正常使用,但是嵌入在网页中的视频播放无法正常播放

​ 测试发现youtube的视频是可以正常播放的,而有些使用了加密直播地址的视频是无法播放的(比如‘小姐姐视频站),刚好测试服务器也不是给大家看小姐姐用的 :-)

IOS端(iPad)

Safari浏览器,显示不是太正常;无法正常使用

电脑端

Chrome或者FireFox

都能正常使用,嵌入在网页中的视频也正常播放,完美。

已知问题/局限性

很多网站是打不开的(比如github),这是目前版本无法解决的已知问题。

灵感来源

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

提升隐私安全:自建H-net在线代理,轻松无痕浏览

自建在线网页代理

来源/开源:https://github.com/Hideipnetwork/hideipnetwork-web/tree/dev


如何在debian中搭建clash.meta

仅供参考

前提是: 小伙伴要了解怎么获取clash中的proxy节点,通俗的做法是购买机场服务,从机场中导出订阅连接即可。也有自建机场(要有计算机知识),获取网络上小伙伴分享的节点(可参见文章:go语言学习与应用日志-proxypool)

替换Clash For Windows方案,找到类似的解决方案并找到debian AMD64平台合适的应用:clash-verge

最终的metacubexd实现docker-compose.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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目录中的文件内容(开头节选):

1
2
3
4
5
6
mixed-port: 7890
secret: **********
external-ui: /etc/clash-meta/ui
external-controller: 0.0.0.0:9091

#...其他的clash配置配置内容

着重讲解这里的config.yaml要注意的内容:

  1. mixed-port: 7890 这个很简单,clash开放的服务端口
  2. secret: 这是webui连接上clash.meta内容的密钥,关系到Webui可否查看和操作clash
  3. external-ui 这是docker中的webui路径,不需要修改,在上面的docker-compose会帮忙都部署好
  4. external-controller: 0.0.0.0:9091 这是可以操作webui的端口,关系到Webui可否查看和操作clash

注意到webui的访问是通过9090端口进行的,然后在设置中,要正确的制定上面这些对应的参数,才能让两个模块(clash和UI)搭配起来联动。

两者都搭配部署配合妥当后效果:在线测试

过程很艰辛

1
2
3
4
5
6
7
8
9
10
11
12
13
过程很艰辛:
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

1
/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没希望了,需要寻找替代品了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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)

预览HNet ​


Docker container for Firefox

这个方案脑洞大开了,This is a Docker container for Firefox.

The GUI of the application is accessed through a modern web browser (no installation or configuration needed on the client side) or via any VNC client. Full documentation is available at https://github.com/jlesage/docker-firefox.

1
2
3
4
5
6
7
8
docker run -d \
--name=firefox \
-p 5800:5800 \
-v ./firefox_config:/config \
jlesage/firefox

要用到这个
-e "FF_PREF_HTTP_PROXY=network.proxy.http=\"proxy.example.com\""
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
version: '3'
services:
firefox:
image: jlesage/firefox
ports:
- "5800:5800"
volumes:
- "./firefox_config:/config"
environment:
- "FF_PREF_PROXY_TYPE=network.proxy.type=1"
- "FF_PREF_HTTP_PROXY=network.proxy.http=192.168.6.116"
- "FF_PREF_HTTP_PROXY=network.proxy.http_port=7890"
- "KEEP_APP_RUNNING=1"
- "LANG=en_US.UTF-8"
- "FF_OPEN_URL=www.carlzeng.top" #仅个人测试使用

开放5800端口,反代出https://c.carlzeng.top:4443/web2

配置PROXY的部分参考:https://github.com/zerofox-oss/phishpond/blob/master/docker-compose.yml

怎么用

用法和您本地的浏览器用法一样!

  1. 打开在线浏览器
  2. 输入您要访问的网址
    1. 比如:www.google.com 回车访问
    2. 或输入:www.youtube.com 回车访问
  3. 。。。

已知问题

访问的网页中,中文的编码还有问题,无法正常显示中文

IOS端(iPad)

Safari浏览器,显示不是太正常;无法正常使用

1
2
3
4
5
6
7
8
9
10
11
12
#参数介绍
-e TZ=Asia/Hong_Kong # 设置时区
-e DISPLAY_WIDTH=1920
-e DISPLAY_HEIGHT=1080 #设置显示的高宽
-e KEEP_APP_RUNNING=1 # 保持启动状态
-e ENABLE_CJK_FONT=1 # 防止显示页面时中文乱码
-e SECURE_CONNECTION=1 # 启用HTTPS功能
-e VNC_PASSWORD=admin #设置VNC的访问密码,自定义即可
-p 5800:5800 #访问firefox的web端口
-p 5900:5900 #VNC端口
-v /data/irefox/config:/config:rw # 容器挂载目录,存放firefox数据
--shm-size 2g # 设置容器的内存资源为2g

预览Firefox

中文字符的问题,实在无法接受

1
2
3
https://hub.docker.com/r/ich777/firefox 已测试,无效,卡住:
firefox | ---Starting...---
firefox | ---Firefox not installed, installing---

https://1024.ee/2020/07/23/docker%E8%99%9A%E6%8B%9F%E6%B5%8F%E8%A7%88%E5%99%A8-%E6%B5%8F%E8%A7%88%E5%99%A8%E4%B8%AD%E7%9A%84%E8%BF%9C%E7%A8%8B%E6%B5%8F%E8%A7%88%E5%99%A8/

m1k1o/neko

By m1k1o • Updated 6 days ago

Fork of https://github.com/nurdism/neko/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
version: "2.0"
services:
neko:
image: nurdism/neko:firefox
restart: always
shm_size: "1gb"
ports:
- "5880:8080"
- "59000-59100:59000-59100/udp"
environment:
DISPLAY: :99.0
NEKO_PASSWORD: neko
NEKO_PASSWORD_ADMIN: admin
NEKO_BIND: :8080
NEKO_EPR: 59000-59100

显示UI,但是,无法正常登陆; 继续尝试下面的新版本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
version: "3.4"
services:
neko:
image: "m1k1o/neko:firefox"
restart: "unless-stopped"
shm_size: "2gb"
ports:
- "8080:8080"
- "52000-52100:52000-52100/udp"
environment:
NEKO_SCREEN: 1920x1080@30
NEKO_PASSWORD: neko
NEKO_PASSWORD_ADMIN: admin
NEKO_EPR: 52000-52100
NEKO_ICELITE: 1

以及
version: "3.4"
services:
neko:
image: "m1k1o/neko:chromium"
restart: "unless-stopped"
shm_size: "2gb"
ports:
- "5800:8080"
- "52000-52100:52000-52100/udp"
environment:
NEKO_SCREEN: 1920x1080@30
NEKO_PASSWORD: admin
NEKO_PASSWORD_ADMIN: admin
NEKO_EPR: 52000-52100

都是一样无法登陆,尴尬了

放弃其他方案(很可能是需要默认就在墙外的情况,不适合与家宽的大背景环境);

最终还是回到了Firefox的怀抱

参考了Docker本地部署Firefox火狐浏览器并远程访问里面的参数,解决了中文乱码的问题。-e ENABLE_CJK_FONT=1 # 防止显示页面时中文乱码


Tor-Browser

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
docker run -it \
-v ./tmp:/tmp/.X11-unix \
-e DISPLAY=unix$DISPLAY \
--device /dev/snd \
--name tor-browser \
jess/tor-browser


version: "3"
services:
tor-browser:
stdin_open: true
tty: true
volumes:
- /tmp:/tmp/.X11-unix
environment:
- DISPLAY=unix$DISPLAY
devices:
- /dev/snd
container_name: tor-browser
image: jess/tor-browser

Tor Browser must be run within the X Window System.

NAS中的BrowserBox

找了一下BrowserBox

https://github.com/BrowserBox/BrowserBox?tab=readme-ov-file#docker-quick-start-gem-version-6

不知道这个docker pull下来又多大;

看了一下安装的。sh文件需要申请证书的步骤/动作,没有改动之前不适合我的环境;

1
docker pull ghcr.io/browserbox/browserbox:v6.2

还是切到黑群中的BrowserBox, 举例说明:https://xywnas.com/?p=1889