全部 / 兴趣交流 / 技术交流 / 软件交流 · 2023年11月3日 2

NAS折腾记1️⃣:从OpenWrt到Unraid

家庭NAS的进一步入门。

前言

从天马学生公寓搬到天马小区... - hiRipple
丐版家庭影院,却或许是校园住宿体验的天花板。
hiripple.com

书接上文,从天马学生公寓搬出来后,我购入了斐讯N1盒子、雷鸟电视、AppleTV以及惠威M200作为影音系统。然而在使用约5个月后,还是有相当多不满意的地方,趁热双十一,或许是升级的时候了。

Openwrt

不妨先说说之前方案的缺陷。首先是N1盒子自身2G+8G的配置,不知道跑Docker是否太勉强,在实际使用过程中遇到了相当多的BUG。包括但不限于——一觉醒来发现Docker容器、镜像被清空了(实际上的Docker根目录被神秘力量篡改)、运行几天后进行任何服务或设置的更改都会直接死机、作为阉割版Linux的Openwrt不支持许多常用命令、Docker容器间歇性断网抽风等。还有一个相当奇怪的现象,每次重启系统后,系统的磁盘就挂载为零只读,所以每次都必须手动执行mount -o remount,rw /。

虽然说让一个软路由系统充当NAS,还是跑在一个百元的N1盒子上是有些强人所难了,所以最终还是决定放弃它,目光向上看。

alist

其次是资源存储的问题,此前我的存储方案是:本地1t固态硬盘+阿里云*3+夸克*2,在使用过程中也遇到了不少问题。本地1t的小空间注定只能用来放置少量珍贵的影视和其他类型文件,因此主力还是阿里云和夸克,阿里云不支持离线下载,所有资源都必须求之于人,而且蓝光原盘资源几乎没有(大部分是Remux);至于夸克,离线功能仅限于最新的、大众的磁力,最恶心的是开了SVIP后依旧间歇性限速,导致经常遇到想看电影但被限速、看到一半开始缓冲的情况,官方甚至已经开始切割自费SVIP和88VIP。作为阿里系的软件,这两云盘的吃相也相当难看,部分资源分享秒封暂且不论,连用户自己云盘中已保存的文件也可能突然蒸发。

除此之外,阿里云和夸克即便开通SVIP,容量上限也仅限于6-8t,对于存储原盘远远不够,目前多账号的方案也只治标不治本,不断加账号会让文件管理越来越混乱。

最后的一个小需求的Home assistant,家里的智能设备越来越多,米家APP也越用越难受。HA的需求就出现了,而此前N1安装了OP系统无法再折腾HA,不得不考虑升级。

硬件篇

设备的选择

考虑升级N1盒子之后,下一步该换什么设备成了一个难题,经过几天研究,大致选项如下:

  • 群晖DS224+
  • 威联通TS-464C
  • 极空间Z2PRO
  • 民间高手QNAS 4
  • 成品迷你主机:intel迷你PC、零刻、畅网等
  • 破烂王星际蜗牛

价格以递减排序,从400-2400不等。总结了各自的优缺点如下:

  • 群晖/威联通 系统专业、稳定性强、售后给力,但高价低配,有一种苹果的美。
  • 国产极空间 系统易上手、性价比高、外观好看 ,但保留国产窃取隐私的一贯作风、也存在近几年倒闭的可能性,让NAS成为废铁。
  • QNAS:极其考验动手能力,可以做出性价比最高的小主机,但购买零部件、自行组装的稳定性让人担忧。
  • 成品迷你主机:性价比比成品NAS高一截,但是用途更贴近All in One,并没有NAS标配的硬盘柜,所以大部分人选购nas并不会考虑。
  • 星际蜗牛:无须多言,配合黑群晖凭借一己之力让nas走进千家万户,不论多丑、多吵还是多笨重,在400元的价位都不是缺点。

综合考虑了我自身的条件:钱包空空的苦逼学生党、居无定所导致的移动需求、并不需要太专业的数据安全与传输效率等等,最后选择了小作坊组装的成品N100小主机。

