Docker上部署?nps?和?npc?实现内网穿透(docker内网安装部署)不看后悔

随心笔谈2年前发布 编辑
189 0
🌐 经济型:买域名、轻量云服务器、用途:游戏 网站等 《腾讯云》特点:特价机便宜 适合初学者用 点我优惠购买
🚀 拓展型:买域名、轻量云服务器、用途:游戏 网站等 《阿里云》特点:中档服务器便宜 域名备案事多 点我优惠购买
🛡️ 稳定型:买域名、轻量云服务器、用途:游戏 网站等 《西部数码》 特点:比上两家略贵但是稳定性超好事也少 点我优惠购买



mkdir -p ~/docker/nps/config
docker pull oldiy/nps-server
docker run -d –name nps –net=host -v /root/docker/nps/config:/nps/conf oldiy/nps-server

现在 nps 已经开始运行了。

docker stop nps

为什么这里要停止运行呢?

因为这时候在 config 目录下已经生成了一些配置文件,考虑到安全性,我们需要做一些改动。

vim /root/docker/nps/config/nps.conf

打开后重点关注下面这几项:


bridge_port=8024 # 客户端连接端口

web_username=admin # 后台管理用户名
web_password=123 # 后台管理密码
web_port=8080 # 后台管理端口

以上是默认的配置,建议改掉。

docker start nps

现在可以在网页端访问 ,并通过用户名 和密码 登录后台管理界面了。

能够成功访问后,继续下面的步骤。

点击左侧菜单栏的 选项,再点击新增。

设置一个 ,这里可以随便填。压缩、加密愿意的话也可以选 yes。

设置好后点击 即可。

留意一下这里的 和 。

本地机建议选择一台 7*24 小时运行的设备,一般是路由器或者 NAS ,我这里就选择群晖了,DSM 有很好用的 docker 图形化管理套件,所以下面用图形化界面演示如何部署 npc 。

点击菜单栏中的,搜索 ,下载第一个就行。

点击菜单栏中的,找到下载好的,启动。

在中注意勾选 相同的网络。

再到中修改两个环境变量:

对应云主机的 VKEY

对应上面添加过的客户端的

接着一路点击 ,启动容器即可。

这时候在 nps 后台可以看到客户端已经在线。

前面部署 nps 时候已经配置了一部分了,接下来要配置的就是具体需要穿透的端口了。

这里举例配置一下 Jellyfin 的 http 端口 。

进入 nps 后台管理,点击左侧菜单栏的 选项,再点击新增。

类型

这里选 tcp 不用动它。 备注

随便填,方便自己记就行。 服务器端口

指外放访问端口,我这里跟 Jellyfin 内网一致了,这里只是为了演示用默认,等下就会改掉。 目标

指内网对应服务的地址和端口。 客户端 id

就是上面我说了要留意一下的 id,我这里是 。

然后点击 。

这样一条隧道就添加好了。

至此内网穿透算是部署好了。

尝试访问一下 Jellyfin。

有时候运行的容器会自己挂掉,虽然不经常发生,但是偶尔来一次,遇上刚好要用的时候就很烦人。

下载演示我在服务端如何让容器保活的,方法比较粗暴但有效。

创建目录来存放脚本和日志文件。

docker ps -q –no-trunc

会得到一长串 ID,记下来 。

如果你返回了多个 ID,那你应该知道要怎么区分那个是 nps 的。

keepActive.sh

创建 bash 脚本,放到 /root/docker/nps/script/keepActive.sh

#!/bin/bash
cur=$(cd $(dirname $0); pwd -P)
log=”$cur/https://www.jb51.net/log/log”
a=$(docker ps -q –no-trunc | grep ‘<nps_id>’) # 这里其实就是去匹配看看当前运行中的容器有没有nps,<nps_id>改成上一步获取到的。
if [[ “_$a”==”_” ]]; then
docker restart nps # 第一次重启 nps
if [[ $?==0 ]]; then
echo “Revive $(date +’%F %T’)” >> $log
else
echo “Failed $(date +’%F %T’)” >> $log
systemctl restart docker.service # 重启失败大概率是 docker 服务挂了,这里重启服务
docker restart nps
echo “Restart $(date +’%F %T’)” >> $log
fi
else
echo “Active $(date +’%F %T’)” >> $log
fi

如果是服务 docker 挂了,且重启失败,那就不是保不保活的问题了,登上服务器检查吧。

crontab.set

创建一个 ,用来配置定时任务。这个文件就随便放了,一次性的。

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

* * * * * /root/docker/nps/script/keepActive.sh

接着运行:

crontab crontab.set

这里是配置一分钟运行一次 脚本,所以如果 挂了,一分钟内它就会重启了。

如果你还配置了其他的定时任务,那你应该知道怎么设置 crontab,别把以前配置的任务给覆盖了。

Docker的容器化技术为应用的部署和管理带来了很大的便利性,尤其是在内网穿透这种需要部署多个应用的场景下。本文介绍了如何使用Docker部署nps和npc实现内网穿透,通过容器的隔离性和安全性,可以有效地保护应用的安全性。同时,Docker的易用性和可扩展性也为应用的管理和维护带来了很大的便利性。

到此这篇关于Docker上部署 nps 和 npc 实现内网穿透的文章就介绍到这了,更多相关Docker上部署 nps 和 npc内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:Docker内网穿透frp部署实现过程解析详解基于docker搭建lanproxy内网穿透服务

© 版权声明

相关文章