使用树莓派部署个人网盘

效果展示



准备工作

硬件:树莓派3B+、SD卡、SD卡读卡器、网线

软件:所有需要的软件点击此处下载

提取码: hv1b

(链接失效后可在我的公众号mddxz1995后台回复个人网盘获取最新链接)。

weixin.qq.com/r/ZygXD4n (二维码自动识别)

其他环境:公网IP

(若只作为局域网访问则不需要公网IP。公网IP是为了让我们的网盘可以通过外网进行访问,此处以一台阿里云作为代理服务端来演示)

搭建方案

  1. 使用开源应用nextcloud在树莓派3B+搭建网盘(也支持其他树莓派型号)实现文件的存储。优点是是支持Android、IOS设备客户端和web端访问,日常使用比较方便。
  2. 使用开源应用frp实现内网穿透的反向代理,具体是在一台有公网IP的设备上运行frp服务端,在客户端(这里指树莓派)上运行客户端,外网访问时通过服务端作为代理访问树莓派。优点是支持 tcp, udp 协议,适配了 http 和 https 应用协议,也就是可以更好的通过远程访问我们的网盘内容。

安装镜像

Next cloud提供了树莓派专用的系统镜像,我们可以从官网下载安装,同时也可以在我提供的文件中找到镜像直接安装使用。

  1. 将下载完成的镜像解压,解压后效果如图所示。(解压软件在软件及教程解压缩软件中提供)

  1. 将SD读卡器插入电脑,打开Win32DiskImager镜像安装软件,(在软件及教程镜像写入工具中提供) ,点击此按钮选择上一步解压出来的文件。


  1. 在设备栏选择SD卡,我这里选择H盘,选择完效果如图所示。


  1. 点击下方写入,然后等待写入完成。


  1. 等待进度条完成后,会提示写入成功。此处需要注意若电脑提示要格式化磁盘一定不要格式化。
  2. 此时SD卡被分成两个盘。为了稍后使用SSH远程登录树莓派控制台,在资源管理器中进入SD卡boot盘,右键新建/文本文档,新建一个文件名为SSH的空文档,同时删除掉文件后缀名,效果如图所示。


  1. 将SD卡插入树莓派等待启动,上电前我们将树莓派通过网线接在路由器的lan口。
  2. 等待约十分钟左右,这个时间刚好可以在刺激战场中玩一把团队竞技。
  3. 打开路由器的后台,查看树莓派的IP。


  1. 打开shell工具,点击文件/新建,协议选择SSH,主机填写树莓派IP地址,端口选择22,然后点击连接(工具在软件及教程Xshell 、Xftp 6中提供)。


  1. 输入默认账号密码,登入控制台,登陆成功后界面如下,也可以根据提示升级新版的nextcloud。

账号:pi

密码:raspberry


  1. 打开浏览器,输入树莓派IP,此时可以看到next cloud已经开始运行,这里务必保存好NextCloudPi和NextCloud的账号密码,然后点击下方的Activate。


  1. 在弹窗中输入NextCloudPi(也就是第一个)的账号密码,然后点击登录。
  2. 如果安装了U盘,第一次运行会提示格式化U盘,也可以选择跳过。
  3. External access栏选择No,然后跳到最后一步就可以开始使用了。
  4. 在浏览器地址栏输入树莓派IP,就进入了登陆界面,使用第二个密码登录。
  5. 如果看到如下界面就说明已经初始化成功了,此时网盘已经可以在局域网内正常使用,可在apple store和安卓应用市场搜索nextcloud下载对应终端的APP。


Frp反向代理

Frp是一款开源的反向代理软件,我们通过在阿里服务器上运行frp服务端,在树莓派上运行客户端与服务端进行连接。这样我们可以通过服务端作为代理,转发我们对树莓派的请求,以达到外网访问树莓派的目的。这里我主要参考了《FRP中文文档》《使用frp进行内网穿透》这两篇文档。

服务端配置

  1. 在阿里后台实例/安全组 规则添加入方向端口,比如我这里添加7500/7500、7001/7001、7600/7600三个端口分别用来作为frp的服务端管理界面的访问端口、树莓派SSH连接映射端口和树莓派网盘访问端口,配置界面如图所示。


  1. 打开xshell客户端,进入阿里服务器的控制台。
  2. 执行arch如下指令,查看服务器机器架构,我的服务器是X86_64。

