docker compose 部署 中微子代理(NeutrinoProxy)

docker compose 部署 中微子代理(NeutrinoProxy)

朱治龙
2023-10-30 / 0 评论 / 113 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2023年10月30日,已超过436天没有更新,若内容或图片失效,请留言反馈。

近期在开源中国有看到 Neutrino-proxy 的一些介绍,了解到 NeutrinoProxy 是一款基于 Netty 的内网穿透工具,官方的介绍信息如下:

基本介绍

中微子代理 (neutrino-proxy) 是一款基于 netty 的内网穿透神器。该项目采用最为宽松的 MIT 协议,因此您可以对它进行复制、修改、传播并用于任何个人或商业行为。

neutrino-prox主界面

主要特点:

  • 1、流量监控:首页图表、报表管理多维度流量监控。全方位掌握实时、历史代理数据。
  • 2、用户 / License:支持多用户、多客户端使用。后台禁用实时生效。
  • 3、端口池:对外端口统一管理,支持用户、License 独占端口。
  • 4、端口映射:新增、编辑、删除、禁用实时生效。
  • 5、Docker:服务端支持 Docker 一键部署。
  • 6、SSL 证书:支持 SSL,保护您的信息安全。
  • 7、域名映射:支持绑定子域名,方便本地调试三方回调
  • 8、采用最为宽松的 MIT 协议,免去你的后顾之忧

之前一直有在用 FRP 作为内网穿透工具,用了很多年也确实非常好用,不过 FRP 在可视化管理方面比较欠缺,虽然提供了dashboard,但是只提供了代理端口查看及浏览统计方面的功能,不能提供多用户方面的管控。而 Neutrino 正好弥补了这方面的不足。

以下是使用 docker compose 部署相关的代码,仅作为记录。

服务端:

docker-compose.yml

version: '3.8'
services:
  app:
    image: registry.cn-hangzhou.aliyuncs.com/asgc/neutrino-proxy:latest
    container_name: neutrino-proxy
    restart: always
    networks:
      - net-zzl
    ports:
      - 9000-9200:9000-9200/tcp
      - 9201:8888
    volumes:
      - ./config:/root/neutrino-proxy/config
networks:
  net-zzl:
    name: bridge_zzl
    external: true

./config/app.yml

neutrino:
  data:
    db:
      type: mysql
      # 自己的数据库实例,创建一个空的名为'neutrino-proxy'的数据库即可,首次启动服务端会自动初始化
      url: jdbc:mysql://DB_HOST:3306/neutrino-proxy?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useAffectedRows=true&useSSL=false
      driver-class: com.mysql.jdbc.Driver
      # 数据库帐号
      username: DB_USERNAME
      # 数据库密码
      password: DB_PASSWORD

客户端

官网文档不推荐使用docker的方式部署,但是考虑到要部署Java 环境之类的,对宿主机而言是挺麻烦的,还是试着通过docker 的方式部署的客户端,经过验证也是 OK 的。

docker-compose

version: '3.8'
services:
  app:
    image: aoshiguchen/neutrino-proxy-client:latest
    container_name: neutrino-proxy-client
    restart: always
    network_mode: host
    volumes:
      - ./config:/root/neutrino-proxy/config

./config/app.yml

neutrino:
  proxy:
    logger:
      # 日志级别
      level: ${LOG_LEVEL:info}
    tunnel:
      # 线程池相关配置,用于技术调优,可忽略
      thread-count: 50
      # 隧道SSL证书配置
      key-store-password: ${STORE_PASS:123456}
      jks-path: ${JKS_PATH:classpath:/test.jks}
      # 服务端IP,这里替换成主机IP或域名
      server-ip: ${SERVER_IP:proxy.xxx.com}
      # 服务端端口(对应服务端app.yml中的tunnel.port、tunnel.ssl-port)
      server-port: ${SERVER_PORT:9002}
      # 是否启用SSL(注意:该配置必须和server-port对应上)
      ssl-enable: ${SSL_ENABLE:true}
      # 客户端连接唯一凭证,这里替换成key
      license-key: ${LICENSE_KEY:ec7e9906cXXXXXX6430895c37fec75cd4e11}
      # 客户端唯一身份标识(可忽略,若不设置首次启动会自动生成)
      client-id: ${CLIENT_ID:workServer}
      # 是否开启隧道传输报文日志(日志级别为debug时开启才有效)
      transfer-log-enable: ${CLIENT_LOG:false}
      # 重连设置
      reconnection:
        # 重连间隔(秒)
        interval-seconds: 10
        # 是否开启无限重连(未开启时,客户端license不合法会自动停止应用,开启了则不会,请谨慎开启)
        unlimited: false
    client:
      udp:
        # 线程池相关配置,用于技术调优,可忽略
        boss-thread-count: 5
        work-thread-count: 20
        # udp傀儡端口范围
        puppet-port-range: 10000-10500
        # 是否开启隧道传输报文日志(日志级别为debug时开启才有效)
        transfer-log-enable: ${CLIENT_LOG:false}

实现后的效果截图:

License界面
端口映射

0

评论 (0)

取消