# 前言

编写日期:2021年10月1日
首发日期:2021年10月2日
最后编辑日期:2021年11月14日

# 项目介绍

toutu

搭建一个自己的多功能云盘。
阿里云盘 (opens new window)百度云盘 (opens new window)那样。同时,可以让您快速搭建起公私兼备的网盘系统。 在底层支持不同的云存储平台,用户在实际使用时无须关心物理存储方式。可以运用于,个人用网盘、文件分享系统,亦或是针对大小团体的公有云系统和私密的加用NAS云。

# 实现方案

材料 教程所选 作用 优点 价格
1.网盘程序 (基于Docker)Cloudreve (opens new window) 提供核心服务 ... 0
存储方案 onedrive (opens new window) 实际存储服务器 容量大流量可直走onedrive服务器 0
2.离线下载 (基于Docker)Aria2 (opens new window) 对接网盘离线下载服务 ... 0
3.底层服务 (宝塔管理)Docker (opens new window) 方便快捷且安全的运行上层服务 使用方便,部署快捷,可自动选择适应当前依托硬件的ARM,X86,等等架构。 0
4.内网穿透 (宝塔管理)网云穿 (opens new window) 将网盘映射出去实现非内网访问 有一条1M免费隧道,且配套软件使用方便不支持HTTPS,PASS掉 0
备选内网穿透 (宝塔管理)小蝴蝶内网穿透 (opens new window) 将网盘映射出去实现非内网访问且提供HTTPS支持 由于onedrive存储策略限制必须有一个支持HTTPS的隧道来进行API的回调,这是目前我能找到的最便宜的,不限流且带有https二级域名 5/月
5.反向代理 (宝塔管理)NGINX (opens new window) 获得更丰富的WEB服务的扩展功能 ... 0
6.运维面板 宝塔面板 (opens new window) 提供方便的图形运维界面 对于小白来说真是方便 0
7.操做系统 linux (opens new window) 基础 ...
8.依托硬件 树莓派3B (opens new window)/SD卡/硬盘 基础(4h1g.RAM.百兆网口) 作者手中闲置的一些东西

注意

  • 上述实现方案的核心就是Cloudreve所以其他“材料”可以按照自己的情况更换,可在同类产品中找到替代的,就比如说,树莓派3B+或4B以及其他装有与教程相同的“操作系统”的云服务器同样可以适用于本笔记的教程。
  • 教程所采用的方案是作者认为更适用于大多数“极客玩家”的同时又兼容了实用性,安全性,以及可玩性的最简单的方案。当然,教程是模块化分离的,如果你是“复刻”的玩家我相信完全可以自己从教程中选取自己需要的部分来定制属于自己的网盘

https://gitmind.cn/app/flowchart/4283243383

方案说明

  • 这里采用OneDrive存储策略主要原因相信大家也能明白,这种策略上传于下载流量走的是OneDrive服务器,所以完全不用担心树莓派的读写能力和硬盘读写能力以及内网穿透隧道带宽大小,树莓派在这里只是提供了Cloudreve的网站运行,你可以理解为记录员,记录文件所在的地方并返回给用户,让用户自己去这个地方下载,并不提供文件的存储。也就是说实际下载路径是“OneDrive服务器→用户”(个别在线服务除外,下文会提到),如果网络与OneDrive服务器连接良好正常上传于下载速度都能超过15MB/s,只有在使用Aria2的下载或本地存储策略时才会涉及到树莓派以及硬盘的读写。
  • 另外就是现在(2021年10月10日)微软推出的新版订阅(E5)有效时间为90天,可通过订阅来增加时间。
    而E5可获得25个账户,每个账户基础5TB的OneDrive存储空间,并且在存储接近满时可扩容至25TB,及25×25TB=625TB存储容量,且只要账号够多可无限叠加。详参《无限白嫖Onedrive

# 测试说明

科普

首先大家需要了解一下网速相关的知识,这是我总结出比较易懂的内容。

  1. 家用宽带以及路由所谓的“千兆”“百兆”的单位是Mbps(或Mb/s)并非MB/s
  2. 也就是说Mbps=Mb/s≠MB/s,1MB/s=8Mbps=8Mb/s
  3. 那么所谓的“千兆”实际传输速度峰值也就是1000Mbps=1000÷8=125MB/s,减去损耗在100MB/s左右
  4. 内网环境指与“Cloudreve所在服务器”处于同一局域网下。外网则相反。

