自建内网穿透的终极解决方案 HP-Lite
HP-Lite私有化部署内网穿透终极解决方案,支持多设备、多用户、自动获取SSL证书与流量统计功能,服务端配置映射,无需调整客户端。 原项目地址: gitee博主修改版开源地址: github
项目预览
功能介绍
- 具备多用户模式,可以分发给其他用户使用。
- 支持各种系统的设备作为客户端,包括windows、linux、安卓、mac。
- 一键获取SSL证书(需要80、443端口支持),自动为穿透接口进行https加密。
- 支持流量统计与pv/uv统计。
- 支持TCP、UDP与TCP/UDP混合穿透。
内网穿透项目比较
- FRP FRP同样是一个golang构建的内网穿透项目,用户群体大,主要问题在于不支持服务端修改端口映射配置,需要到客户端修改配置文件。
- NPS 也是golang构建的内网穿透项目,几年没有更新了。最后一个版本存在密码泄露的漏洞,只有其他fork版本还在更新。
- HP-Lite 也就是此项目,可以在服务端修改端口配置,锦上添花的是有自动SSL证书功能。
博主修改的主要内容
- SSL证书的自动更新功能。免费SSL证书有效期为90天,需要手动点击更新,博主嫌麻烦加上了自动更新。
- 添加了dockerfile,修改了db存储地址,提供了DOCKER部署的能力。
- 优化了网络流量的显示。
- 由于原项目代码质量一般,后续博主会优化代码为主,在看看有什么新的功能需求。
服务端构建
项目配置文件
yaml
# ./app.yml
admin:
username: 'admin' # 后台管理员账号
password: '123456' # 后台管理员密码
port: 9090 # 管理后台web端口(TCP)
cmd:
port: 6666 # 客户端连接端口(TCP)
tunnel:
ip: {你的外网ip或域名}
port: 9091 # 客户端数据传输端口(UDP)
open-domain: true # 开启80,443端口域名转发(注意这是自动证书功能的基础,被其他程序占用就不要开启了)
acme:
email: '[email protected]' # 申请证书必须写一个邮箱可以随便写
http-port: '5634' # 证书验证会访问http接口,会通过80转发过来,所以这个端口不用暴露外网
DOCKER部署
bash
docker run -d \
--name hp \
--net host \
--log-opt max-size=10m \
--log-opt max-file=3 \
-v ./data:/app/data \
-v ./app.yml:/app/app.yml \
laoyutang/hp-lite-server:latest
--name hp
自定义容器名--net host
使用host网络模式,不然要映射的端口太多了--log-opt max-size=10m --log-opt max-file=3
控制日志大小,穿透的网络日志很多,最好控制下-v ./data:/app/data
持久化-v ./app.yml:/app/app.yml
配置文件映射laoyutang/hp-lite-server:latest
服务端镜像支持amd64与arm64的架构
管理
启动后登录 ip:port
即可。 添加一台新的设备,复制设备32为uuid备用。
客户端部署
在客户端设备上使用docker一键启动
Docker compose
yaml
# docker-compose.yaml
services:
hp-lite:
image: laoyutang/hp-lite-client:latest
container_name: hp-lite
restart: always
network_mode: host
logging:
options:
max-size: "10m"
environment:
- server={服务器ip或域名}:{cmd端口}
- deviceId={32位设备id}
Docker Cli
bash
docker run -d \
--name hp \
--restart always \
--net host \
--log-opt max-size=10m \
-e server={服务器ip或域名}:{cmd端口} \
-e deviceId={32位设备id} \
laoyutang/hp-lite-client:latest
其他客户端程序
可以到原项目地址下载,下载地址