搭建个人NAS
序言
几年前自己买了一块RockPro64,想着自己搞个NAS用用。然而其实历史经验告诉我,自己动手能力其实挺一般的,之所以自己搞,主要还是因为穷吧,一个简简单单两盘位的群晖NAS最便宜也要接近1K RMB了。
后来看了下就想着拿树莓派之类的SBC挂个硬盘得了,比来比去还是觉得RockPro64性价比更高,于是就下单了一组,包括SBC、NAS盒子、Wifi组件、风扇、CPU散热片。
现在总结下来其实可能还是买现成的NAS更省钱,因为自己组建遇到的坑、花费的时间都远超过这点价差- -。Anyway,就当记录个历程吧,总结沉淀下。
系统
最早最早我是直接给RK64刷的其实是OpenMediaVault,奈何总是用着不顺手(更多的是把它当服务器用,不如直接用Linux来得顺手),后来就换了Armbian一直到现在(不用Arch系还是因为当时自己菜,怕滚挂了搞不定)。
服务
之前搭建过Synchting作文件同步、Radicale做CalDav(同步联系人、日历等)、calibre-server做在线图书管理和阅读、VaultWarden做密码管理软件。
后来听闻大佬在用Owncloud,自己研究一翻后上了Nextcloud,替换掉了Syncthing和Radicale。后二者体验其实还是很丝滑的,尤其是是Syncthing,同步速度很快。用Nextcloud纯粹就是想统一管理吧。
网络
架构好服务后,也就来到了网络设置篇,一句话描述就是:如何在外面访问家里的NAS。这可能是所有NAS玩家的基本需求了,但是还是要强调下,公网暴露NAS服务还是有风险的,需要审慎考量是否需要,尤其NAS上有私人敏感信息的情况下。
经多了对Frp的多次配置尝试和长期使用后,感觉目前还是比较稳定的,家里是联通的网络,Frps是一台外网AWS,会二次过墙但还算稳定。
一开始我是所有服务都走Frp暴露出去的,直到有一天突然想到自己的家目录是通过Samba挂在到Nextcloud上了,如果哪天Nextcloud有什么0day,是不是我家目录也不保了,里面虽然没啥但是有些信息还是比较敏感的。所以这类服务或者数据可能还是不适合公网开放,于是就又上了Wireguard组网。
目前的网路布局大概如下
Wireguard
- UDP流量会被运营商QOS, 组网后ping几乎完全不通,需要包装或伪装为TCP。
a. AWS与NAS为Linux,用Udp2Raw即可。
b. Udp2Raw Android端也可以用,不过为了简便实用,可通过ClashMeta配置Wireguard dialer-proxy,先走VLESS建立TLS通道,然后在其中传递Wireguard流量(udp-over-tcp)。其他服务只要支持udp转发应该也可以。
Frp
- NAS与AWS之间使用mTLS,增强安全性
- Frps放置在Nginx之后,通过一些访问路径区分是访问博客还是访问NAS服务。自我感觉比通过SNI分流后分别访问根路径要安全(多了一步校验)。缺点就是NAS服务都需要改为路径访问了,不过因为公网暴露服务不多,所以问题不大。