所以,请注意传输时所在网络环境和显示的速度单位。


然后就是Cloudreve的内外网文件基本传输路径,经测试大概如下

  • 上传路径:用户→Cloudreve所在服务器→存储策略所在服务
  • 下载路径:存储策略服务器→用户(或 存储策略服务器→Cloudreve所在服务器→用户 可以按需求设置)

无论是上传或下载,路径中的每一环都遵循“木桶效应”无论是网速原因还是硬盘读写原因,设备读写性能等导致某一环出现瓶颈,最大传输速度将由每环中最慢传输速度而决定!!!(这只是大概路径,当然如无公网情况下,涉及“内网穿透”等等中间隧道服务器时,也需要考虑中间隧道服务器的上下行速度)

# 普通上传

传输路径是“用户→OneDrive服务器”
上传速度峰值能达到20MB/s左右,平均稳定在10Mb/s左右,960MB上传完毕在1分30秒左右。

shangchuan3-onedrive

2021年10月2日-过期封存

过期原因:我当时可能开了梯子

后来我再次测试,发现使用“OneDrive存储策略”时,上传无论内外网速度都达到了10MB/s以上,与我第一次测试结果不同,这个就很玄学了...
我又另外测试了“本地存储策略”发现与第一次测试结果大致相同,但我清晰的记得第一次测试的确用的“OneDrive存储策略”。不管其他的,如果这样的话那肯定传输路径是“用户→OneDrive服务器”,不然按照内网穿透的1Mbps根本不可能达到10MB/s的速度。
下方是我第一次测试写的内容就当作参考吧。

参考:

# 内网环境

测试内网环境是千兆路由,通过WIFI传输,不算介质线材损耗应该差不多就是这个速度内网下载速度取决于你内网传输方式或路由的传输速度
上传速度峰值能达到20MB/s左右,平均稳定在10Mb/s左右,960MB上传完毕在1分30秒左右。

shangchuan3-onedrive

# 外网环境

这里我就大概试了一下,这里的传输路径是“用户→内网穿透服务器(1MB/s)→Cloudreve所在服务器”,这里也可以很好的体现木桶效应,在1MB/s带宽的短板下速度保持在805KB/s÷1024≈0.79MB/s左右的上传速度。(至于内网穿透速度问题在教程中有详细说明)
上传速度峰值能达到0.79MB/s左右,平均稳定在10Mb/s左右,60MB上传完毕在1分钟左右。

shangchuan4-onedrive

注意

  1. 这里使用的是OneDrive策略,流量走OneDrive的服务器(存储策略服务器→用户)所以下载速度与内外网无关!

  2. 内网有时候在上传超过1G文件完毕时肯能会出现本来显示“已完成”然后突然变成“无法完成文件上传”的情况,上传这里使用的是OneDrive策略,经论坛查询该情况暂时没有大量用户反馈,仅有的相关帖子只是说“可能存在文件上传不完全情况,建议重新上传”。这里我个人多次测试是没有什么问题上传的文件完全且可以正常使用和下载,我猜测和后台的“站点URL”设置有关,如果用不是后台设置URL进入时都可能会出现该情况(应该是OneDrive回调问题),可能是因为回调问题造成,虽然不影响,但我也建议上传后如果出现这种情况应先检查文件大小和完整性,本地存储策略没有该问题至于其他策略暂时没有测试。

# 普通下载

  • # 使用浏览器下载

    速度大概就在12MB/s左右,峰值能达到18MB/s左右

    liulanqixiazai-onedrive

2021年10月2日-过期封存

过期原因:这里使用了外链下载,导致速度慢,具体原因可参照下方在线功能里的“获取外链”

  • # 使用迅雷下载

    这里我是迅雷普通会员,我起初觉得应该要比浏览器快些但不知道为什么一直在2MB/s左右,峰值也差不多能达到8MB/s

    xunleixiazai1-onedrive

    xunleixiazai4-onedrive

    xunleixiazai2-onedrive

    xunleixiazai3-onedrive

注意

这里使用的是OneDrive策略,流量走OneDrive的服务器(存储策略服务器→用户)所以下载速度与内外网无关!