这款中柏N100主机的入手价格在450左右,实打实的价格屠夫,同级别CPU的群晖价格怎么也要翻个四、五倍。其他优势包括:搬家时迷你主机可以直接放入口袋,相比于成品nas可以自由扩充内存条与SSD。至于硬盘柜的问题,我目前也用不上大容量机械硬盘(单纯因为钱包不支持,按照1t/100的价格换算,要存下我现有的约20~30t的资源,再加上数据冗余,可以说直接爆金条了😭),最后选择的方案依旧只能是挂载网盘。虽然达不到资源的隐私和内网级别的传输速率,但也是相当省钱的过渡方案。

迷你主机

开箱,配件包括12V*3A电源和一根HDMI线,以及2.5寸硬盘安装支架,加上内存条与硬盘后,配置如下:

  • CPU:Intel® N100 @ 2871 MHz
  • 内存:三星ddr4 2666 8G
  • 硬盘:固徳佳 1t SSD
  • 接口:USB3.2*4、USB2.0*1、千兆单网口、HDMI/DP。

这么看丐版还是有丐版的道理,接口方面确实有些“精简”了,单网口注定不能做简单的软路由,千兆的传输速率也限制了带宽上限,C口被残忍阉割,此外非常坑的一点是,N100不支持双通道内存,当然这是intel的刀法。

裸照*1

拧下底部的四个螺丝,即可轻松进入机器内部。可以看到其内部结构较为松散,做工一般,相当有“小厂风”,这坨屎黄色的电池实在难以吐槽。不过官方送了2.5寸硬盘安装支架,后期如果有需求还能加一块SATA固态,还算是有些良心。

网速测试

使用TV端infuse进行网络测试(APPLE TV与主机皆通过网线连接路由器),网速基本达到千兆,局域网内四个人同时观看蓝光原盘也不会卡顿。

软件篇

Unraid系统

装好内存与硬盘,将Unraid写入u盘并接入,然后只需要连接键盘按F7进入Bios,最后选择从u盘启动,Unraid系统即安装完成,整个过程丝般顺滑。(目前使用了Unraid开心版,视具体使用体验再转正,毕竟动辄60刀的价格实在难以承受)。至于为什么选择Unraid?

  • Windows:买这玩意就是为了摆脱windows,自然是不可能装的。
  • iStoreOS:听说只是OP系统加上应用商店,貌似有些大材小用。
  • 黑群晖:选择这类产品的初衷还是想装黑群,无奈黑群不支持N100.
  • TrueNas:主打ZFS存储系统,页面漂亮,但对虚拟机和docker支持不是很好。
  • OMV:看起来与Unraid特点类似,但界面过于丑陋。

最后选择Unraid的主要原因还是良好的虚拟机/docker支持,Unraid也是除黑群外唯一有应用商店的系统,未来折腾也会方便一些。至于Unraid饱受诟病的读写速度和zfs,个人需求并不是很大,最重要的原因还包括Unraid可以作为底层系统,如何后续想安装TrueNas或者OMV都可以通过虚拟机的方式实现。

磁盘管理

作为nas系统最重要的还是磁盘管理方式,Unraid正如其名,虽然我暂时用不到,但还是挺喜欢这种映射策略。Unraid将主要用于存储的硬盘放在阵列设备,其他包括校验盘与缓存盘,如何后续想要添加硬盘只需要很简单的分配至阵列再重启设备,如果硬盘损坏也可以插入新硬盘然后再根据教养盘恢复数据。因为我的主要储存方式是网盘,所以也没有加上校验盘。

在共享这一选项中,Unraid以User为单位建立起磁盘的索引,这对于多块磁盘的管理非常方便,所有磁盘内的文件都被映射在user文件夹内,任何存储相关的操作都可以通过user共享文件夹进行,相当于把多块硬盘直接当成一块用。

CA商店

说Unraid有应用商店其实也不太严谨,毕竟它的商家叫做Community Applications,实打实的民间商店。商店内部分为插件和docker容器,所有插件都已被墙,直接安装全部报错;Docker容器大概18m的镜像能拉一个小时左右(移动300M宽带)。而Unraid是没有VPN相关的插件的,这意味着操蛋的网络只能通过软路由解决(依赖软路由还算什么AIO?)

