# holer
**Repository Path**: bqxt/holer
## Basic Information
- **Project Name**: holer
- **Description**: Holer是一个将局域网服务器代理到公网的内网穿透工具,支持转发基于TCP协议的报文
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: https://www.oschina.net/p/holer
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 35
- **Created**: 2019-12-29
- **Last Updated**: 2021-09-06
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 
# 1. Holer简介
Holer exposes local servers behind NATs and firewalls to the public internet over secure tunnels.
Support forwarding message based on TCP protocol.
Holer是一个将局域网中的应用映射到公网访问的端口映射软件,支持转发基于TCP协议的报文。

# 2. Holer使用
Holer支持以下两种使用方式,根据实际需求,任选其中一种方式即可:
[**方式一:**](#21-使用公开的holer映射或者开通holer服务)
使用**公开的holer映射**或者**开通holer服务**,通过**holer客户端软件**经**holer服务器**实现公网访问,详见[2.1节](#21-使用公开的holer映射或者开通holer服务)。
[**方式二:**](#22-使用holer服务端软件搭建holer服务)
使用**holer服务端软件**搭建holer服务,通过**holer客户端软件**经**自己服务器**实现公网访问,详见[2.2节](#22-使用holer服务端软件搭建holer服务)。
Holer客户端软件有Java版本详见[2.1.1节](#211-使用java版本的holer客户端实现步骤)和Go版本详见[2.1.2节](#212-使用go版本的holer客户端实现步骤),根据偏好,任选其中一种版本使用即可。
如果下载holer软件遇到问题,更多的下载地址详见[3.2节](#32-holer下载)。
## 2.1 使用公开的holer映射或者开通holer服务
[**方式一:**](#2-holer使用) 使用**公开的holer映射**或者**开通holer服务**,通过holer客户端软件经**holer服务器**实现公网访问。
**公开的holer映射**详情如下:
访问密钥 |访问域名 |公网地址 |本地地址|使用场景
-----------------------------|-----------|-----------|-----------|--------
HOLER_CLIENT-2F8D8B78B3C2A0AE|holer65530.wdom.net|holer.org:65530|127.0.0.1:8080|WEB
HOLER_CLIENT-3C07CDFD1BF99BF2|holer65531.wdom.net|holer.org:65531|127.0.0.1:8088|WEB
HOLER_CLIENT-2A623FCB6E2A7D1D|holer65532.wdom.net|holer.org:65532|127.0.0.1:80|WEB
HOLER_CLIENT-AF3E6391525F70E4|N/A|holer.org:65533|127.0.0.1:3389|远程桌面
HOLER_CLIENT-822404317F9D8ADD|N/A|holer.org:65534|127.0.0.1:22|SSH
HOLER_CLIENT-27DD1389DF1D4DBC|N/A|holer.org:65535|127.0.0.1:3306|数据库
这里以映射本地Tomcat默认端口8080为例,选择表中的第一条映射进行配置;如果Web服务端的端口是80或者8088,请选择相匹配的端口映射,其他TCP端口映射步骤类似,更多的使用示例请参考[**官方文档**](http://blog.wdom.net)。
### 2.1.1 使用Java版本的holer客户端实现步骤
Java版本的holer客户端软件([源代码](https://github.com/wisdom-projects/holer/tree/master/SourceCode/Java),[软件包](https://github.com/Wisdom-Projects/holer/tree/master/Binary/Java))是由Java语言实现,支持跨平台。
#### 2.1.1.1 安装 Java
安装Java 1.7或者更高版本,执行命令 `java -version` 检查Java是否可用。
#### 2.1.1.2 安装Web服务端
以Tomcat为例,安装并启动Tomcat,默认安装的端口是8080;
在浏览器里输入如下URL来检查Tomcat服务是否可以正常访问:
`http://127.0.0.1:8080`
#### 2.1.1.3 下载并配置holer客户端
下载并解压软件包[`holer-client.zip`](https://github.com/Wisdom-Projects/holer/blob/master/Binary/Java)
修改配置文件:
`holer-client/conf/holer.conf`
设置`HOLER_ACCESS_KEY`如下:
`HOLER_ACCESS_KEY=HOLER_CLIENT-2F8D8B78B3C2A0AE`
#### 2.1.1.4 启动holer
进入目录:
`cd holer-client/bin`
**Windows系统**:
执行命令 `startup.bat` 或双击 `startup.bat`
如果需要停止进程,执行命令`shutdown.bat`或双击`shutdown.bat`
**Linux系统**:
执行命令 `bash startup.sh`
如果需要停止进程,执行命令 `bash shutdown.sh`
然后就可以通过如下URL来访问Web应用:
`http://holer65530.wdom.net` 或者 `http://holer.org:65530`
#### 2.1.1.5 设置开机启动
进入目录:
`cd holer-client/bin`
**Windows系统**:
双击 `setup.vbs`
**注意事项:**
请确保当前用户对如下目录具有读取、写入、执行、修改等权限:
`C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp `
**Linux系统**:
执行命令 `bash setup.sh`
**注意事项:**
**CentOS 7, RedHat 7, Ubuntu 18** 及更高版本,建议执行命令`bash setup-service.sh`设置开机启动;
根据提示输入**holer access key**和**holer server host**
输入示例:
```
------------------------------------------
Enter holer access key: HOLER_CLIENT-2F8D8B78B3C2A0AE
------------------------------------------
Enter holer server host: holer.org
------------------------------------------
```
### 2.1.2 使用Go版本的holer客户端实现步骤
Go版本的holer客户端软件([源代码](https://github.com/Wisdom-Projects/holer/tree/master/SourceCode/Go),[软件包](https://github.com/Wisdom-Projects/holer/tree/master/Binary/Go))是由GO语言实现,支持多种操作系统和硬件架构。
#### 2.1.2.1 安装Web服务端
以Tomcat为例,安装并启动Tomcat,默认安装的端口是8080;
在浏览器里输入如下URL来检查Tomcat服务是否可以正常访问:
`http://127.0.0.1:8080`
#### 2.1.2.2 下载holer客户端
根据实际的系统平台,选择匹配的软件包下载并解压[`holer-xxx.tar.gz`](https://github.com/Wisdom-Projects/holer/blob/master/Binary/Go)
#### 2.1.2.3 启动holer
这里以`Windows & Linux x86-64bit` 为例,启动holer执行如下命令:
**Windows系统**:
`holer-windows-amd64.exe -k HOLER_CLIENT-2F8D8B78B3C2A0AE -s holer.org`
也可以执行命令 `startup.bat` 或者双击 `startup.bat`
如果需要停止进程,执行命令`shutdown.bat`或双击`shutdown.bat`
**Linux系统**:
`nohup ./holer-linux-amd64 -k HOLER_CLIENT-2F8D8B78B3C2A0AE -s holer.org &`
也可以执行命令 `bash startup.sh`
如果需要停止进程,执行命令 `bash shutdown.sh`
首次启动根据提示输入**holer access key**和**holer server host**
输入示例:
```
------------------------------------------
Enter holer access key: HOLER_CLIENT-2F8D8B78B3C2A0AE
------------------------------------------
Enter holer server host: holer.org
------------------------------------------
```
#### 2.1.2.4 设置开机启动
进入目录:
`cd holer-client/bin`
**Windows系统**:
双击 `setup.vbs`
**注意事项:**
请确保当前用户对如下目录具有读取、写入、执行、修改等权限:
`C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp `
**Linux系统**:
执行命令 `bash setup.sh`
**注意事项:**
**CentOS 7, RedHat 7, Ubuntu 18** 及更高版本,建议执行命令`bash setup-service.sh`设置开机启动;
根据提示输入**holer access key**和**holer server host**
输入示例:
```
------------------------------------------
Enter holer access key: HOLER_CLIENT-2F8D8B78B3C2A0AE
------------------------------------------
Enter holer server host: holer.org
------------------------------------------
```
## 2.2 使用holer服务端软件搭建holer服务
[**方式二:**](#2-holer使用) 使用**holer服务端软件**搭建holer服务,通过holer客户端软件经**自己服务器**实现公网访问。
用户也可以下载 [**holer-server.zip**](https://github.com/wisdom-projects/holer/releases) 搭建自己的holer服务。
如果下载holer软件遇到问题,更多的下载地址详见[3.2节](#32-holer下载)。

### 2.2.1 搭建holer服务端准备工作
(1) 准备一台可以经**公网IP访问**的Linux系统或者Windows系统主机;
(2) 安装**Java 1.8及以上版本**,执行命令 `java -version` 检查Java是否可用;
(3) 安装并启动Nginx, 建议安装其稳定版本;
(4) 安装MariaDB并**设置root用户密码**;
(5) 设置安全规则,允许访问holer服务端端口**6060、600**以及**端口映射规则**所涉及的端口;
(6) 建议申请域名并且完成域名备案,并设置域名**泛解析(*.域名)**和**直接解析主域名(@.域名)**,如果没有域名可以直接使用**IP和端口**访问。
### 2.2.2 配置并启动holer服务端
解压软件包,打开配置文件 `holer-server/resources/application.yaml`
#### 2.2.2.1 修改数据库用户名和密码
```
spring:
datasource:
username: root
password: 123456
```
#### 2.2.2.2 修改域名和Nginx主目录
```
holer
domain:
name: your-domain.com
nginx:
#home: /usr/local/nginx
home: C:/nginx-1.14.2
```
将示例中的域名`your-domain.com`修改成自己**备案过**的域名,如果没有域名,请忽略该配置项。
Linux系统默认安装Nginx路径 `/usr/local/nginx`
Windows系统中可以先将Nginx复制到某个目录下,然后在配置文件中指定其主目录。
**注意事项:**
请确保Nginx主目录下存在配置文件:`conf/nginx.conf`
Nginx目录结构示例:
```
Nginx主目录
├── conf
│ ├── nginx.conf
. .
. .
```
如果需要用到HTTPS功能,Window系统版本的Nginx默认支持HTTPS功能,Linux系统需要下载Nginx源码,配置和编译以及安装执行如下命令:
```
./configure --with-http_ssl_module
make;make install
```
#### 2.2.2.3 启动holer服务端
Linux系统执行启动命令如下:
```
cd holer-server
chmod 755 holer
bash holer start
```
如果需要停止进程,执行命令`bash holer stop`
Windows系统执行启动命令如下:
```
cd holer-server
startup.bat
```
或者双击 `startup.bat`
如果需要停止进程,执行命令`shutdown.bat`或双击`shutdown.bat`
#### 2.2.2.4 设置开机启动
进入目录:
`cd holer-server/bin`
**Windows系统**:
双击 `setup.vbs`
**注意事项:**
请确保当前用户对如下目录具有读取、写入、执行、修改等权限:
`C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp `
**Linux系统**:
执行命令 `bash setup.sh`
**注意事项:**
**CentOS 7, RedHat 7, Ubuntu 18** 及更高版本,建议执行命令`bash setup-service.sh`设置开机启动。
### 2.2.3 创建端口映射
#### 2.2.3.1 登录holer管理系统
如果配置文件`application.yaml`中设置了域名,并且指定了Nginx主目录,则在浏览器输入URL `http://holer.your-domain.com`
如果没有设置域名访问,则通过IP和端口登录系统 `http://IP地址:600`

登录系统需要输入默认的管理员账号,默认用户名: `admin` 密码: `admin123`
用户也可以在文件`holer-server/resources/conf/holer-data.sql`中修改默认的用户名和密码,然后重启holer服务端使其生效。
#### 2.2.3.2 创建客户端和端口映射
在用户列表页面中创建一个holer客户端
`http://holer.your-domain.com/view/holer-client.html`

在端口映射页面中为该holer客户端创建端口映射
`http://holer.your-domain.com/view/holer-port.html`

在数据统计页面中查看报表信息
`http://holer.your-domain.com/view/holer-report.html`

#### 2.2.3.3 配置holer客户端使其与holer服务端实现端口映射功能
在用户列表页面中选中一条客户端记录,在页面右上角点击详情按钮,弹出的详情框下点击复制按钮;

然后将详情信息粘贴到记事本里,请严格按照详情信息里的使用说明进行操作,这样可以顺利完成holer客户端配置,从而实现基于自己holer服务端的端口映射功能。
# 3. 支持与帮助
## 3.1 Holer使用示例
获得更多的holer使用示例,请参考[**官方文档**](http://blog.wdom.net)。
## 3.2 Holer下载
### 3.2.1 Holer客户端软件
[**软件地址一**](https://github.com/wisdom-projects/holer/tree/master/Binary)
[**软件地址二**](https://pan.baidu.com/s/1APDAaaaQxTa71IR2hDjIaA#list/path=%2Fsharelink2808252679-1014620033513253%2Fholer%2Fholer-client&parentPath=%2Fsharelink2808252679-1014620033513253)
### 3.2.2 Holer服务端软件
[**软件地址一**](https://github.com/wisdom-projects/holer/releases)
[**软件地址二**](https://pan.baidu.com/s/1APDAaaaQxTa71IR2hDjIaA#list/path=%2Fsharelink2808252679-1014620033513253%2Fholer%2Fholer-server&parentPath=%2Fsharelink2808252679-1014620033513253)
## 3.3 问题帮助
使用中遇到问题可以查看holer日志信息来排查问题的具体原因。
### 3.3.1 Holer客户端日志
#### 3.3.1.1 Java版本的holer客户端
查看日志文件:
`holer-client/logs/holer-client.log`
#### 3.3.1.2 Go版本的holer客户端
**Linux系统**
查看可执行程序所在目录下的日志文件`logs/holer-client.log`或者`nohup.out`文件。
**Windows系统**
查看可执行程序所在目录下的日志文件`logs/holer-client.log`
### 3.3.2 Holer服务端日志
查看日志文件:
`holer-server/logs/holer-server.log`
## 3.4 申请holer服务
用户可以使用上述公开的holer映射详见[2.1节](#21-使用公开的holer映射或者开通holer服务),也可以申请**holer服务**,holer服务[**详见文档**](http://blog.wdom.net/article/23)或访问[**WISDOM**](http://wdom.net)。
