当前位置:首页 > 技术教程 > 正文

[我的NAS+HTPC折腾之旅]篇九:搞定可道云和内网穿透

抱歉拖这么久才更新,虽然这么久没写东西但是我的折腾一直没停,受害者当然是这台赛扬1017u的一体机。自从libreelec以后我又尝试了下unraid做jellyfin加lede软路由,发现这个u不支持vt-d还是对网速有些影响。所以又尝试了一下直接装lede的固件,悲催的是默认的固件不管是openwrt还是koolshare的lede都不能识别这台一体机的JMicron的千兆网卡,所以我又这几天连夜折腾lean大的编译固件终于弄出些眉目了,所以这台1017u的小主机以后就不会频繁的去折腾。趁着5.1假期的间隙我买了一套新的G4600的小主机,我的专辑后面的部分会围绕这个小主机来写All in one和一些更高级的内容。而1017u的这台一体机我已经把它作为家里的软路由来使用,我考虑开一个软路由的坑和大家一起分享编译固件以及配置的过程。这一篇把之前在评论区立的flag补上,通过docker安装可道云和蒲公英内网穿透。

我最早折腾可道云还是2013年弄omv系统,当时跟着群里的大佬在omv下通过ngnix部署可道云和nextcloud,那份折腾真的不堪回首,而且omv本身还不算太稳定,说不定哪天一个apt-get upgrade就各种报错,也是让我有了心理阴影,当时我还不会用docker,对端口映射以及文件夹映射都不了解,从入坑到放弃用了不到一个月时间就转到黑群晖系统了,学习了色魔张大妈平台上很多群晖的docker教程之后也算入门,所以现在回头又重新折腾各种基于linux的系统方案。趁着我这台一体机还没刷软路由,还是在libreelec系统的docker环境下部署可道云和蒲公英内网穿透。

首先还是建议大家到hub.docker.com网站上注册一个账号,免费的。在上面的搜索栏里输入kodexplorer里面会出来很多各路大神发布的镜像文件,如果认真一点的会写上部署环境中需要注意的点,比如端口号,映射文件夹这些。

[我的NAS+HTPC折腾之旅]篇九:搞定可道云和内网穿透  第1张

这里我选择的是yangxuan8282/kodexplorer这位作者的镜像文件,他的github主页里还有arm版本的镜像请大家根据自己的情况选择。我这台是x86_64的一体机,所以直接用默认的镜像。其他镜像请看tags里面的连接。

这个默认的镜像拉取是采用这样一个命令:docker run -d -p 80:80 --name kodexplorer -v "$PWD":/var/www/html yangxuan8282/kodexplorer。前面的文章中提到过docker一些参数的说明这里再啰嗦一遍:

-p 80:80 是docker端口映射的参数,默认情况下输入网址的时候不需要输入80端口默认可以进入。例如你在局域网中输入192.168.1.89就可以直接打开可道云的页面。不过目前运营商大多把80端口给屏蔽了,所以从外网访问的时候或者你有其他服务占用80端口的时候这里就需要改了,比如我改成83,这里就输入成-p 83:80,这样我输入192.168.1.89:83的时候就可以访问可道云了。

- v "$PWD":/var/www/html 这段代码是docker镜像内和你所在主机之间的文件夹映射关系,前面这里填写可道云默认需要访问的文件夹即可,比如我在libreelec中数据盘所在的位置是/stroage这里就可以填写成-v /stroage :/var/www/html。如果是mnt挂载的硬盘比如我外挂的第二块硬盘是新加卷,这块硬盘所在的路径是/var/media/新加卷,那么在-v后面就需要输入 /var/media/新加卷。这里需要注意的是一定要输入绝对路径,也就是我们从winscp中进入文件夹以后上面显示的一串路径。因为从ssh登录后默认是进入到/storage目录的,这里我在默认的storage目录下创建一个kodexplorer目录用来挂在可道云。在ssh终端中输入mkdir kodexplorer

[我的NAS+HTPC折腾之旅]篇九:搞定可道云和内网穿透  第2张

所以这段代码在我这里改成了:docker run -d -p 83:80 --name kodexplorer -v /storage/kodexplorer:/var/www/html yangxuan8282/kodexplorer,我们用ssh命令登录进去后粘贴进去。后等待拉取镜像完成,然后在浏览器中输入IP地址:83即可访问

[我的NAS+HTPC折腾之旅]篇九:搞定可道云和内网穿透  第3张

进入界面以后可以发现,可道云的默认路径就是docker镜像中/var/www/html这个字段,我们把这个文件夹映射到了宿主主机的/storage/kodexplorer目录下。但是假如我需要访问宿主主机的其他目录该怎么办,如果是外挂了第二块硬盘可以考虑通过mount命令把硬盘挂载到kodexplorer目录下面的一个文件夹里,比如kodexplorer/sdb1,具体mount命令在我lubuntu和libreelec兼做htpc+nas的文章中有具体的步骤,但是需要注意需要在ssh下用chmod +x命令或者在winscp下赋予该文件夹0755权限,以便kodexplorer能够正常的读写该文件夹。如果是本地不在kodexplorer文件夹下的其他文件夹。目前docker环境下的这个可道云的文件权限范围仅限于data文件目录下,大家可以考虑在可道云下创建aira2,xware,transmission等工具的下载目录,在portainer中把docker映射到主机的目录映射到这些文件夹中就可以了。

后面要说的就是上海贝锐科技的蒲公英内网穿透工具了,官网上给linux系统的包只有debian,ubuntu以及树莓派。其他系统就只能通过docker来部署了,这里还是需要到dockerhub上查找相关的镜像,搜索pgyvpn。