不得不说国内这操蛋的网络环境,百分之80的折腾时间都花在了网络上。安装插件可以手动安装,对于Docker可以通过更换镜像源,但镜像源也经常出现找不到镜像等bug,速度提升有限。最麻烦的还是虚拟机,在安装虚拟机的过程中,如果出现了类似“从GitHub clone”、“从Dockerhub拉取镜像”等命令,那系统就直接安装失败,而虚拟机一般又通过物理网卡获取独立的IP,网络环境自然与Unraid本体不同,而安装虚拟机时因为无法设置网关,之前N1盒子作为旁路由的OP系统也无法代理上,于是又得找新的解决方案。。。

Unraid系统本身是除了基础的磁盘阵列与虚拟机/Docker外,不带任何功能的,例如文件管理、文件同步、内网穿透、相册、媒体服务器等等。这些群晖套件轻易实现的功能都要依赖开源社区贡献的docker镜像,但作为一个收费的闭源系统,功能着实太少了一点。对于docker,虽然CA商店提供了配置模版,但和群晖套件这种犹如手机应用市场一样的安装方式,插件依旧不小,我认为既然是unraid系统的应用市场,很多Docker的路径、网络、设备映射完全可以预先配置好,例如媒体文件统一映射在/mnt/user/media,设备则自动搜寻填写路径,而不是每次都需要用户手动配置。况且国内的网络环境对用户的动手能力有极高的要求,实际体验堪忧。总而言之,正经玩nas还是买群晖吧。

备份

由于Unraid没有ZFS强大的文件快照功能,并且系统运行在U盘上,定时备份就显得相当重要。

User script

我选择的方案是rclone➕简易的Shell脚本,因为自己用的开心版系统,官方的Unraid server没法使用,而应用市场里类似Appdatabackup、luckybackup都感觉有些笨重了,而且我希望备份前应该压缩好再进行传输,于是选择自己写一个~

#!/bin/bash

TIMESTAMP=$(date +%Y%m%d-%H%M%S)
# 定义压缩文件的名称,包含时间戳
BACKUP_FILE="/mnt/user/backup/appdata-$TIMESTAMP.tar.gz"
tar -czvf "$BACKUP_FILE" /mnt/user/appdata

if [ $? -eq 0 ]; then
    rclone copy "$BACKUP_FILE" alist:backup
    if [ $? -eq 0 ]; then
        rm -f "$BACKUP_FILE"
    else
        echo "rclone failed to copy the file."
        exit 1
    fi
else
    echo "tar failed to create the backup file."
    exit 1
fi
ShellScript

思路就是定时将U盘内文件/boot与Docker应用的配置映射路径Appdata通过cron插件定时打包,然后使用rclone命令将压缩文件上传至远程储存。

时间机器备份

共享硬盘

用了nas之后,Mac的时间机器也能更好的利用起来,只需要创建一个世界机器共享文件夹,然后再Mac的访达中就会自动出现这个文件夹,可以实现连接局域网自动备份,终于不需要外接硬盘了。

媒体服务器

媒体服务器暂且使用Alist(虽然不算媒体服务器)+rclone。Alist将网盘挂载为webdav,rclone将webdav再挂载为本地磁盘。

115

体验过半年的阿里云和夸克之后,我又购入了500元/8年的115会员,期待体验有所改善。

通过alist挂载115后结论如下:和谐程度方面,比阿里云和夸克优秀的多,基本不会出现和谐网盘资源的情况,毕竟这也是115特色😂;资源方面,115主要使用磁力链接下载,而分享功能几乎不可用,磁力的速度对于老资源可能是国内数一数二的,但对于新资源又比夸克还要慢些,猜测是用户量逐渐流失的原因;下载速度方面,介于阿里云和夸克之间,阿里云全时间段不限速,几乎跑慢带宽,夸克每天晚上必限速,速度约为1m/s,而115经过几天实测,每晚约8点后开始限速,速度约为5m/s。总体来说和本地硬盘还差了不少,原盘电影在晚上属于不可看的状态,不得不感叹,国内现在已经没有不和谐不限速的网盘了。

资源检索方面,此前博主已经推荐过了公共BT站Btnull.com,这里再补充两个推荐使用RippleMovie

音范丝 | 首页——精选4K蓝光原盘下载,顶级收藏
音范丝是一个搜集、精选的高品质电影资源网站。
www.yinfans.me
4K???? - 4K??Ӱ_4K??Ƶ | 8K??Դ_????ȫ??4K????ԭ??
4K????רע?????ȫ??????4K??8K??Դ??????רҵ4K??Ӱ??վ???ṩ????8K??Ӱ??UHD????ԭ?̡?4K??Ƶ??8K??Ƶ??4K??ֽ??VR4k??4K??Ӱ???أ?4kSJҲ??4k???尮???߽?????̳!
www.4ksj.com

