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

访问国际互联网, 更新clash/mihomo

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

有什么用

在线网页代理,docker-compose搭建访问国际互联网:https://c.carlzeng.com: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文件:

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文件内容:

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

替换友好message

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

映射文件名:

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

更新2025年11月

日期: 2025.11.24

来源: https://github.com/Hideipnetwork/hideipnetwork-web/blob/main/docker-compose.yaml

version: '3.8'

services:
  app:
    image: jesmora/hnet-server:latest
    ports:
      - "56559:56559"
    environment:
      HOST: 0.0.0.0
      SECRET: "hnet-secret"
      HNET_USER: "hnet-admin"
      HNET_PWD: "hnet-passwd"
      REDIRECT_HOST: "www.google.com"
      MONGODB_CONNECTION: "http://localhost:27017"
      USE_DB: false
      MODO: "normal"
      SOCKS5: "192.168.6.116:7890"

可悲催的是, 运行起来的页面要求输入密码Password; 不知道密码是多少(尝试了上面所有设置密码, 等等; 都无法往前走). 项目部署搁置.

体验+试用

试用地址 https://c.carlzeng.com: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

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要注意的内容:

  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)搭配起来联动。

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

过程很艰辛

过程很艰辛:
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/metacubexd

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://gh-proxy.com//https://github.com/zzzgydi/clash-verge/releases/download/v1.3.8/clash-verge_1.3.8_amd64.deb


    deb文件包用dpkg安装后,不知道去哪里了,
    https://gh-proxy.com//
    正在下载: https://gh-proxy.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)

https://github.com/MetaCubeX/metacubexd

更新clash/mihomo

Update and Restart, 20251122

docker pull ghcr.io/metacubex/metacubexd && docker restart metacubexd
version: '3'

services:
  metacubexd:
    container_name: metacubexd
    image: ghcr.io/metacubex/metacubexd
    restart: always
    ports:
      - '9090:80'

  # optional
  meta:
    container_name: meta
    image: docker.io/metacubex/mihomo:Alpha
    restart: always
    pid: host
    ipc: host
    network_mode: host
    cap_add:
      - ALL
    volumes:
      - /root/.config/mihomo:/root/.config/mihomo
      - /dev/net/tun:/dev/net/tun

image-20251122171324654

被设置了proxy

Debian11:/www/server/panel/data/compose/metacubexd# docker-compose up
[+] Running 1/0
 ✘ meta Error                                                                                              0.0s 
Error response from daemon: Get "https://registry-1.docker.io/v2/": proxyconnect tcp: dial tcp 192.168.6.116:7890: connect: connection refused

清空后, 然后用国内的一堆镜像替代docker源, 还是报错, 无奈只能把代理地址指向有效的本机; 成功pull.

配置文件更新, 主要是使用proxy-providers, 实现 想要像安卓那样可以订阅到远程节点, 而不是每次需要手动去改配置文件.

mixed-port: 7890
secret: ******
external-controller: 0.0.0.0:9091
allow-lan: true
mode: Global
log-level: warning
dns:
  enable: false
  ipv6: false
  nameserver:
  - https://dns.rubyfish.cn/dns-query
  - https://223.5.5.5/dns-query
  - https://dns.pub/dns-query
  fallback:
  - https://1.0.0.1/dns-query
  - https://public.dns.iij.jp/dns-query
  - https://dns.twnic.tw/dns-query
  fallback-filter:
  geoip: true
  ipcidr:
  - 240.0.0.0/4
  - 0.0.0.0/32
  - 127.0.0.1/32
  domain:
  - +.google.com
  - +.facebook.com
  - +.youtube.com
  - +.xn--ngstr-lra8j.com
  - +.google.cn
  - +.googleapis.cn
  - +.gvt1.com

proxy-providers:
  baobei: # provider 的名称,下面会用到
    type: http
    path: ./baobei.yaml # 订阅地址的配置文件
    url: https://gh-proxy.com/raw.githubusercontent.com/chuanzhuo/local_clash_servers/master/local_clash_proxies.yaml
    interval: 172800    # 每 48 小时更新一次订阅
    health-check:
      enable: true      # 是否自动进行 latency-test
      interval: 3600
      lazy: true
      url: http://www.gstatic.com/generate_204
proxy-groups:
  - name: PROXY
    type: select
    use:      # 使用上面配置的订阅
      - baobei

本小节灵感感谢: 使用 proxy-providers 解决 ClashX 的 DNS 默认开启的问题

image-20251122184648088

48小时后刷新测试完美按预期刷新. 问题是: 刷新完成后, 默认的PROXY跳转到了DIRECT, 导致代理自动失效了, 如何让这个proxy默认跳转到可用的节点上?

......
proxy-groups:
  - name: PROXY
    type: fallback
    use:      # 使用上面配置的订阅
      - baobei

解决办法: 只需要将上方的配置文件, 修改一下: proxy-groups 的type改到fallback, 会自动按照预定义顺序依次尝试不同的代理服务器,直到找到一个可用的代理服务器并将其用作当前请求的代理. 更详细的选项:

  • select:从列表中选择一个可用的代理服务器作为当前请求的代理。可以通过设置每个代理服务器的权重值来进行负载均衡。
  • url-test:通过向特定 URL 发送测试请求来检查代理服务器是否可用,然后选择可用的代理服务器作为当前请求的代理。可以设置每个代理服务器的 URL 和超时时间等属性。
  • fallback:按照预定义顺序依次尝试不同的代理服务器,直到找到一个可用的代理服务器并将其用作当前请求的代理。可以设置每个代理服务器的优先级和延迟时间等属性。

本小节参考: clash的规则编辑

image-20251128192158640

预览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.

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\""
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.com" #仅个人测试使用

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

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

怎么用

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

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

已知问题

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

IOS端(iPad)

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

#参数介绍
-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

原已暂停使用. 请切换方案至: Tailsale, 这样就能实现远程访问等同于在异地发出数据请求(就像是人在异地一样的效果)

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

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

Docker虚拟浏览器 – 浏览器中的远程浏览器

m1k1o/neko

By m1k1o • Updated 6 days ago

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

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,但是,无法正常登陆; 继续尝试下面的新版本:

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

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文件需要申请证书的步骤/动作,没有改动之前不适合我的环境;

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

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


评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注