如何在树莓派上搭建私有云存储

本篇的旨在最全面地介绍搭建网盘的整个过程,让没有Linux基础的小白们少走弯路,因此细节上多有赘述,老司机们请无视。最近国内的网盘们一个接一个地倒下,相信很多人不想忍受某网盘的限速,大家对私有云的需求越来越高。最简单和稳妥的解决办法当然还是购买群晖这样高性能、多功能的NAS,但动辄几千元的售价还是让许多人望而却步,市面上的私有云盘软件有诸如可道云、Nextcloud/ownCloud、Seafile等,这里IT之家来介绍如何用一块树莓派3B开发板搭建私有云存储。

先介绍一下本篇的主角——可道云

KodExplorer可道云,原名芒果云,是基于Web技术的私有云和在线文档管理解决方案,具有以下特点:

  • 轻量易部署
  • 适用性强,应用场景多
  • 高颜值、可定制

在体验了各家网盘后笔者选择了可道云,主要是第一眼就被他近似于Windows的操作界面吸引了,可道云不需要数据库,足够轻量,搭建简单,毕竟小小的树莓派机能实在是有限。对比ownCloud,可道云在树莓派上的性能表现要好太多。但也有像无移动客户端支持、同步不便、移动端网页版存在一些问题等不足。

如何在树莓派上搭建私有云存储

aria2

aria2被众多网友视为下载神器,相信不少朋友都接触过,它是一款开源免费跨Win、Mac、Linux平台且不限速的多线程下载软件,具有速度快、体积小、性能强劲等特点。aria2支持HTTP / FTP / BT / Magnet磁力链接等类型的文件下载。

准备

  • 树莓派3B
  • 内存卡
  • 硬盘
  • 公网IP
  • 域名

为树莓派安装系统并启动登录

先去树莓派官网下载系统镜像

如何在树莓派上搭建私有云存储

Download Zip下载压缩包,下载完成后解压,得到img镜像文件。

下载镜像烧录工具Win32DiskImager v0.9.zip并安装。

使用读卡器将内存卡连接电脑,运行Win32diskimager。

如何在树莓派上搭建私有云存储

映像文件选择刚下载的img文件,设备选择内存卡盘符,然后选择写入,就开始安装系统了,安装完成后会弹出完成对话框。安装完成后在Windows系统看到内存卡只有74MB这是正常的,Windows看不到Linux下的分区。

然后在内存卡根目录下新建文件名为ssh的空白文件(没有后缀名),这样就能开启SSH服务登陆树莓派了。

将内存卡插入树莓派,用网线连接树莓派网口和路由器lan口,然后接上电源线。树莓派就开机了!

登陆路由器后台查看树莓派的内网IP

如何在树莓派上搭建私有云存储

可以看到这里树莓派获取到的IP地址为192.168.2.6,记住这个地址

下载并安装PuTTY,安装完成后运行PuTTY。

如何在树莓派上搭建私有云存储

将电脑和树莓派置于同一局域网,在主机名称中输入192.168.2.6,端口默认的22就可以,然后点击打开。这时会弹出安全警告,点是即可;之后输入用户名:pi;密码:raspberry(输入时密码不可见)就成功登陆树莓派了。

如何在树莓派上搭建私有云存储

域名

大家可以在阿里云注册一个喜欢的域名,部分域名一年也就几块钱。至此准备工作就完成了。

搭建可道云

PuTTY登陆后为root用户设置密码,输入(PuTTY中单击鼠标右键粘贴):

sudo passwd root

会提示输入密码,然后确认输入密码(输入时密码不可见)。

如何在树莓派上搭建私有云存储

输入如下命令就可切换到root用户:

su

我们先解除树莓派对root用户直接登陆的限制,编辑sshd_config文件:

sudo nano /etc/ssh/sshd_config

按Ctrl+W搜索PermitRootLogin,删除前面的#并把without-password改为yes:

PermitRootLogin yes

按Ctrl+O保存文件,Ctrl + X退出编辑然后重启树莓派:

reboot

安装Apache+PHP

使用root用户登录,先更新一下安装源:

sudo apt-get update

安装apache2和PHP:

sudo apt-get install apache2 php7.0 php7.0-curl php7.0-mbstring php7.0-gd

这时访问树莓派的IP就可以看到apache2的默认页了。

挂载硬盘

树莓派挂载NTFS硬盘默认是只读文件系统,我们可以通过其它工具实现,安装ntfs-3g:

sudo apt-get install ntfs-3g
modprobe fuse

接下来我们创建挂载点,我选择的挂载点在/media/pi/mo文件夹:

sudo mkdir /media/pi/mo

查看系统当前挂载的硬盘:

fdisk -l

我们会看到最下面有如下信息:

