前言
前段时间花400块重金从闲鱼收了一台蜜罐超存的NAS,6盘位(群晖只认4盘,卖家说windows可以认6盘),配置是J1900\4G内存\32G MSATA\200W不知名电源(据说是链力),逛了一圈市场的蜗牛星际、恒星存储之类的产品,基本上成色都比较一般,蜜罐这个算是长得比较中意的,所以果断下单。
买的时候机械硬盘还在高点,为了能先上手玩一玩,于是又斥资20元买了个拆机盘,主打的一个能用一个月就算胜利
一、刷入黑群晖
注:因为这次是为了纯折腾,所以没有买正版群晖(其实也是没钱),有能力的童鞋还是买正版哈。
原本店家发货的机子本身已经刷好了黑群晖,插上硬盘就能直接使用,但奈何我运气不好,刚到手用了两三天,放在msata的系统盘就已经掉盘了,于是又买了块U盘,从头刷了一个黑群晖进去。
基本步骤分六步:
1、下载引导镜像。地址:【https://github.com/fbelavenuto/arpl/releases】
2、下载U盘刷写工具,地址:【http://rufus.ie/en/】
3、使用refus或者其他刷写工具,将这个镜像写入到你的U盘中
4、将U盘插入主机,并接上HDMI线到显示器(估计是NAS少有的需要显示器的步骤)、键盘、鼠标和网线,最好你的硬盘也一起接进来,免得新的存储设备接入后影响到启动顺序(一般不会影响到)。
5、主机开机后按delete或者其他BIOS设置键(详细取决于你的主板的厂商,实在不确定的话,可以拆开机子看看主板型号,百度搜索主板型号+BIOS)进入bios,并设置你的U盘为第一启动项
6、等待系统引导启动后,会显示一个地址,进入后按引导选择镜像文件和群晖版本,刷入群晖系统
你的U盘在这之后就得一直插在NAS上了,理论上其他的存储介质也都能完成这个使命,但是U盘应该是最简单易得的介质了。
详细的操作过程可以看以下视频,此处不再赘述。
二、基础设置
完成正常的安装设置,来到了群晖的主页。
不得不说群晖这个web端的操作页面真的相当不错,非常流畅易上手,虽然是网页但却给人一种在操作可视化的操作系统一样。
首先当然需要为你的硬盘初始化存储池(进入存储管理器,先创建存储池,后创建存储空间)
然后在控制面板,固定你的NAS的IP(一般情况局域网的IP有租期的,过期才会收回,短暂的关机重启一般都不会改变NAS的IP,这一步也只是为了以防万一)
打开SSH功能(方便折腾)
最后在套件中心下载container-manager
至此,最基础的准备就已经完成了。
三、安装应用
感恩伟大的Solomon Hykes,Docker可以是不是世界上最伟大的程序发明我不清楚,但是它确实是我这种小白的救星。
不需要管各种环境、权限隔离、进程守护,一行代码拉取程序,一行代码启动程序,这才是开源项目应该有的简洁形态。
container-manager里面的注册表可以看到各种各样的容器镜像,此处介绍我使用的几个程序
3.1 halo
halohub/halo
这是一个比较现代化的博客程序,大学时代我一直用的是wordpress,虽然前台的主题各式各样有很多合我口味的,但是后台的控制台就一言难尽了。出于个人对于UI操作的执着,于是也将博客切换到了halo
此时也正在用这个博客系统在编写这篇文章,可以看到后台的页面也算是比较现代化的
3.2 emby
lovechen/embyserver
既然装了NAS,那么影音需求自然也是不可避免,在emby和jellyfin之间,我最终选择了特别版的emby,UI风格更加圆润简洁。
想下面这样简单分一下文件夹,再添加到emby的媒体库,就能自动刮削视频的信息,包含电视剧封面、演员、剧集简介之类的
3.3 calibre-web
johngong/calibre-web
一直以来我都有收集轻小说的epub的习惯,而最喜欢用的程序就是calibre
原本服务器在云上时,受限于带宽和映射到磁盘导致的各种问题,以至于每次我都需要在本地的calibre上传文件后,再在云上的web程序上传一份,相当麻烦。
下云之后,我只需要在电脑上的calibre程序管理NAS上的文件,calibre-web的数据也会跟着修改
方便了其中的步骤后,也就更愿意去愉快地收集了。
3.4 cloudreve
cloudreve/cloudreve
既然有了存储服务器,那么存点东西到自己的私人网盘也是理所应当的了。
cloudreve是个比较简洁易用的网盘程序,material design相当清爽,支持多种存储策略和离线下载,基本满足了我对于私人网盘的需求。
3.5 sun-panel
hslr/sun-panel
既然有了这么多内网服务,那么总得有一个统一的导航页面吧。
sun-panel支持内外网模式切换,界面也比较简洁。
3.6 部署自己写的项目
此处先留个白,下次介绍一下jenkins+docker快速部署springboot+vue项目的工作流。
四、外网访问
虽然说是想要下云,但是也并不是希望自己的网站完全不能在外网访问,当然我都白嫖黑群晖的系统了,也不可能去得寸进尺白嫖人家带宽。
我最终使用的是IPV6/DDNS+zerotier+nps的组合策略。
4.1 IPV6/DDNS
对于物理服务器来说,DDNS+IPV6应该是最简单粗暴的手法了。
由于反复操作没能给NAS分配到公网IPV6(或者说是防火墙的设置不对之类的)
于是我把主意打到了我的路由器上。
首先,在路由器上部署Aliddns,并设置一个子域名专门用来指向路由器的IPV6地址
然后在路由器中下载编译成二进制的socat程序,并放入到路由器的运行目录,最后设置一段指令到路由器的自定义脚本中
nohup socat -d -d -lf /var/log/socat.log TCP6-LISTEN:8083,reuseaddr,fork TCP4:192.168.123.156:8083 &
以上代码中,192.168.123.156:8083是你需要代理的内网IPV4地址和端口,TCP6-LISTEN:8083代表你要代理到路由器的IPV6的8083端口
这样一来,你的指定域名就可以通过IPV6访问到你的路由器地址并转发到你的NAS服务上,实现外网访问的效果(记得开放指定接口的防火墙哦)
4.2 zerotier
IPV6+DDNS虽然解决了服务外部访问的问题,但是对于想要通过SMB直接访问操作文件夹,或者一些没有IPV6的朋友来说就成了难题,于是,zerotier实现虚拟组网就有了必要。
首先去zerotier官网创建一个虚拟网络
我用的群晖7.2系统已经没有了zerotier的套件,所以需要在套件中心增加我不是矿神的套件来源
然后安装zerotier套件
接下来在SSH中执行以下指令
sed -i 's/package/root/g' /var/packages/zerotier/conf/privilege
此时可以启动zerotier了,启动成功之后执行以下指令
cd /var/packages/zerotier/target/bin
./zerotier-one -q join XXXX
XXXX处是你的网络ID,如果返回200 join OK就说明已经成功加入网络了,去zerotier后台授权这个设备加入
客户端也下载zerotier的程序,并加入这个网络后,就可以以局域网的形式来访问NAS的资源了。
4.3 NPS内网穿透
虽然以上手段已经能覆盖大部分需求,但是还是有小部分(虚拟组网不安全,IPV6又没有)的用户。
虽然下了云,但是服务器还是可以帮我们做内网穿透的工作的,参考我的这篇文章 ,将内网服务转发到服务端之后,再反向代理到域名,这样轻量服务器也能完成这种工作,一年也就60多。
结语
以上就是我这两天折腾NAS的小总结了,希望能对各位看客有帮助。
诚然NAS必然是个小众需求,不过将自己收集的资源分享给家人朋友也是个乐趣。
我的设想是,家里人想看什么电视,即使我在公司,也可以通过手机挑选资源下载到NAS内,他们能直接通过电视观看高清无广告的片源。
使用我自己写的番剧识别与弹幕匹配程序,搭配RSS订阅下载字幕组的资源,也可以给朋友提供愉快地看番服务,不需要自行下载。
分享是个很愉快的事情,对于爱折腾的人来说,折腾与分享就是以上一切工作的价值。