[我的NAS+HTPC折腾之旅]篇九:搞定可道云和内网穿透  第4张下载这个

进入作者的介绍页面,按照里面说的步骤一步一步操作就行了。推荐在命令行下搞定,复制粘贴不废什么劲,在portainer下操作很多参数都不好找。蒲公英是上海贝锐科技推出的一款内网穿透工具,它的原理是在异地网络中每个客户端上创建一个虚拟网卡,用户通过用户名和密码登录以后这些主机通过蒲公英的服务器建立虚拟局域网,通过客户端就可以看到虚拟局域网中其他主机的IP地址,在windows的客户端中可以很容易的查询本机和其他主机的IP地址和连通情况。蒲公英的官网提供了windows,mac,树莓派以及ubuntu的安装包。在lubuntu中通过浏览器下载deb的安装包,打开下载目录后右键选择gdebi工具安装,该工具可以自动处理好依赖。安装好以后在命令行中任何位置输入pgyvpn即可运行,第一次登录需要输入账号和密码,登录时候默认保存账户信息,以后登录就不需要了。

Ubuntu下安装包毕竟是官方原生的,稳定性肯定很好,可惜没办法兼容我折腾的libreelec以及软路由系统,所以Docker部署的方式很好的满足了我跨平台的需求,这里介绍下docker版本的安装方式。首先安装docker,libreelec中在插件源,libreelec插件库中的服务里找到docker安装,如果当时没有启用就重启下。然后进入ssh按照作者介绍页面去输入。

(1)docker pull benzbrake/pgyvpn

(2)docker run -d
(3)--restart=always
(4)--device=/dev/net/tun
(5)--net=host
(6)--cap-add=NET_ADMIN
(7)--cap-add=SYS_ADMIN
(8)--env PGY_USERNAME=蒲公英用户名
(9)--env PGY_PASSWORD=蒲公英密码
(10)--name pgyvpn
(11)benzbrake/pgyvpn

蒲公英用户名和密码如果没有需要去官网申请一下,蒲公英官网链接

登录成功以后就可以在windows的pgyvpn客户端看到libreelec登录的ip地址,我这里把自己在用的主机名处理了一下,正常应该像下面那样有主机名和IP地址。我们可以复制这个IP地址,来使用SSH或者samba等服务。

[我的NAS+HTPC折腾之旅]篇九:搞定可道云和内网穿透  第5张


[我的NAS+HTPC折腾之旅]篇九:搞定可道云和内网穿透  第6张xshell里面填写ip地址的位置

[我的NAS+HTPC折腾之旅]篇九:搞定可道云和内网穿透  第7张putty中填写ip地址的位置

填写后登陆就可以用了,xshell和putty不同的地方是可以保存用户名密码,

[我的NAS+HTPC折腾之旅]篇九:搞定可道云和内网穿透  第8张xshell正常登陆

不过Docker的pgyvpn还是有点瑕疵,我使用的过程中平均一天能遇到一次断线,需要通过ssh远程通过命令重启pgyvpn的docker环境。所以这里我给这个docker环境安排了一个计划任务,这个任务的目的是定时检查进程中是否包含pgyvpn,如果有就啥都不用做,如果没了就知道断线了,执行重启pgyvpn的容器。这里我主要介绍思路和脚本,大家可以根据自己的系统情况进行修改。 在libreelec下,系统文件分区是无法编辑的,所以我在storage目录下创建了一个scripts的目录用来存放配置文件,pgyvpn.sh

(1)mkdir scritps

(2)cd scritps

(3)vi pgyvpn.sh

用vi编辑器进入以后要按键盘上的i键进入编辑模式,然后将下面的这段代码复制粘贴到ssh终端中。

Microsoft YaHei', Helvetica, sans-serif;">#!/bin/bash

flag=$(ps | grep dockerd | grep -v"grep" | wc -l)

if [ $flag = "1" ]

then

echo "docker RUNNING!"

else

sudo docker restart pgyvpn

#docker start up

fi

粘贴完成后,按键盘的Esc键,接着输入:wq保存退出

(4) chmod u+x pgyvpn.sh

(5)./pgyvpn.sh


[我的NAS+HTPC折腾之旅]篇九:搞定可道云和内网穿透  第9张正常运行后回返回一个pgyvpn说明进程正常运行,下面要配置cron文件做计划任务。

找到libreelec最好使用winscp,比较方便。我们登陆winscp输入用户名root和密码,默认是libreelec。

进入软件界面后按ctrl+alt+h显示隐藏文件。

[我的NAS+HTPC折腾之旅]篇九:搞定可道云和内网穿透  第10张

逐级进入.cache cron crontab目录,新建一个文件pgyvpn,用winscp的编辑器编辑,输入以下代码:

*/20  * * * * /storage/scritps/pgyvpn.sh

这段的含义是每20分钟运行一次,pgyvpn.sh用来检测pgyvpn的进程是否存在,如果不在就通过通过命令重启容器,如果在就输出pgyvpn。这样就基本实现pgyvpn正常挂机了。

以上就是libreelec做NAS+HTPC的最后一个章节了,因为1017u的这台一体机的性能确实不够,无法满足网卡直通的需要,所以我趁着5.1假期组了一台G4600的平台,下一节我将介绍硬件平台的搭建和使用中的一些问题。至于1017u这台一体机,由于不支持网卡直通,做ALL IN ONE平台确实比较吃力,性能上也有很大的不足,我已经拔掉了液晶的屏幕接线让它安心做一台单臂软路由了,欢迎朋友们继续关注我的文章。