Device         Boot Start      End  Sectors  Size Id Type
/dev/mmcblk0p1       8192    93236    85045 41.5M  c W95 FAT32 (LBA)
/dev/mmcblk0p2      94208 62521343 62427136 29.8G 83 Linux

Disk /dev/sda: 464.8 GiB, 3899024998 bytes, 937766584 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xa7cf32d1

Device     Boot Start       End   Sectors   Size  Id  Type
/dev/sda1        2048 334438655 937766584 464.8G  7 HPFS/NTFS/exFAT

其中/dev/sda1为这块硬盘的分区信息。下面我们就以Apache的默认用户www-data来挂载硬盘,输入如下命令来查看用户身份:

sudo -u www-data id

显示信息如下:

uid=33(www-data) gid=33(www-data) groups=33(www-data)

然后让硬盘能够自动挂载,编辑/etc/fstab:

sudo nano /etc/fstab

将如下内容添加到文件最后一行:

/dev/sda1 /media/pi/mo ntfs uid=33,gid=33,noexec,umask=007 0 0

这里uid和gid为用户和组,也就是上面我们查看到的信息;umask表示拒绝的权限,其中第一个数字为0。表示不拒绝任何权限,即可读、写、执行,第二、三个数字分别代表用户组和其他用户。按Ctrl+O保存文件,然后Ctrl + X退出编辑,重启后生效:

reboot

配置可道云

下载并解压可道云