root@iZ2ze68uznd431fxfr63d2Z:~# arch

x86_64

  1. 下载对应的frp软件,因为GitHub国内访问速度过慢,我这里已经将服务端的软件上传至软件及教程frp服务端(X86_64),随后通过ftp客户端传至设备即可,和我设备架构相同的同学可以直接使用我提供的软件,其他架构可在frp官方下载界面下载对应的软件(ftp客户端软件在软件及教程Xshell 、Xftp 6提供)。
  2. 打开ftp软件,连接至服务器控制台,将frp服务端软件拖到服务器Dowoload目录下。


  1. 通过Xshell连接服务器后台,进入frp服务端软件的存放目录,执行如下命令,解压。
cd Download/
sudo tar -zxvf frp_0.32.0_linux_amd64.tar.gz
  1. 执行如下命令,给文件夹改个名,方便使用。
cp -r frp_0.32.0_linux_amd64 frp
  1. 执行如下命令,编辑frp的配置文件。
cd frp
sudo vim frps.ini
  1. 我的服务端配置内容如下:

[common]
bind_port = 7000#与树莓派绑定的端口
dashboard_port = 7500#frp服务端软件运行信息展示端口
token = 12345678#树莓派与服务端的登陆口令
dashboard_user = admin#frp服务端软件运行信息展示的访问账号
dashboard_pwd = admin#frp服务端软件运行信息展示的访问密码
vhost_http_port = 10080#此处没有使用,我也没弄明白
vhost_https_port = 10443#此处没有使用,我也没弄明白

  1. 退出并保存,执行如下指令,运行frp服务端。
./frps -c frps.ini
  1. 此时通过服务器IP:7500就可以看到frp服务端的展示信息,效果如图所示。


  1. 再执行如下指令将其运行在后台。
nohup ./frps -c frps.ini &
  1. 至此,服务端已经配置完成。

客户端配置

  1. 树莓派是armv7架构,将对应的frp软件通过ftp软件拷贝到树莓派的指定目录下。


  1. 进入对应目录,和服务端操作类似,解压、重命名。
cd ~/
tar -zxvf frp_0.32.0_linux_arm.tar.gz
cp -r frp_0.32.0_linux_arm frp
  1. 执行如下指令,编辑客户端配置。
sudo apt-get install vim

[common]
server_addr = x.x.x.x #这里填服务器IP
server_port = 7000 #这里填写服务器配置中的bind_port
token = 12345678 #登录口令
[smb]
type = tcp
local_ip = 127.0.0.1
local_port = 443
remote_port = 7600
[SSH]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

  1. 执行如下指令,运行客户端。
./frpc -c frpc.ini
  1. 输出如下内容,则客户端和服务端绑定成功。

2020/03/21 09:05:14 [I] [service.go:257] [f499bd2db389d748] login to server success, get run id [f499bd2db389d748], server udp port [0]
2020/03/21 09:05:14 [I] [proxy_manager.go:144] [f499bd2db389d748] proxy added: [smb SSH]
2020/03/21 09:05:14 [I] [control.go:179] [f499bd2db389d748] [smb] start proxy success
2020/03/21 09:05:14 [I] [control.go:179] [f499bd2db389d748] [SSH] start proxy success

  1. 此时在浏览器地址栏输入服务器IP:7600即可访问树莓派。


  1. 出现以上弹窗则说明已经成功访问了树莓派,只是由于next cloud的配置,限制了服务器的IP访问,此时,我们进入next cloud的配置文件,将服务器IP添加进去,然后退出保存。效果如图所示。
sudo vim /var/www/nextcloud/config/config.php


  1. 重新运行frp客户端在后台,成功后此时可通过外网进行访问。
nohup ./frpc -c frpc.ini &


特别感谢

感谢next cloud、frp团队开源分享

github.com/fatedier/frp
nextcloud.com/

参考文档

使用frp进行内网穿透

点赞

发表回复

电子邮件地址不会被公开。必填项已用 * 标注