音范丝为完全免费无广告,但资源相比Btnull更少,而4K世界下载需要K币(可以用签到脚本解决,基本用不完),4K世界会有部分首发Upscale资源以及DIY原盘,更偏向PT的风格,至于为什么不入坑PT,实在是买不起硬盘😭。

jackett

其实国内这些BT站我更多用于检索电影的条目,以及关注有哪些新资源出了蓝光,真正搜索磁力肯定更推荐Jackett,jackett可以说是真正的全网搜索了,会包含许多国内检索不到的冷门资源,推荐部署在国外机上,毕竟大多数网站还有墙。

115最大的优势还是网盘容量,8年/500元还送8T,属于是白菜价了。只要后期不跑路,空间不够用还可以通过某宝25r/5t的价格随意扩容,基本不用担心空间不够用。为了更好利用它,还可以将网盘空间作为自己的cloudreve空间,放弃昂贵的oss。

nohup rclone mount alist:115 /mnt/user/embydata/movies --cache-dir /tmp --allow-other --vfs-cache-mode writes --allow-non-empty &
ShellScript

虽然路径里为emby建立了文件夹,但最终却没有使用emby,因为这玩意元数据搜刮实在太慢了,在有一个非常强大的客户端(infuse)的情况了,影片元数据并不需要服务端进行刮削。至于其他媒体服务器,plex和jellyfin等等都不在我的考虑范围,因为它们无法识别蓝光原盘,而我个人又有看原盘的癖好,不如仍然使用alist,其他的一切都交给infuse吧。

内网穿透

既然把它当nas用,内网穿透还是必不可少的需求。不像成品nas自带的“一键穿透”,Unraid需要用户自行配置。

cloudflare

我选择的方案是Cloudflare tunnels,又是万能的cloudflare😂。一部分原因是个人不喜欢zerotier这类通过“打洞”建立虚拟局域网的方式,它需要客户端也装上app并连接vpn,麻烦的同时也无法分享给朋友;其次当然是CF傻瓜式的部署方式。

使用Cloudflare tunnels 需要申请zerotrust服务,前置条件是一张外币信用卡以及一个域名。恰好我在前段时间申请下了工行的星座visa卡,用它顺利拿下zerotrust,域名则使用hiripple.com的二级域名。

在Unraid上安装tunnels服务的方法也很简单,在cloudflare新建tunnels,直接copy官方的Docker cli到Unraid终端中运行,刷新界面就可以看到tunnels已连接,此后映射内网设备的ip和端口就如同添加DNS记录一样简单。更NB的是,通过这种方式反向代理的域名自带ssl证书,真正实现一键内网穿透了。

下载速度实测

使用alist的下载速度实测约1m/s~2m/s,勉强够用,CF的网络在国内的状况比较不稳定,时快时慢,毕竟用的人太多了。值得一提的是,使用CF tunnels时,记得关闭rocket-loader(如果此前开启了的话)。

软路由/其他Docker应用

既然是AIO服务器,软路由也必须安排上~

Openwrt

Unraid具有良好的硬件直通性能,所以只需要创建一个Openwrt虚拟机,对于虚拟机,并不需要例如Alist、Aria2以及docker套件等功能,只需要保留最基础的科学上网工具,因此初始内存和CPU只需要最低配即可。最后使用网站:https://openwrt.ai,可以很方便地配置自己需要的镜像。

游戏加速器

目前市场上绝大部分硬路由都不支持刷机,因此想使用路由器对游戏进行加速就需要用到软路由。作为AIO服务器,旁路由模式下的OP系统也可以流畅加速,只需要将主机设备的网关与DNS手动配置为旁路由的内外IP。

因为这台主机是单网口,所以我的方案还是作为软路由使用,近针对一些不太方便出国的设备,例如Appletv、Quest2等。其他Docker包括Nextcloud、Aria2、Alist、qinglong、koishi等,对于这台小主机来说同时跑十几个压力也不算大。

至此,第一轮折腾完结。

三相之力