cd /media/pi/mo/kod
wget http://static.kodcloud.com/update/download/kodexplorer4.25.zip
unzip kodexplorer4.25.zip
chmod -Rf 777 ./*

配置apache:

nano /etc/apache2/sites-available/kod.conf

粘贴如下内容:

注:这里将kod.wumo.com替换成你自己的用来访问云盘的域名。重启apache2:

sudo service apache2 restart

解析域名

我们先在路由器上配置端口转发,进入路由器管理后台,找到端口转发/端口映射这项,以我手里这台刷了老毛子的斐讯为例:服务名称随意;端口范围我这里填58080(图上是80,别管它),这个端口是可以任意的,它是我们通过域名访问树莓派上的web服务时使用的端口,你可以用其他端口但尽量避开80、443、8080这些端口,因为运营商会封禁这些web服务默认端口;内网IP:树莓派的内网IP;本地端口:80;这样我们就把对路由器58080端口的访问转移到树莓派的80端口了。这里我们也为aria2配置一条转发规则:将路由器的6800端口转发到树莓派的6800端口。

如何在树莓派上搭建私有云存储

家庭宽带IP会经常改变,这里就需要动态域名解析。动态域名的功能大多数路由器都有,如果你不会的话可以参考这篇文章用WinScp将softether(提取码:uqgx)上传到树莓派根目录并解压:

tar -zxvf softether-vpnserver-v4.25-9656-rtm-2018.01.15-linux-arm_eabi-32bit.tar.gz
cd /vpnserver
./.install.sh
./vpnserver start–Simplified Chinese

然后设置密码:

./vpncmd

输入1,后按三次回车,然后输入:

ServerPasswordSet

按照提示设置密码,然后下载并安装Windows端管理工具(在上面的网盘链接里),点击“新设置”添加连接文件。主机名填树莓派内网IP,端口:443,密码:你刚才设置的密码。

如何在树莓派上搭建私有云存储

确定后选择“远程访问vpnserver”,然后一路确定,你就能看到分配到的动态解析的域名了,

如何在树莓派上搭建私有云存储

记下这个域名,我的域名是阿里云注册的,进入阿里云控制台>我的资源>云解析DNS>你的域名,选择添加解析,

如何在树莓派上搭建私有云存储

记录类型:CNAME;主机记录:配置apache时填写的域名(上文中我填的是kod);记录值:动态DNS分配的域名。

至此我们的私有云就搭建完成了!用浏览器访问http://你的域名:转发到树莓派的端口号就可以看到我们搭建的云盘了。效果如下:

如何在树莓派上搭建私有云存储如何在树莓派上搭建私有云存储如何在树莓派上搭建私有云存储

本文就是用可道云内置的MD编辑器写的。

配置Aria2

这里aria2的配置参考这篇文章。

安装Aria2

sudo apt-get install aria2

配置Aria2在/etc目录下创建aria2目录用来存放配置文件:

sudo mkdir /etc/aria2

创建空白的aria2.session文件:

sudo touch /etc/aria2/aria2.session

创建配置文件:

sudo nano /etc/aria2/aria2.conf

在该文件中输入以下内容:

# 文件的保存路径(可使用绝对路径或相对路径), 默认: 当前启动位置
dir=/media/pi/mo/kod/data/User/admin/home/download
# 启用磁盘缓存, 0为禁用缓存, 需1.16以上版本, 默认:16M
disk-cache=32M
# 文件预分配方式, 能有效降低磁盘碎片, 默认:prealloc
# falloc和trunc则需要文件系统和内核支持
# NTFS建议使用falloc, EXT3/4建议trunc, MAC 下需要注释此项
file-allocation=none
# 断点续传
continue=true
## 下载连接相关 ##
# 最大同时下载任务数, 运行时可修改, 默认:5
max-concurrent-downloads=10
# 同一服务器连接数, 添加时可指定, 默认:1
max-connection-per-server=5
# 最小文件分片大小, 添加时可指定, 取值范围1M -1024M, 默认:20M
# 假定size=10M, 文件为20MiB 则使用两个来源下载; 文件为15MiB 则使用一个来源下载
min-split-size=10M
# 单个任务最大线程数, 添加时可指定, 默认:5
split=10
# 整体下载速度限制, 运行时可修改, 默认:0
#max-overall-download-limit=0
# 单个任务下载速度限制, 默认:0
#max-download-limit=0
# 整体上传速度限制, 运行时可修改, 默认:0
#max-overall-upload-limit=0
# 单个任务上传速度限制, 默认:0
#max-upload-limit=0
# 禁用IPv6, 默认:false
disable-ipv6=true
## 进度保存相关 ##
# 定时保存会话, 0为退出时才保存, 需1.16.1以上版本, 默认:0
#save-session-interval=60
## RPC相关设置 ##
# 启用RPC, 默认:false
enable-rpc=true
# 允许所有来源, 默认:false
rpc-allow-origin-all=true
# 允许非外部访问, 默认:false
rpc-listen-all=true
# 事件轮询方式, 取值:[epoll, kqueue, port, poll, select], 不同系统默认值不同
#event-poll=select
# RPC监听端口, 端口被占用时可以修改, 默认:6800
#rpc-listen-port=6800
# 设置的RPC授权令牌, v1.18.4新增功能, 取代 --rpc-user 和 --rpc-passwd 选项
rpc-secret=123456789
# 设置的RPC访问用户名, 此选项新版已废弃, 建议改用 --rpc-secret 选项
#rpc-user=

注1:rpc-secret=123456789,改为你自己的密码;

注2:aria2默认下载目录笔者放在了可道云管理员文件目录下的download文件夹,下载完成后打开可道云即可看到。

启动aria2

这里我们用www-data用户来运行aria2,先赋予配置目录可执行权限:

sudo chown -R www-data:www-data /etc/aria2

以www-data用户运行aria2:

sudo -u www-data aria2c --conf-path=/etc/aria2/aria2.conf

如果没有提示任何错误信息,那就按Ctrl+C停止上面的语句,以Daemon的形式,转为后台运行:

sudo -u www-data aria2c --conf-path=/etc/aria2/aria2.conf -D

做成系统服务:

sudo nano /etc/init.d/aria2c

粘贴以下内容:

#!/bin/sh
### BEGIN INIT INFO
# Provides:          aria2
# Required-Start:    $remote_fs $network
# Required-Stop:     $remote_fs $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Aria2 Downloader
### END INIT INFO  
case "$1" in
start)
    echo  "Starting aria2c ..."
    sudo -u www-data aria2c --conf-path=/etc/aria2/aria2.conf -D
;;
stop)
    echo  "Shutting down aria2c ..."
    killall aria2c
;;
restart)
     killall aria2c
    sleep 3
    sudo -u www-data aria2c --conf-path=/etc/aria2/aria2.conf -D
;;
esac
exit

然后设置这个文件的权限:

sudo chmod 755 /etc/init.d/aria2c

测试服务是否可以启动:

sudo service aria2c start

添加aria2c服务自动运行:

sudo update-rc.d aria2c defaults

安装aria的web管理界面这里我们选择aria2-NG作为web管理界面创建目录:

mkdir /var/www/html/aria2

下载并解压aria2-NG:

cd /var/www/html/aria2 && wget https://github.com/mayswind/AriaNg/releases/download/0.3.0/aria-ng-0.3.0.zip
unzip aria-ng-0.3.0.zip

配置apache:

nano /etc/apache2/sites-available/aria2.conf

输入以下内容:

注:和上文一样把aria2.wumo.com替换成你用来访问aria2管理界面的域名。

ln -s /etc/apache2/sites-available/aria2.conf /etc/apache2/sites-enabled/aria2.conf

重启apache2:

sudo service apache2 restart

然后去阿里云把你用来访问aria2管理界面的域名的CNAME记录解析到动态域名上。用浏览器输入http://用来访问aria2管理界面的域名:外网端口(上文中我用的是58080)访问你的aria2。这里会显示认证错误:

如何在树莓派上搭建私有云存储

到AriaNG设置>RPC>Aria2RPC密钥输入上文你设置的密码,然后重新加载页面:

如何在树莓派上搭建私有云存储

这里就会显示已连接了。

如何在树莓派上搭建私有云存储

这样我们就大功告成了~