如何用Linux搭建家庭NAS?支持远程下载功能

3k 词

Hello 大家好!我是在2024年依然对这个荒诞的世界抱有热情的超级神奇的神奇君!

在之前的文章中,神奇君为大家介绍了Linux的基本操作,分为了三个部分,分别是1分钟、3分钟、5分钟的教程,如果你还对Linux的基本操作有疑问,欢迎你阅读神奇君的Linux系列3篇文章:

【技术分享】小白如何学习Linux?从VirtualBox虚拟机软件开始,1分钟教程!

【技术分享】小白如何学习Linux?安装一台Linux虚拟机,3分钟学会!

【技术分享】小白如何学习Linux?会使用Linux的Shell,你就会了全部,5分钟学会!

今天主要为大家介绍一下如何使用Linux搭建一个家庭NAS。说到NAS,很多小伙伴可能会想买一个群晖,或者是威联通之类的设备,来使用现成的系统,这当然是一个很简单的方法。但是其实所谓的NAS,并没有多么神秘。它只不过是一个承担着提供在网络中提供“共享文件服务器”功能的设备,提供统一的存储功能,供家庭中所有的设备共享,例如在电视上和电脑、手机上,甚至人在外面的同时可以看到NAS中的电影、照片等等。

NAS的兴起要得益于网络的发展,其实这么多年以来,对于文件共享本身的协议倒没有经过什么太大的升级,还是那些传统的协议和方式,例如FTP、SMB、WebDAV等等。但是网络的速度却得到了极大的提升,很多小伙伴已经率先使用上了千兆甚至超千兆的网络,家庭的内网也有的从普通的百兆升级到了万兆,从普通网线升级到了光纤等等。这就给NAS的存在创造了条件,毕竟千兆内网的传输速度也达到了100M每秒以上,万兆网络更是能达到1G每秒以上,而传统机械硬盘的读取速度通常只在60MB/s至200MB/s之间,写入速度一般在80MB/s至160MB/s之间,也就是说网络传输速度可以基本突破磁盘IO速度,不构成数据读写的瓶颈,这也就是NAS这些年越来越火的原因。

对于NAS设备来说,多盘位的NAS机器动辄上千,也是成本非常高的。对于自己组建NAS来说,神奇君之前写过一篇文章:还在用黑群晖?试试这款开源好用的NAS(附图文安装教程)

这是一个基于Debian制作的开源的NAS系统,它有非常方便实用的界面,非常适合用来自建NAS。而今天神奇君要分享一些更简便的方法,只需要几条命令就可以搭建NAS。

我们要实现一个基于SMB协议分享文件,和基于APACHE服务的,支持通过Aria2远程下载磁力链的家庭NAS,由于这套方案非常开源,使用的也都是通用的技术,所以它对硬件基本没有什么要求,只要能够运行Linux,基本都可以使用。不论是树莓派还是各种派,或者是J1900这样的小主机,甚至是刷过OpenWRT的路由器,都可以用类似的方式来组建一台NAS。

1. 安装软件

我们要安装的工具是samba、aria2、apache,只需要一条命令就能安装这三个软件,sudo apt-get install samba aria2 apache2,等待安装好以后,接着就是修改配置的事情了。

2. 修改Samba配置

为了简化访问,我们设置一个允许匿名访客访问的NAS,需要做的是把/etc/samba/smb.conf的共享定义注释掉,同时加上我们的定义。

把/etc/samba/smb.conf最后的Share Definitions部分定义的homes、printers注释掉,加入我们自己的配置,假设我们的共享位置是在/data/download(其他的位置也可以),我们添加的内容如下:

1
2
3
4
5
6
7
[download]
path = /data/download
read only = no
browseable=yes
writeable=yes
guest ok = yes
guest only = yes

修改好的smb.conf配置文件的最后类似这个样子,从第167行开始后面全都注释掉了,只剩下我们自己定义的配置:

然后我们执行sudo service smbd restart重启一下Samba服务。

3. 在其他机器上添加远程文件夹

我们这台Linux的IP地址是192.168.50.200,我们在局域网中另外一台电脑上点击添加这个网络文件夹。

一直点击下一步,然后输入网络地址:\\192.168.50.200\download

共享的名字,随便填写一个即可:

接着就可以在我们的电脑中使用这个网络文件夹了。如果上面的过程报错了,最有可能的一个原因是你没有在当前的网络中启用网络共享,需要按照这样的方式修改一下配置,启用网络共享和发现:

此时我们NAS的基本功能就算搭建好了,在电视、手机等各种设备上也都可以添加这个共享文件夹。默认是不需要输入密码的,如果某些设备强制要求输入密码,那就随便输个,例如用户名和密码都输入guest,就可以了。

4. 通过aria2实现远程下载功能

接下来我们要通过apache服务器,结合Aria2来搭建一个远程磁力链接下载器,来配合我们的NAS使用,帮助我们把一些磁力链直接下载到我们的网络文件夹里,方便观看。

远程下载器分为两个部分,一个是Aria2的RPC服务,另一个是Aria2的远程下载界面,这里我们使用AriaNg,这是一个开源的Aria2界面,它的下载地址我放在了文章的最后了。

我们首先把RPC服务启动起来,执行aria2c --enable-rpc --rpc-listen-all --rpc-allow-origin-all -d /data/download/ -D,然后执行netstat -antup | grep 6800,如果6800端口成功监听了0.0.0.0,就说明Aria2的RPC服务启动好了。

接着我们要把AriaNg部署到我们的apache2目录中,下载最新的AriaNg-1.3.7.zip,解压到AriaNG,并且移动到/var/www/html/中,

然后我们打开浏览器,访问http://192.168.50.200/AriaNG,即可看到我们的下载界面:

点击页面上的新建,就可以添加磁力链等下载任务了,磁力链的内容会下载到我们的/data/download目录中,我们可以在多处进行访问。

需要注意的是,这里我们并没有为Aria2的RPC服务设置密码,并且我们的配置也仅仅是最简单的配置,Aria2NG有–rpc-user、–rpc-secret等参数可以设置密码,并且有–save-session等参数可以定义断点续传等操作,更多详细完整的配置可以参考这个Github仓库,写的很好,有很完整的定义说明:

https://github.com/P3TERX/aria2.conf

如果你需要把你的AriaNG服务暴露在互联网,最好是为Aria2的RPC服务设置一下密码,否则任何人都可以登录到你的Aria2上调用你的RPC服务下载内容。

好了,以上就是今天的分享,如果对本次内容还有什么想要一起探讨的地方,欢迎在后台私信神奇君。

最后是AriaNg下载地址:

https://github.com/mayswind/AriaNg/releases