树莓派-家庭NAS(1) https://www.jianshu.com/p/9be7ada37863
树莓派-家庭NAS(2) https://www.jianshu.com/p/91405ca824b8
树莓派-家庭NAS(3) https://www.jianshu.com/p/80777ed85246
需求
本人是一个软件行业从业者,在平常会关注各式各样的电子设备、也会了解各种各样的技术。经过多年的学习和实践后发现自己有各种各样的资料需要保存。还有自己在学习过程中总结出的各式的内容。所以,就一直在研究怎么把这些东西存储起来。
最开始我非常讨厌有自己的电脑,因为很多时候网络的诱惑会非常的大。我没有那么强大的能力去抵制这些诱惑,所以一直就不准备给自己购买电脑,电视,游戏机等等电子设备。但会持续的关注。(现在使用的电脑,还是我老婆的电脑(^-^)\!)
没有电脑,就意味着没有地方去存储资料。最开始的时候,大概是2012年左右从零担上买了一块300G的硬盘。那时候硬盘还很贵,这块硬盘应该是500块大洋。一直就存着各种各样的文件。后来用百度云(最早的时候百度云盘叫百度云,后来百度为了开展自己的云产品才改了名),那时候用了很多方法去免费的增大自己的百度云盘。但后来,百度云盘开始对版权,敏感信息进行过滤。很多东西都没有办法存储到百度云盘上。并且国内的环境越来越差,国外的Dropbox、Google Drive、Microsoft OneDrive……国内的360云盘(已挂)、华为网盘(已挂)、UC网盘(已挂)、金山快盘(已挂)、新浪微盘(已挂)、迅雷快盘(已挂)。所以说不定哪天百度云盘也挂了。所以一直在探索个人/家庭存储解决方案。
后来慢慢的了解到有很多的厂商已经想到并已经解决了个人/家庭存储的问题,甚至还能解决部分家庭计算的需求。所以,了解了一些这方面的商业化厂商或产品。
群晖、威联通、铁威马。家用NAS设备的三大厂商。小米路由器 HD,华为荣耀立方,华三魔术家等带硬盘的路由器。这些厂商和设备都能帮我们解决存储的问题,并且还有其他的功能加入。为我们的"家庭计算中心",提供了可能。为之后智能家庭提供了最基础的硬件支持。
功能分析
上面提到了很多厂商和设备。如果机遇这些设备提供的功能的去评估设备的价值/价格是非常合适的。如果有经济能力、或者没有很多的闲暇时间,购买这样的设备觉得是物超所值的。
但是,本人是一个喜欢折腾的人。并且从前一篇文章可以知道我为了"折腾"买了树莓派。所以,就想怎样基于树莓派搭建《家用NAS》或者《个人网盘》。下面大概的分析一下《家用NAS》平台所需要的功能:
编号 | 功能 | 描述 | 备注 |
---|---|---|---|
1 | 家庭部署 | 1.设备管理权,数据归属权全部都由个人负责。 2.设备所处的网络也需要控制。 3.数据安全有控制方法。 |
|
2 | 文件共享 | 1.需要在家庭内各种设备上都能访问文件。 2.可以控制访问权限。不同的成员访问不同的目录。 |
|
3 | 存储能力 | 1.有存储能力,并可以进行存储的扩展。 2.可以支持数据的备份与故障恢复。 |
|
4 | 远程同步 | 1.可以在外面的时候(公司、旅游等),将数据同步到家用NAS上。 2.可以在外面的时候访问家用NAS上的数据。 |
|
5 | 远程管理 | 1.支持远程管理,可以在外面的时候对查看家用NAS的状态。 2.可以支持扩展接入其他家用设备,并控制。 |
|
6 | 离线下载 | 1.可以在家用NAS设备上进行离线下载操作。 2.查看离线下载进度,控制下载到目录等。 |
|
7 | 各种终端 | 1.需要支持PC端管理功能。 2.需要支持手机端管理功能。 |
|
8 | 影音中心 | 1.可以进行DLNA,WebDav等协议 | |
9 | 很多应用 | 可以支持很多应用,如:百度网盘同步,家用监控存储,远程家用设备控制,IFTTT等 |
因为是家用设备,所以这里考虑安全,可用性方面的内容少一些。家用NAS基本上可以上传下载,可以看视频基本上就够用了。所以其他方面的内容不再这里考虑。所以这个方案不适用与公司内部文件共享,网站文件存储等方面。
开源软件研究
有了上面的需求,就有了目标。开始研究开源软件,使用开源软件把整体的环境搭建起来。因为是基于树莓派的家用NAS解决方案,所以,都会基于树莓派上的一些解决方案进行。
树莓派上又多种方式开源项目,或者免费项目。可以简单的分为:树莓派操作系统镜像,应用软件,Docker镜像。一项一项的看看这些形式的项目的支持:
树莓派操作系统镜像:
LibreELEC,KODI,OSMC是树莓派官方上能找到的几个影音系统的树莓派镜像。这几个系统都是国外的大神开发的,所以对国内的情况支持较少。例如之前使用LibreELEC想看个Bilibili都没有插件进行扩展,国内的各大视频网站的支持也很弱。操作起来比较像是一个机顶盒,所以必须把设备放在电视附近使用HDMI进行连接。比较限制使用方式,所以在这里不考虑这几个系统。
Raspbian是树莓派基于Debian的一个纯净版本。可以使用操作系统界面,也可以使用命令行方式安装。
CentOS也有专门的树莓派版本,不过支持的比较差。在使用一段时间后莫名其妙的启动不了,不支持ntfs-3g文件系统,安装软件各种不支持树莓派版本。所以,CentOS的树莓派支持还是差一些的。
树莓派应用:
树莓派上有些应用层的软件,例如:OpenMediaVault,FreeNAS,RaspNAS。这些应用层软件可以使用多种方式安装,有些大神已经把这些系统生成了树莓派镜像,可以直接下载刷到SD卡上就可以用。也可以根据安装步骤进行应用层的安装。
在树莓派上安装这些软件之后,使用时发现一些问题。在使用OpenMediaVault时发现,这个系统支持RAID。厉害了支持RAID方式的磁盘管理,不过要支持RAID就需要多块硬盘。在没有多块硬盘的情况下使用这些软件完成NAS的部署,比较困难。并且,在树莓派上运行这些程序事也会发现一些不稳定的问题,并且对终端支持的种类也有限,要不就是终端软件是收费的了。所以,整体考虑这几个应用系统不可用。不过有一些大神也使用这几个系统去实现NAS,可能大神们对这些系统进行了改造。
Seafile - 开源的企业私有网盘。国产的私有化部署网盘系统,不过对树莓派的支持稍差一些。因为Seafile是使用Python语言开发的,可以使用Sqlite3作为数据库。但是在安装过程中会和其他的软件依赖发成冲突,并且不支持树莓派上使用Docker作为环境隔离。
Pydio | Enterprise File Sharing & Sync Platform。也是一个不错的应用软件,比较遗憾的是不支持树莓派。树莓派Docker镜像:
NextCloud,ownCloud,Samba,aria2等等。可以满足家用NAS的基本要求。但是需要进行组装工作。还可以进行环境隔离,不影响其他软件的运行。
离线下载之前使用过迅雷的linux版本,但是及其不稳定,而且已经停止维护了。所以在树莓派上没有比较好的离线下载工具。
解决方案设计
综上的开源软件的调研,发现没有现成的、完善的解决方案可以满足我们上面提到的软件需求。需要进行组装才能完成。俗话说的自己动手丰衣足食,所以先整一个整体方案。
分几个部分:访问侧,设备侧,设备。其中各部分的意义为:
访问侧:
访问侧主要解决在公网上访问NAS服务的网络可达。这里因为家里使用的是电信的网络,所以是有公网IP的。这里只需要解决路由器与树莓派之间的端口映射以及拨号后IP的只变更的问题既可以。如果是其他网络,没有公网IP的情况可以借助于花生壳等类似技术完成。
设备侧:
设备侧主要是运行的软件。负责有Samba,NextCloud组成。Samba用于家庭内部的文件共享,端口不对外开放。NextCloud主要完成家庭网盘功能,可以在公网访问。
设备:
设备为上层运行的软硬件环境。设备上硬件主要是有路由器、树莓派和西数硬盘组成硬件,Raspbian为树莓派操作系统,Docker为软件运行环境。
以上从需求来源到调研软件,然后在形成整体解决方案。下一篇文章将会介绍其中的具体操作过程。
参见
Dietpi玩转SBC
Plex完美个人影音云盘搭建教程-Plex Media Server安装与使用方法
利用Pydio搭建免费私有云存储-多终端自动同步可在线播放音乐视频
Oneinstack安装NextCloud以及使用Aria2离线下载和ocDownloader插件配置
用树莓派制造一个像样的 NAS
推荐几个树莓派 raspbian 系统 可用的 arm docker源
https://nextcloud.com/athome/
https://nextcloud.com/yourdata/