宝塔面板与NPS共存开启内网穿透之旅[超详细教程]

笔记
391 20

起因

自从手里的小黑裙升级到了DSM7.1版本之后,就开始热衷于折腾Docker容器,因为是X86的架构,跑起项目来也不会有丝毫的顾虑,恨不得把实用有趣的Docker镜像都折腾个遍!就目前Docker上跑了flare、linkding、memos、playmusic等Web项目;因为此次升级DSM7.1后硬盘也进行了重新换新和重新分配储存池,两两启用了RAID1,所以暂时不会折腾硬盘了。

群晖Docker上的这些项目

有了以上的一些Web项目就需要内网穿透的支撑,So...又开启了宝塔面板与NPS共存开启内网穿透之旅。

一、需要满足的条件

具有装好宝塔面板的公网IP的服务器一台,且安装好了Nginx服务,使其能够正常绑定网站。
怎么安装宝塔面板和Web服务器就不再多阐述了,详细请看官网教程。

宝塔Linux面板安装教程 - 2022年7月14日更新 - 7.9.3正式版

二、获取SSH的root账号和密码

因为这一步每个服务器厂商的获取方式不太一样,如果和我一样是腾讯云的那么可以参考官网教程。

云服务器 管理登录密码-操作指南-文档中心-腾讯云

云服务器 重置实例密码-操作指南-文档中心-腾讯云

三、使用终端工具安装wget服务

1.使用终端工具添加主机信息后进入终端页面,如下图:

添加主机信息

如果不是root账户,也可以在普通用户登录后使用sudo -i命令临时获取root权限。

2.需要安装wget服务才能使用wget命令去拉取nps项目镜像,你也可以使用以下命令确认是否需要安装wget服务。

rpm -qa|grep "wget"  //检查是否需要安装wget服务

如果显示有wget-1.14-18.el7_6.1.x86_64等字样就代表无需安装了!如下图所示:

检查是否需要安装wget服务

3.如果没有安装wget服务,则输入以下命令安装即可。

yum -y install wget
yum -y install setup
yum -y install perl

四、安装NPS服务端

1.使用wget命令拉取NPS最新源码镜像,依然是在宝塔终端里进行操作。

国外服务器

wget https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_server.tar.gz

国内服务器

wget https://ghproxy.com/https://github.com/ehang-io/nps/releases/download/v0.26.10/linux_amd64_server.tar.gz

使用wget命令拉取NPS源码镜像

2.解压NPS到服务器目录

tar -xzvf linux_amd64_server.tar.gz

到这一步就不截图演示了,直接复制粘贴使用命令就可以了。(已经安装过了)

3.安装部署到服务器

sudo ./nps install

4.启动开启nps服务

nps start

五、修改配置文件并启用nps服务

1.因为nps默认使用的TCP端口是80 443 8080 8024,宝塔面板的80 433 8080会被占用,因此这时候打不开nps的前端Web管理页面;我们需要修改nps的配置文件,后重新启动nps服务。

2.找到nps.conf文件,在宝塔根目录的etc文件夹下,路径/etc/nps/conf/nps.conf

nps.conf文件目录

3.使用文本编辑器打开nps.conf文件后进行修改,具体修改方法见代码注释。

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  //80端口建议禁止注释掉,在宝塔面板上安装的nps不会用到
#https_proxy_port=443  //443端口建议禁止注释掉,在宝塔面板上安装的nps不会用到
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  //与npc客户端通讯的默认端口,建议修改为其他端口如:8424
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  //p2p代理要使用的端口,如果需要使用p2p代理服务,也可以修改一下端口

#web
web_host=a.o.com
web_username=admin  //nps默认登录账号,建议更换为自己牢记的账号,如admin123
web_password=123  //nps默认登录密码,建议更换为自己牢记的密码,如admin123
web_port = 8080  //nps默认web管理页面访问端口,建议修改为其他端口如:9090
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

其他的TCP端口就不需要修改了,修改完成后保存进入下一个步骤,请牢记你修改的TCP端口,后续还会用到。

4.回到宝塔终端使用nps重启命令后上一步的配置文件才会成功被应用,会用到以下命令。

sudo nps restart

5.这个时候还需要放行以上你修改后的所有TCP端口,你的nps服务才能正常运行,相应位置在宝塔面板安全选项里和服务器防火墙/安全组里,很多人错在没有做这一步。如下图:

六、群晖npc客户端的使用

1.恭喜你!这个时候nps服务端就可以正常运行了,使用服务器公网IP:9090,就可以打开nps的web登录页面啦!输入配置文件里修改好的账号密码就可以正常登录管理后台。

nps服务端登录成功

2.群晖npc客户端的安装

npc客户端推荐使用我不是矿神的套件,又简单又不需要多余折腾,小白推荐使用。

矿神群晖SPK套件中心 上线啦!支持DSM6、DSM7 - 我不是矿神

群晖NPC内网穿透客户端、NPS服务端套件 支持DSM6、7 - 我不是矿神

群晖NPC内网穿透客户端

3.在nps服务端管理页面里添加新的客户端(有多少个客户端使用就添加几个),如下图:

添加新的客户端

4.打开npc客户端与nps服务端连接,填写正确保存后自动生效。如下图:

七、新增TCP隧道后开启内网穿透之旅

1.到这一步说明你很有耐心,也谢谢你的查阅!接下来就是在nps服务端管理页面里新增你的TCP隧道,使其生效。如下图:

注意:与前面一样也需要把这里的服务端端口进行端口放行,才能正常生效,如果你不需要开启域名访问那么到此步骤就可以愉快的使用服务器IP+TCP隧道端口访问你的群晖了,如图所示为:服务器公网IP:5000,在浏览器或者群晖APP打开即登录即可。

八、使用域名访问群晖服务

1.宝塔面板里新增静态网站后配置好SSL证书,建议使用宝塔面板的一键获取HTTPS证书功能,如下图:

3.设置网站反向代理,并在域名服务里添加域名解析,如下图所示:

127.0.0.1:5000 //端口为TCP隧道端口,而不是内网端口

4.至此你就可以使用解析好的子域名或主域名访问你的群晖了,如演示的为https://nas.boyhu.cn,需要穿透其他服务请重复以上第七步就可以了,不愿意透露给外网的服务不建议使用域名服务访问噢,这样很容易就GG,别问为什么!

这算是复盘的教程和记录篇,因为之前就记录过。

这么详细的教程你不三连再走吗?客户端也支持很多平台架构,详细查看nps官方文档即可。

最后更新 2022-10-22
评论 ( 20 )
OωO
隐私评论
  1. 感谢分享,我还是用的frp穿透的。简单方便。

    1个月前重庆市回复
    1. @老陳网志

      我觉得frp没这个方便,这个图形界面更友好,哈哈

      1个月前重庆市回复
  2. 国内不能访问github的吧?我在站长之家的ping里面试了一下全部超时

    1个月前日本回复
    1. @沉舟侧畔

      对的,谢谢提醒,后面把国内镜像加进去

      1个月前重庆市渝中区回复
  3. 我的docker就搞了个青龙

    1个月前湖南省长沙市回复
    1. @叶小明的博客

      青龙玩脚本吧,我不会。。。

      1个月前重庆市渝中区回复
  4. 插个眼,改天试试

    1个月前河南省回复
    1. @网友小宋

      好的,欢迎收藏

      1个月前重庆市渝中区回复