从零开始在树莓派上搭建NAS

兴冲冲买了树莓派,却没多久就变成吃灰派?不妨试试在树莓派上搭建NAS~

树莓派

如果你已经有吃灰派,那就直接跳过这部分。

树莓派4跟上一代产品(树莓派3b+)相比,还是有大幅提升的,下面就简单做一个对比。

Spec Raspberry Pi 3 B+ Raspberry Pi 4
CPU ARM Cortex-A53 1.4GHz ARM Cortex-A72 1.5GHz
RAM 1GB 2GB
Ethernet 300Mbps 1000Mbps (Gigabit)
USB USB 2.0 USB 3.0
HDMI 1080p 4k

其实这里最关键的还是USB3.0和HDMI 4k输出。

当然我自己用的就是树莓派3b+,作为NAS也没啥问题。如果你能找到特别便宜的树莓派3b+,那也是可以入手的。

操作系统

这里会简要描述下树莓派操作系统的安装,已经装好的可以直接跳过。

Raspberry Pi OS / Raspbian,指的都是同一个东西,是树莓派官方支持的操作系统,本质上是基于Debian的魔改版,目前最新版本基于Debian 10 (Buster)。

以前的教程大概都是用NOOBS来安装,现在树莓派官方提供了Raspberry Pi Imager,相当方便。

Raspberry Pi OS一共有三种类型:

  • With desktop and recommended software(带桌面环境和乱七八糟的软件)
  • With desktop(带桌面环境)
  • Lite(仅命令行)

个人建议直接选择默认推荐的镜像,也就是带桌面环境的,这样方便新手操作。老手的话可以直接用Lite版本,反正命令行可以搞定一切。

访问桌面环境

桌面环境可以通过这些方式访问:

  • 直接用树莓派的HDMI接口
  • 电脑安装VNCViewer
  • 树莓派安装xrdp

访问命令行(ssh)

Linux和Win10都原生支持ssh,直接在终端输入对应命令即可。

当然如果跟我一样是懒人,可以连带密码一起提交上去,从而做到一键登录。

1
2
3
4
5
6
7
8
9
10
11
12
// Linux
sudo apt-get install sshpass
sshpass -p <your_password> ssh <user>@<ip_address>

// Windows(需要两个文件,并且要安装putty)
// 启动器(vbs文件)
Set oShell = CreateObject ("Wscript.Shell")
Dim strArgs
strArgs = "cmd /c <path_to_bat_file>"
oShell.Run strArgs, 0, false
// bat文件
putty -ssh <user>@<ip_address> -pw <your_password>

Source:

资源获取方式

不同的资源,对应着不同的工具。

http下载可以用aria2

种子下载可以用transmission或者deluge

以上这些都是Linux上比较好用的开源下载软件。当然,这些软件也都有官方或者第三方的Web UI,这样就能实现远程操作。

关于种子下载,如果是PT的话,需要在对应软件中关闭DHT,防止泄露passkey。但是如果是公网BT,那又要打开DHT来获取尽可能多的peers。鱼和熊掌不可兼得,如果都想要的话,建议直接安装两个不同的软件。

Transmission

安装

输入以下命令安装transmission-daemon

1
2
3
sudo apt update
sudo apt upgrade
sudo apt install transmission-daemon

配置

Transmission在安装完之后是自动运行的,要修改配置必须先停止对应的service

1
sudo systemctl stop transmission-daemon

然后打开配置文件修改

1
sudo nano /etc/transmission-daemon/settings.json

其实也没啥要改的,没特殊需求的话,大部分选项都完全不用动。

一般只需要修改下面几个:

  • download-dir: 下载完成的保存路径,默认/var/lib/transmission-daemon/downloads,如果在树莓派上外挂硬盘可以改成/media/pi/HARD_DRIVE_NAME
  • rpc-username: rpc连接用户名,用于登录Web UI,默认值为transmission,可以随意改
  • rpc-password: rpc连接密码,用于登录Web UI,默认值为transmission,建议修改
  • rpc-whitelist: rpc连接白名单,需要rpc-whitelist-enabledtrue才生效。默认值是127.0.0.1,只能本地连接。如果要局域网内连接可以改成192.168.*.*

接下来用下面命令启动transmission。

1
sudo systemctl start transmission-daemon

