diff --git a/scripts/docker-compose/README.md b/scripts/docker-compose/README.md new file mode 100644 index 00000000..713de533 --- /dev/null +++ b/scripts/docker-compose/README.md @@ -0,0 +1,35 @@ +## 项目简介 +- [中微子代理(neutrino-proxy)](https://gitee.com/dromara/neutrino-proxy) 是一款基于Solon、Netty的内网穿透神器。该项目采用最为宽松的MIT协议,因此您可以对它进行复制、修改、传播并用于任何个人或商业行为。 +- 市面上基于内网穿透的常见产品有:花生壳、TeamView、cpolar等。 +- 常见的使用场景: + - 本地开发调试第三方回调 + - 本地开发异地接口连调 + - 远程登录内网windows机器 + - 将本地服务映射到外网,用于演示 +- Gitee仓库:https://gitee.com/dromara/neutrino-proxy +- GitCode仓库:https://gitcode.com/dromara/neutrino-proxy +- GitHub仓库:https://github.com/dromara/neutrino-proxy +- 官网地址: https://neutrino-proxy.dromara.org + +## 主要特点: +- 1、流量监控:首页图表、报表管理多维度流量监控。全方位掌握实时、历史代理数据。 +- 2、用户/License:支持多用户、多客户端使用。后台禁用实时生效。 +- 3、端口池:对外端口统一管理,支持用户、License独占端口。 +- 4、端口映射:新增、编辑、删除、禁用实时生效。 +- 5、Docker:服务端/客户端支持Docker一键部署。 +- 6、SSL证书:隧道通信支持SSL加密,保护您的数据安全。 +- 7、域名映射:支持绑定子域名,方便本地调试三方回调 +- 8、多种协议:支持代理TCP、HTTP、HTTPS、UDP协议 +- 9、原生部署:支持编译为原生可执行文件,更低部署门槛、更少内存占用 +- 10、安全组:支持黑/白名单IP访问限制 +- 11、限速:支持对License、端口映射限制上传/下载速度 +- 12、采用最为宽松的MIT协议,免去你的后顾之忧 + +## 镜像版本&地址 +- 版本:当前最新版本为`2.0.1`,可直接使用`latest`拉取最新镜像 +- neutrino-proxy-server + - DockerHub镜像地址:aoshiguchen/neutrino-proxy-server:latest + - 阿里云镜像地址:neutrino-proxy registry.cn-hangzhou.aliyuncs.com/asgc/neutrino-proxy:latest +- neutrino-proxy-client + - DockerHub镜像地址:aoshiguchen/neutrino-proxy-client:latest + - 阿里云镜像地址:registry.cn-hangzhou.aliyuncs.com/asgc/neutrino-proxy-client:latest diff --git a/scripts/docker-compose/neutrino-proxy-client/config/app.yml b/scripts/docker-compose/neutrino-proxy-client/config/app.yml new file mode 100644 index 00000000..0396cd34 --- /dev/null +++ b/scripts/docker-compose/neutrino-proxy-client/config/app.yml @@ -0,0 +1,41 @@ +solon.logging.logger: + "root": + level: info + +neutrino: + proxy: + tunnel: + # 线程池相关配置,用于技术调优,可忽略 + thread-count: 50 + # 隧道SSL证书配置 + key-store-password: 123456 + jks-path: classpath:/test.jks + # 服务端IP + server-ip: host.docker.internal + # 服务端端口(对应服务端app.yml中的tunnel.port、tunnel.ssl-port) + server-port: 9002 + # 是否启用SSL(注意:该配置必须和server-port对应上) + ssl-enable: true + # 客户端连接唯一凭证 + license-key: b0a907332b474b25897c4dcb31fc7eb6 + # 客户端唯一身份标识(可忽略,若不设置首次启动会自动生成) + client-id: + # 是否开启隧道传输报文日志(日志级别为debug时开启才有效) + transfer-log-enable: false + # 是否开启心跳日志 + heartbeat-log-enable: 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: false diff --git a/scripts/docker-compose/neutrino-proxy-client/docker-compose.yaml b/scripts/docker-compose/neutrino-proxy-client/docker-compose.yaml new file mode 100644 index 00000000..4a1350c2 --- /dev/null +++ b/scripts/docker-compose/neutrino-proxy-client/docker-compose.yaml @@ -0,0 +1,21 @@ +version: '3.8' + +networks: + npClient: + driver: bridge +services: + npClient: + image: aoshiguchen/neutrino-proxy-client:latest + container_name: compose-npClient + hostname: npClient + restart: always + environment: + TZ: Asia/Shanghai + LANG: zh_CN.UTF-8 + volumes: + - ./config:/root/neutrino-proxy/config + - ./logs:/root/neutrino-proxy/logs + ports: + - "10000-10500:10000-10500/udp" + networks: + - npClient \ No newline at end of file diff --git a/scripts/docker-compose/neutrino-proxy-server-h2/config/app.yml b/scripts/docker-compose/neutrino-proxy-server-h2/config/app.yml new file mode 100644 index 00000000..e0fee879 --- /dev/null +++ b/scripts/docker-compose/neutrino-proxy-server-h2/config/app.yml @@ -0,0 +1,58 @@ +server: + # 服务端web端口,用于支持HTTP接口,管理后台页面访问 + port: 8888 +# 日志级别 +solon.logging: + logger: + "root": + level: info + appender: + file: + level: info + +neutrino: + proxy: + # 隧道相关配置-用于维持服务端与客户端的通信 + tunnel: + # 线程池相关配置,用于技术调优,可忽略 + boss-thread-count: 2 + work-thread-count: 10 + # 隧道非SSL端口 + port: 9000 + # 隧道SSL端口 + ssl-port: 9002 + # 隧道SSL证书配置 + key-store-password: 123456 + key-manager-password: 123456 + jks-path: classpath:/test.jks + # 是否开启隧道传输报文日志(日志级别为debug时开启才有效) + transfer-log-enable: false + # 是否开启心跳日志 + heartbeat-log-enable: false + server: + tcp: + # 线程池相关配置,用于技术调优,可忽略 + boss-thread-count: 5 + work-thread-count: 20 + # http代理端口,默认80(不配置不支持) + http-proxy-port: 80 + # https代理端口,默认443 (不配置不支持,同时需要配置域名、证书) + https-proxy-port: 443 + # 是否开启代理服务报文日志(日志级别为debug时开启才有效) + transfer-log-enable: false + udp: + # 线程池相关配置,用于技术调优,可忽略 + boss-thread-count: 5 + work-thread-count: 20 + # 是否开启代理服务报文日志(日志级别为debug时开启才有效) + transfer-log-enable: false + data: + db: + # 数据库类型,目前支持h2、mysql、mariadb + type: h2 + # 数据库连接URL + url: jdbc:h2:file:./data/db;MODE=MySQL;AUTO_SERVER=TRUE + # 数据库用户名 + username: + # 数据库密码 + password: diff --git a/scripts/docker-compose/neutrino-proxy-server-h2/docker-compose.yaml b/scripts/docker-compose/neutrino-proxy-server-h2/docker-compose.yaml new file mode 100644 index 00000000..5a9f3c52 --- /dev/null +++ b/scripts/docker-compose/neutrino-proxy-server-h2/docker-compose.yaml @@ -0,0 +1,25 @@ +version: '3.8' + +networks: + npServer: + driver: bridge +services: + npServer: + image: aoshiguchen/neutrino-proxy-server:latest + container_name: compose-npServer + hostname: npServer + restart: always + environment: + TZ: Asia/Shanghai + LANG: zh_CN.UTF-8 + volumes: + - ./config:/root/neutrino-proxy/config + - ./data:/root/neutrino-proxy/data + - ./logs:/root/neutrino-proxy/logs + ports: + - "8888:8888" + - "9000:9000" + - "9002:9002" + - "9101-9120:9101-9120" + networks: + - npServer \ No newline at end of file diff --git a/scripts/docker-compose/neutrino-proxy-server-mysql/config/app.yml b/scripts/docker-compose/neutrino-proxy-server-mysql/config/app.yml new file mode 100644 index 00000000..aeea4a87 --- /dev/null +++ b/scripts/docker-compose/neutrino-proxy-server-mysql/config/app.yml @@ -0,0 +1,58 @@ +server: + # 服务端web端口,用于支持HTTP接口,管理后台页面访问 + port: 8888 +# 日志级别 +solon.logging: + logger: + "root": + level: info + appender: + file: + level: info + +neutrino: + proxy: + # 隧道相关配置-用于维持服务端与客户端的通信 + tunnel: + # 线程池相关配置,用于技术调优,可忽略 + boss-thread-count: 2 + work-thread-count: 10 + # 隧道非SSL端口 + port: 9000 + # 隧道SSL端口 + ssl-port: 9002 + # 隧道SSL证书配置 + key-store-password: 123456 + key-manager-password: 123456 + jks-path: classpath:/test.jks + # 是否开启隧道传输报文日志(日志级别为debug时开启才有效) + transfer-log-enable: false + # 是否开启心跳日志 + heartbeat-log-enable: false + server: + tcp: + # 线程池相关配置,用于技术调优,可忽略 + boss-thread-count: 5 + work-thread-count: 20 + # http代理端口,默认80(不配置不支持) + http-proxy-port: 80 + # https代理端口,默认443 (不配置不支持,同时需要配置域名、证书) + https-proxy-port: 443 + # 是否开启代理服务报文日志(日志级别为debug时开启才有效) + transfer-log-enable: false + udp: + # 线程池相关配置,用于技术调优,可忽略 + boss-thread-count: 5 + work-thread-count: 20 + # 是否开启代理服务报文日志(日志级别为debug时开启才有效) + transfer-log-enable: false + data: + db: + # 数据库类型,目前支持h2、mysql、mariadb + type: mysql + # 数据库连接URL + url: jdbc:mysql://mysql:3306/neutrino-proxy?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&useAffectedRows=true&useSSL=false + # 数据库用户名 + username: root + # 数据库密码 + password: 123456 diff --git a/scripts/docker-compose/neutrino-proxy-server-mysql/config/sql/schema.sql b/scripts/docker-compose/neutrino-proxy-server-mysql/config/sql/schema.sql new file mode 100644 index 00000000..c5b58eae --- /dev/null +++ b/scripts/docker-compose/neutrino-proxy-server-mysql/config/sql/schema.sql @@ -0,0 +1,21 @@ +-- Licensed to the Apache Software Foundation (ASF) under one +-- or more contributor license agreements. See the NOTICE file +-- distributed with this work for additional information +-- regarding copyright ownership. The ASF licenses this file +-- to you under the Apache License, Version 2.0 (the +-- "License"); you may not use this file except in compliance +-- with the License. You may obtain a copy of the License at +-- +-- http://www.apache.org/licenses/LICENSE-2.0 +-- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. + +-- this file works for MySQL. + +set names utf8mb4; +create database if not exists `neutrino-proxy` default charset utf8mb4 collate utf8mb4_general_ci; +commit; \ No newline at end of file diff --git a/scripts/docker-compose/neutrino-proxy-server-mysql/docker-compose.yaml b/scripts/docker-compose/neutrino-proxy-server-mysql/docker-compose.yaml new file mode 100644 index 00000000..fbbaa395 --- /dev/null +++ b/scripts/docker-compose/neutrino-proxy-server-mysql/docker-compose.yaml @@ -0,0 +1,48 @@ +version: '3.8' + +networks: + npServer: + driver: bridge +services: + mysql: + image: mysql:8 + container_name: compose-mysql + hostname: mysql + restart: always + healthcheck: + test: ['CMD-SHELL', 'mysqladmin ping -h 127.0.0.1 --silent'] + interval: 3s + retries: 5 + start_period: 3m + ports: + - "3308:3306" + environment: + TZ: Asia/Shanghai + MYSQL_ROOT_PASSWORD: 123456 + volumes: + - ./data/mysqldata:/var/lib/mysql/ + - ./config/sql:/docker-entrypoint-initdb.d/ + networks: + - npServer + npServer: + image: aoshiguchen/neutrino-proxy-server:latest + container_name: compose-npServer + hostname: npServer + restart: always + environment: + TZ: Asia/Shanghai + LANG: zh_CN.UTF-8 + depends_on: + mysql: + condition: service_healthy + volumes: + - ./config:/root/neutrino-proxy/config + - ./data:/root/neutrino-proxy/data + - ./logs:/root/neutrino-proxy/logs + ports: + - "8888:8888" + - "9000:9000" + - "9002:9002" + - "9101-9120:9101-9120" + networks: + - npServer \ No newline at end of file