https://www.cnblogs.com/yeungchie/
云主机上运行 nps创建映射目录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。
设置好后点击 新增
即可。
留意一下这里的 id
和 vkey
。
本地机建议选择一台 7*24 小时运行的设备,一般是路由器或者 NAS ,我这里就选择群晖了,DSM 有很好用的 docker 图形化管理套件,所以下面用图形化界面演示如何部署 npc 。
拉取镜像点击菜单栏中的注册表
,搜索 npc-client
,下载第一个就行。
点击菜单栏中的映像
,找到下载好的npc
,启动。
在高级设置->网络
中注意勾选使用与 Docker Host
相同的网络。
再到高级设置->环境
中修改两个环境变量:
:
VKEY对应上面添加过的客户端的 vkey
接着一路点击 应用
,启动容器即可。
这时候在 nps 后台可以看到客户端已经在线。
后台配置 nps前面部署 nps 时候已经配置了一部分了,接下来要配置的就是具体需要穿透的端口了。
添加 tcp 隧道这里举例配置一下 Jellyfin 的 http 端口 8096
。进入 nps 后台管理,点击左侧菜单栏的 客户端
选项,再点击新增。
3
。然后点击 新增
。
这样一条隧道就添加好了。
至此内网穿透算是部署好了。
尝试访问一下 Jellyfin。
容器保活有时候运行的容器会自己挂掉,虽然不经常发生,但是偶尔来一次,遇上刚好要用的时候就很烦人。下载演示我在服务端如何让容器保活的,方法比较粗暴但有效。
创建目录创建目录来存放脚本和日志文件。
mkdir -p /root/docker/nps/scriptmkdir -p /root/docker/nps/log
获取容器 IDdocker ps -q --no-trunc
会得到一长串 ID,记下来
。
keepActive.sh如果你返回了多个 ID,那你应该知道要怎么区分那个是 nps 的。
创建 bash 脚本,放到 /root/docker/nps/script/keepActive.sh
#!/bin/bashcur=$(cd $(dirname $0); pwd -P)a=$(docker ps -q --no-trunc | grep "") # 这里其实就是去匹配看看当前运行中的容器有没有nps,改成上一步获取到的。if [[ "_$a" == "_" ]]; then docker restart nps # 第一次重启 nps if [[ $? == 0 ]]; then echo "Revive $(date +"%F %T")" >> $cur/../log/log else echo "Failed $(date +"%F %T")" >> $cur/../log/log systemctl restart docker.service # 重启失败大概率是 docker 服务挂了,这里重启服务 docker restart nps echo "Restart $(date +"%F %T")" >> $cur/../log/log fielse echo "Active $(date +"%F %T")" >> $cur/../log/logfi
crontab.set如果是服务 docker 挂了,且重启失败,那就不是保不保活的问题了,登上服务器检查吧。
创建一个 crontab.set
,用来配置定时任务。这个文件就随便放了,一次性的。
SHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=root* * * * * /root/docker/nps/script/keepActive.sh
接着运行:
crontab crontab.set
这里是配置,一分钟运行一次 keepActive.sh
脚本,所以如果 nps
挂了,一分钟内它就会重启了。
如果你还配置了其他的定时任务,那你应该知道怎么设置 crontab,别把以前配置的任务给覆盖了。
关键词: