| nps端口映射面板 
 最后便是nps端口映射面板的搭建了,要说他的应用过程可谓是十分广泛的,就比如我本地有个服务想让其他朋友也能访问得到,但由于一般来说非云服务的带宽很少带有公网IP,都是基于NAT的网络情况,这时候我们便可以利用我们的云服务器来进行端口映射,将我们本地的端口转发到我们的开发全家桶服务器上,这样大家都可以通过开发全家桶服务器访问到我们本地无公网IP机子所转发的端口了。
 
 对于我个人来说,我经常用于转发我本地Mysql的端口,用于项目调试,当然玩法还有很多,比如对于Kali系统来说,我们可以映射一个端口方便我们反弹Shell等操作,游戏用途的话可以局域网连接,用法因人而异。
 
 项目地址:https://github.com/ehang-io/nps
 
 下面是安装过程,首先是去官方git仓库拉取项目:
 
 
 复制代码
git clone https://github.com/ehang-io/nps.git
 国内服务器拉取无速度可以使用一下镜像:
 
 
 复制代码
git clone https://github.com.cnpmjs.org/ehang-io/nps.git
 拉取完成后输入:
 
 
 
 进入项目目录:
 
 
  
 输入命令,拷贝并重命名一份Dockerfile文件:
 
 
 复制代码
cp Dockerfile.nps Dockerfile
 编辑Dockerfile文件:
 
 把第二行的:
 
 
 
 改为,防止国内机子因为网络问题无法构建镜像:
 
 
 复制代码
ARG GOPROXY=https://goproxy.cn,direct
 接着跟上边的步骤差不多,构建镜像:
 
 
 
 
  
 构建完成后,新建一个目录与一个配置文件:
 
 
 复制代码
mkdir /conf
vim /conf/nps.conf
 填写内容如下(账号密码在#web处,线上部署请自行修改):
 
 
 复制代码
appname = nps
#Boot mode(dev|pro)
runmode = dev
#HTTP(S) proxy port, no startup if empty
http_proxy_ip=0.0.0.0
http_proxy_port=80
https_proxy_port=443
https_just_proxy=true
#default https certificate setting
https_default_cert_file=conf/server.pem
https_default_key_file=conf/server.key
##bridge
bridge_type=tcp
bridge_port=8024
bridge_ip=0.0.0.0
# Public password, which clients can use to connect to the server
# After the connection, the server will be able to open relevant ports and parse related domain names according to its own configuration file.
public_vkey=123
#Traffic data persistence interval(minute)
#Ignorance means no persistence
#flow_store_interval=1
# log level LevelEmergency->0  LevelAlert->1 LevelCritical->2 LevelError->3 LevelWarning->4 LevelNotice->5 LevelInformational->6 LevelDebug->7
log_level=7
#log_path=nps.log
#Whether to restrict IP access, true or false or ignore
#ip_limit=true
#p2p
#p2p_ip=127.0.0.1
#p2p_port=6000
#web
web_host=a.o.com
web_username=admin
web_password=123
web_port = 8080
web_ip=0.0.0.0
web_base_url=
web_open_ssl=false
web_cert_file=conf/server.pem
web_key_file=conf/server.key
# if web under proxy use sub path. like http://host/nps need this.
#web_base_url=/nps
#Web API unauthenticated IP address(the len of auth_crypt_key must be 16)
#Remove comments if needed
#auth_key=test
auth_crypt_key =1234567812345678
#allow_ports=9001-9009,10001,11000-12000
#Web management multi-user login
allow_user_login=false
allow_user_register=false
allow_user_change_username=false
#extension
allow_flow_limit=false
allow_rate_limit=false
allow_tunnel_num_limit=false
allow_local_proxy=false
allow_connection_num_limit=false
allow_multi_ip=false
system_info_display=false
#cache
http_cache=false
http_cache_length=100
#get origin ip
http_add_origin_header=false
#pprof debug options
#pprof_ip=0.0.0.0
#pprof_port=9999
#client disconnect timeout
disconnect_timeout=60
 配置项对应的含义:
 
 | 名称                | 含义                                                         |
 | ------------------- | ------------------------------------------------------------ |
 | web_port            | web管理端口                                                  |
 | web_password        | web界面管理密码                                              |
 | web_username        | web界面管理账号                                              |
 | web_base_url        | web管理主路径,用于将web管理置于代理子路径后面                |
 | bridge_port         | 服务端客户端通信端口                                         |
 | https_proxy_port    | 域名代理https代理监听端口                                    |
 | http_proxy_port     | 域名代理http代理监听端口                                     |
 | auth_key            | web api密钥                                                  |
 | bridge_type         | 客户端与服务端连接方式kcp或tcp                               |
 | public_vkey         | 客户端以配置文件模式启动时的密钥,设置为空表示关闭客户端配置文件连接模式 |
 | ip_limit            | 是否限制ip访问,true或false或忽略                            |
 | flow_store_interval | 服务端流量数据持久化间隔,单位分钟,忽略表示不持久化         |
 | log_level           | 日志输出级别                                                 |
 | auth_crypt_key      | 获取服务端authKey时的aes加密密钥,16位                       |
 | p2p_ip              | 服务端Ip,使用p2p模式必填                                    |
 | p2p_port            | p2p模式开启的udp端口                                         |
 | pprof_ip            | debug pprof 服务端ip                                         |
 | pprof_port          | debug pprof 端口                                             |
 | disconnect_timeout  | 客户端连接超时,单位 5s,默认值 60,即 300s = 5mins          |
 
 然后在/conf目录继续新建三个空文件(无内容):
 
 
 复制代码
vim /conf/hosts.json
vim /conf/clients.json
vim /conf/hosts.json
 运行容器:
 
 
 复制代码
docker run -d -p 10080:80 -p 10443:443 -p 18080:8080 -p 18024:8024 -v /conf:/conf --name nps nps
 其中:
 
 
 80与443端口为域名解析模式默认端口8080为web管理访问端口
 8024为网桥端口,用于客户端与服务器通信
 
  
 最后还是老规矩,使用nginx进行反代:
 
 
  
 反代后访问我们的网站:
 
 
  
 至此,我们的nps面板已经搭建好了,具体使用方法由于篇幅所限就不过多赘述了,网上已经有很全面的使用教程,也可以参考官方文档:https://ehang-io.github.io/nps/#/example
 
 后话
 
 至此,我们的开发全家桶已经部署好了,总共有:
 
 
 CodeServer在线IDEgogs私有GIT平台registry私有docker镜像仓库webssh在线SSH管理平台nps端口映射面板
 
 现在,让我们来看看服务器的负载情况:
 
 
  
 五个应用,总计不到1.2G内存的占用,1核2G的学生机都可以流畅搭建和使用,可谓是便宜又好用~
 
 最后再让我介绍下这次使用的服务器平台:腾讯云轻量应用服务器。
 
 在腾讯云的长期活动中新用户可¥74便可买到一台,1核2G内存60G SSD盘6Mbps的配置在性价比这块拿捏得死死得,感兴趣的读者可考虑入手:https://cloud.tencent.com/act/new。
 
 
  
 |