然后访问ip_address:9091,输入刚才设置的rpc-usernamerpc-password就可以看到Web UI了。

替换Web UI

由于自带的Web UI比较简陋,所以可以考虑替换成开源的transmission-web-control

执行下面的命令,就装完了,还是很方便的~

1
2
wget https://github.com/ronggang/transmission-web-control/raw/master/release/install-tr-control-cn.sh
sudo bash install-tr-control-cn.sh

注:这个脚本切记要用bash执行,如果用sh执行会出错,因为sh不支持部分指令。

Deluge

安装

输入以下命令安装Deluge

1
2
3
sudo apt update
sudo apt upgrade
sudo apt install deluged deluge-web deluge-console

配置

Deluge需要手动配置服务来实现开机启动,这里推荐使用nano作为文本编辑器,简单好用。

首先配置deluged.service

1
sudo nano /etc/systemd/system/deluged.service

把下面这些贴进去(ssh的话直接点击右键即可)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[Unit]
Description=Deluge Daemon
After=network-online.target

[Service]
Type=simple
User=pi
Group=pi
UMask=002
ExecStart=/usr/bin/deluged -d
Restart=on-failure
TimeoutStopSec=300

[Install]
WantedBy=multi-user.target

注意这里涉及到UMask,也就是文件权限配置。777 - UMask = 文件权限。比如这里UMask是002,那么默认文件权限就是775(rwxrwxr-x)。各位可以根据实际情况自行决定UMask。

然后配置deluge-web.service

1
sudo nano /etc/systemd/system/deluge-web.service

把下面这些贴进去

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[Unit]
Description=Deluge Web Interface
After=network-online.target deluged.service
Wants=deluged.service

[Service]
Type=simple
User=pi
Group=pi
UMask=002
ExecStart=/usr/bin/deluge-web
Restart=on-failure

[Install]
WantedBy=multi-user.target

然后运行下面指令启动deluge

1
2
3
4
sudo systemctl enable deluged.service
sudo systemctl enable deluge-web.service
sudo systemctl start deluged.service
sudo systemctl start deluge-web.service

没报错的话应该就成功了,不放心可以用systemctl status看看。

当然,别忘了开启远程连接

1
2
deluge-console "config -s allow_remote True"
deluge-console "config allow_remote"

最后,访问ip_address:8112,输入默认密码deluge,然后从列表选择本地正在运行的deluge服务,就进去了。默认密码可以稍后在Web UI的preference里修改。

queued状态

如果用的默认配置,那么下载完一定数量的种子之后,不会自动开始做种,而是进入“queued”状态。下完就跑,这样很不好,所以需要配置一下。

在 Preferences > Queue 修改 Total Active(总活跃种子数)和 Total Active Seeding(总活跃做种数)即可。Deluge的种子都是自动管理的,不需要手动一个个去干预。

aria2

我没装aria2,而且现在挂机http下载的场景估计比较少,所以就简单说几句。

注:虽然aria2也可以用来下种子,但是不推荐。

输入以下命令安装aria2

1
2
3
sudo apt update
sudo apt upgrade
sudo apt-get install aria2

配置文件在网上抄一份就可以了,然后跟Deluge一样作为服务开机启动。

Web UI可以用AriaNg

Samba

服务端

输入以下命令安装samba

1
2
3
sudo apt update
sudo apt upgrade
sudo apt-get install samba samba-common-bin

然后用下面命令修改配置

1
sudo nano /etc/samba/smb.conf

在配置文件底部追加下面内容,注意路径请自行替换。而且这里权限是直接开到最大的,最好根据实际情况修改。

1
2
3
4
5
6
7
8
[MyNAS]
path = /media/pi/easystore
read only = no
create mask = 0777
directory mask = 0777
guest ok = yes
browseable = yes
public = yes

最后重启一下,然后sudo smbstatus看看,有结果应该就成功了。

客户端

Windows的话,在文件管理器里头找到映射网络驱动器(Map Network Drive),输入下面内容就行了。

1
2
3
\\ip_address\shared_folder
注:这个shared_folder就是上面smb.conf里头填的名字
例如:\\192.168.1.123\MyNAS

Linux的话,用命令行挂载网络驱动器好像有点麻烦,建议直接在文件管理器里头操作。

小结

到这里应该就搞定了,吃灰派也开始重新发光发热~