# 离线下载

离线下载是先将文件下载到“Cloudreve所在服务器”然后在转存至“存储策略服务器”所以需要“Cloudreve所在服务器”具有一定的存户能力,另外就是磁力下载这个东西我测试就非常的玄学,有时可能会卡死有时速度又能飞起,总之就很玄学。如果有对Aria2下载优化有了解的同学,还烦请联系我讨论优化一番。这里我就不在测试。

# WEBDAV上传

  • # 内网环境

    测试内网环境是千兆路由,通过WIFI传输,不算介质线材损耗应该差不多就是这个速度内网下载速度取决于你内网传输方式或路由的传输速度
    这里我个人不太清楚为什么千兆内网可以跑出300+MB/s的速度(知道具体原因的可以给作者留言,做出更改),但可以看出会在最后卡住一段时间,实际280MB用时1分钟左右,总花费时间也符合正常传输速度。

    shangchuan-onedrive

    3GB+文件上传测试
    这里的平均速度大致同上峰值也在300+MB/s的速度,最后一样会卡在那,总计耗时15分钟左右上传完毕。

    shangchuan-1onedrive

    注意

    这里我在测试的时候发现了一个问题,就是如果你在最后卡在“0字节/秒”关闭或退出上传,那么在Cloudreve里文件将会显示0字节无法正常播放或查看下载,但存储空间会增加,且删除后存储空间也不会减少。我目前也不知道这是不是BUG。

  • # 外网环境

    这里我就大概试了一下,这里的传输路径是“用户→内网穿透服务器(1MB/s)→Cloudreve所在服务器→存储策略所在服务”,这里也可以很好的体现木桶效应,在1MB/s带宽的短板下速度保持在355KB/s÷1024≈0.35MB/s左右的上传速度。(至于内网穿透速度问题在教程中有详细说明)

    shangchuan-1onedrive

# WEBDAV下载

这里我就不过多测试了大家看一下速度就可以了,峰值在15MB/s左右

xiazaiwebdav

注意

这里使用的是OneDrive策略,流量走OneDrive的服务器(存储策略服务器→用户)所以下载速度与内外网无关!但上传服务依赖于WEBDAV所以,流量走(用户→Cloudreve所在服务器→OneDrive服务器),会有“木桶效应”

# 在线功能

具体详见Cloudreve的功能介绍,但是在这里需要说明这几个功能

  1. “在线解压”功能需要“Cloudreve所在服务器”有一定的存储空间,因为“在线解压”是先将带解压的文件下载到“Cloudreve所在服务器”然后解压后上传到“存储策略所在服务器”最后清除本地的文件以及解压文件,就比如说在OneDrive的存储策略下用户解压一个4G的ZIP文件,然后“Cloudreve服务器”会先将该ZIP文件从OneDrive下载到“Cloudreve所在服务器”然后解压,假如说该文件解压后为4.5G,那么在这个过程中将产生4G+4.5G的临时文件,如果“Cloudreve所在服务器”存储空间不足可能会引发不必要的麻烦。可以通过Cloudreve设置在线解压文件的大小或增加“Cloudreve所在服务器”的存储空间。
  2. “获取外链”功能,这里获取的地址的传输路径“存储策略服务器→Cloudreve所在服务器→用户”,而并非存储策略服务器直接到用户的!!!所以下载速度慢,可能就是“木桶效应”。

# 树莓派功耗

测试是从21号开始的,之前是测得其他的东西,总度数请忽略
10天耗电0.02×10=0.2度电。大家可以根据自己所在地区估算一下电费,这里我就不多说了,总之是肉眼可见的省电。

gonghao1

gonghao2

# 在线体验

作者的项目成品 链接
树莓云(跳转) pi.chizg.cn (opens new window)
树莓云 pi.chizg.cn (opens new window)
树莓云在线图片 https://pi.chizg.cn/s/QKfZ (opens new window)
树莓云在线视频 https://pi.chizg.cn/s/7rIx (opens new window)
树莓云在线TXT https://pi.chizg.cn/s/d2Hr (opens new window)

# 教程说明

教程将采用模块化的编写,不同章节与不同标题下的教程分类与步骤完全独立,可按照章节和标题寻找你需要的内容。
同时教程包含部分工具的用法也可以进行参考和使用