威联通NAS折腾记录(二)

使用方式

文件存储

作为一台NAS,最基础的功能便是文件存储了,得益于新买的8T硬盘,我可以把之前十多年攒下来的所有数据资料都存起来了。

最先遇到的问题是如何创建划分共享文件夹。在上一篇文章发布后,我又重装过一次系统,把系统盘从机械硬盘变更到了新买的一块2T固态上,8T机械盘纯当作数据盘来使用。我原本打算还是跟重装系统之前一样,用Multimedia文件夹来存放所有的多媒体文件(照片,音乐,视频),但是在数据盘新建文件夹时,总是提示我文件夹名称无效,如下图(图里是Web,实际上Multimedia是一样的):

fig01-文件夹名

尝试了半天,大概找到了规律,即使已经禁用了默认的共享文件夹,这些文件夹的名字还是被占用的状态不能用。所以我给多媒体文件夹起名叫MediaVault

照片备份

目前对我来说,NAS最重要的工作就是备份照片。照片属于最重要的数据,于是我参照遵循了数据备份的321原则,即3个数据副本,2个备份介质,1个异地备份:

  1. 3个数据副本 - 我这里严格意义上不是3个数据副本,而是加上原始数据一共三份,分别是手机上一份,NAS上一份,百度云上一份
  2. 2个备份介质 - NAS上的硬盘,以及百度云上的云存储
  3. 1个异地备份 - 本地NAS,异地百度云

fig02-备份321原则

威联通官方的备份程序HBS3支持百度云,而且经过测试,上传的速度还不错,平均下来有个20M每秒的样子,几个G的内容一会就上传完了。

使用官方的Qfile ProApp(之前是QuMagie,后来改成Qfile了),可以方便地设置把手机上的哪些文件自动上传到NAS的哪个位置。我没有让他自动后台上传,而是每周定期启动App上传,个人习惯吧,这个App是支持后台上传,并且可以使用流量上传的(前提要配好外网访问)。

音乐和电影库

音乐和视频也在MediaVault里存放,但是这些数据不是非常珍贵,即使丢失也不是不能接受的,所以就只在机械盘中存储了一份副本。

目录结构如下图:

fig03-MediaVault目录结构

游戏仓库

游戏仓库以及其他的杂项文件都放到了NasLocal共享文件夹里面,这些数据同样不是非常珍贵,所以也只有一份副本。

之前有个想法是把Steam游戏库移动到NAS中,平时玩游戏就直接用远程硬盘中加载,由于我的台式机和NAS之间是用2.5G网线直连的,理论上可以跑满机械盘的速度,但我最终还是没采用这个方案,还是把游戏库都放到台式机本地了。原因是现在固态便宜了,电脑上装了2个2T的固态,空间容量已经完全够够的了,从SSD加载数据的速度也要比通过网络从机械盘里加载要快得多,所以NAS里就只做一个归档,存储一些之前收集的老游戏啥的。

监控存储

监控录像的存储文件夹为Surveillance

我之前买了个小米的云台摄像头,它支持把数据存储到本地NAS中,于是我给摄像头专门新建了一个用户叫做camerauser,只能访问Surveillance一个目录,确保最小权限。摄像头支持3个月滚动存储,支持删除最老的文件,但是我跑了这么久好像也没看到它有删除,不知道能不能用。。。另外,摄像头上传视频的即时性不太好,可能有一定的网络原因,即使设置了实时上传,查看NAS里的视频文件时好像上传总是会延迟几个小时。

Docker

威联通自带Docker,我扩展到20G内存一方面也是为了让Docker可以多跑几个服务考虑的。我这里主要跑了这些服务:

  • HomeAssistant - 智能家居,这是个大项目,后面我要新开一个系列专门讲讲这个
  • NodeRed - 为HA服务的,可以通过拉节点编程的方式创建自动化
  • EclipseMosquitto - MQTT的一种实现,同样是为HA服务,用于跟其他IOT设备的通信
  • BitWarden - 密码托管服务,把密码存在第三方服务商总觉得不太保险,所以就在自己家里自建了密码托管服务

外网访问

如果NAS只能在家庭局域网的环境访问的话,可玩性就低了很多,如果能在外面随时随地访问到家里的服务器,就可以实现随时备份手机照片,随时观看家里的电影,随时访问家里的共享文件等等。以及上面提到的HomeAssistant,就更需要可以在外网访问了,否则连家里发生了什么都不知道😂

ipv6方案:DDNS

最理想的情况肯定还是找网络服务提供商去申请公网IPv4,但是实际情况并不理想,问了电信客服,现在已经不能提供了,只能提供公网ipv6地址。其实ipv6也可以,现在ipv6的覆盖率已经很高了,至少手机流量是完全没问题的。

于是新建了NAS专用的域名,给这个域名配置DDNS,我的域名是阿里云的,使用这个Docker镜像,新建一个ddns的服务,定期更新域名解析。

配置好之后看下访问速度:

fig04-外网访问速度v6

可以跑满家里宽带的上行带宽了。

ipv4方案:frp转发

然而ipv6+ddns的方案并不完美,在公司的网络环境下,是不支持ipv6的,此时就得换另外一种方案了:内网穿透。

内网穿透有很多方案,比如zerotier,frp等,我这里用的是frp的服务器中转模式,主要是不想额外安装客户端。

frp的安装就不再介绍了,看官方文档很容易。首先在云服务器上配置frps.ini

1
2
3
4
5
6
7
8
9
10
[common]
# 7000是用于绑定frpc的端口
bind_port = 7000
bind_udp_port = 7000
token = 服务器的token
# 5000和5001是威联通web ui默认的端口
vhost_http_port = 5000
vhost_https_port = 5001
# 6000-6010是预留的服务端口,8123是HomeAssistant的端口
allow_ports = 6000-6010,8123

接下来在NAS端配置frpc.ini,在Docker里新建一个frp服务(参考这里)即可完成安装。

1
2
3
4
5
6
7
8
9
10
[common]
server_addr = 服务器的ip
server_port = 7000
token = 服务器的token
[web]
type = http
local_ip = 127.0.0.1
local_port = 5000
custom_domains = 服务器的域名
# 为了网络传输安全,建议映射5001端口或者用http2https插件,使用https访问

最后看下速度对比:

fig05-外网访问速度v4

比ipv6直连还是满了很多,主要受限于中转服务器的带宽。

更多玩法

UPS

总担心家里突然停电,所以我还是买了个便宜的UPS:山特的TGBOX600,虽然说停电之后只能坚持16分钟,但是足够NAS做出反应并及时关机的时间了。

通过USB线接入NAS后的界面如下图:

fig06-UPS界面

在线视频(Kodi)

NAS里存了这么多电影,直接用SMB文件路径访问虽然也可以,但总感觉缺点仪式感,所以我调研了一下,发现了Kodi这个好东西。但具体的还没开始研究,有时间继续折腾~