使用Zpan搭建低配版云速云盘【开发者专属集市】

举报
福州司马懿 发表于 2022/12/03 23:03:01 2022/12/03
【摘要】 AppBazaar访问个人开发者专属集市AppBazaar官网:https://console.huaweicloud.com/appbazaar/home?region=cn-north-4本篇,我们要制作的是“使用Zpan搭建低配版云速云盘” 背景市面上的免费网盘已经有很多了,比如百度网盘、阿里云盘、WPS云盘、OneDrive、GoogleDrive…但是免费的东西反而是最贵的,要么...

AppBazaar

访问个人开发者专属集市AppBazaar官网:
https://console.huaweicloud.com/appbazaar/home?region=cn-north-4

图片.png

本篇,我们要制作的是“使用Zpan搭建低配版云速云盘”

背景

市面上的免费网盘已经有很多了,比如百度网盘、阿里云盘、WPS云盘、OneDrive、GoogleDrive…但是免费的东西反而是最贵的,要么有限速,要么就是免费容量太小,更有甚者还有数据被泄露、封禁的风险。重要的隐私数据,还是放在自己这里比较放心。本文就介绍一个不限速的低成本个人网盘——ZPan,相较于老牌的私有网盘OwnCloud等,Zpan有一个独特的优势:不限速

图片.png

原理

目前ZPan支持所有兼容S3协议的云存储平台,包括阿里云OSS 、腾讯云COS 、七牛云Kodo 、Ucloud US3(暂不支持自动设置CORS) 、华为云OBS 、网易云NOS(暂不支持自动设置CORS) 、亚马逊S3 、MinIO等,也就是说你可以将数据存储在大厂那里。

ZPan本质上是一个URL签名服务器+可视化的文件浏览器,采用直链的方式进行上传下载,所以为了保证上传下载的安全性,客户端用来上传下载的URL均需要服务端进行签名。支持文件及文件夹分享(未登录可访问),并且完全不受服务器带宽限制,你本地带宽有多大,就能跑多快。

URL签名

原理:用户登录后向服务器提供用户认证信息(如账户和密码),服务器认证完后给客户端返回一个Token令牌,当用户再次获取信息时,带上此令牌,如果令牌正确,则返回数据。对于获取Token信息后,访问相关接口,客户端请求的url需要带上如下参数:

  1. 时间戳:timestamp
  2. Token令牌:token
    然后对时间戳和token拼接排序,用私钥进行非对称加密生成sign签名,连同前面的一起发给服务端。服务端通过客户端的公钥来解密,从而来验证数据来源的真实性。

我用时序图画了个大致流程,以帮助理解
图片.png

直链与外链的区别

  • 直链是文件在网盘中的HTTP地址,可以直接外部下载,不用进入资源分享页面,直接得到文件的URL地址,可以实现很多功能,例如音乐,视频,应用等文件直接外部发布,下载,播放。
  • 外链是网盘资源分享之后得到的一个资源分享地址,要进入这个外链地址才能下载资源。

“直链”与“外链”的整个流程图如下,其中直链流程用绿色箭头表示,外链用黑色箭头表示。可以看到外链明显比直链多了好几个环节

图片.png

特色

  • 完全不受服务器带宽限制
  • 支持所有兼容S3协议的云存储
  • 支持文件及文件夹管理
  • 支持文件及文件夹分享(未登录可访问)
  • 支持文档预览及音视频播放
  • 支持多用户存储空间控制支持多语言

选择对比

百度等网盘的数据流动为存储->服务器->客户端,下载和下载速度的瓶颈是服务器的带宽,而国内的带宽费又往往比较贵,以华为云为例,5M 带宽就要 1100+ 一年,5M 带宽的理论下载速度约为 600Kb/s,成本高,速度还慢。

对比维度 百度云 阿里云 OneDrive OwnCLoud ZPan(自行搭建) 云速云盘
每年价格(按1T容量计算) 免费/360(超级会员) 0/388(超级会员) 398 907 907 6144
速度 几十kb/s(免费)/不限速(超级会员) 不限速 不稳定 5M 不限速 不限速
用户数 1 1 1 不限 不限 8
其他 隐私数据可能被泄露、屏蔽 隐私数据可能被泄露、屏蔽 网络不稳定 生态丰富,有客户端 只能网页访问 企业网盘,功能丰富

通过上面表格可以看出,自检ZPan是当前最优的方案

方案介绍

项目名称:Zpan
技术选型特点:对象存储(OBS)
开发语言:无
数据库:无
部署服务器操作系统:Ubuntu 20.04 Server 64bit
技术方案:无

ubuntu server和centos一样,都是不带UI界面的linux服务器。用命令行的好处是,能省下一笔UI界面的开销,相同配置下,系统占用的资源更少,能腾给应用较大的空间

ZPan的开源地址为:https://github.com/saltbo/zpan

在国内访问很慢,要多刷几次,或者装个插件(→_→)

图片.png

购买AppBazaar下的ZPan

因为双十一购物节,所有商品均是免费,因此这里直接0元购买即可

图片.png

图片.png

订单支付成功后,前往“买家中心”就能看到我们刚刚购买的订单了

图片.png

购买OBS(不买则按实际计费)

首先,访问华为云官网:https://www.huaweicloud.com/

产品 —> 存储 —> 对象存服务 OBS

图片.png

或者直接访问对象存储服务OBS官网:https://www.huaweicloud.com/product/obs.html

图片.png

点击“立即购买”按钮,可以开始购买ECS包月、包年套餐

  • 区域:华北-北京四
  • 资源包类型:标准存储单AZ包
  • 规格:40GB
  • 购买时长:1个月

图片.png

注意:

  1. OBS、桶,还有ECS要选在同一个区域,这样可以节省流量费
  2. 我这里做实验,没多少数据,因此不购买,按实际计费即可**

OBS的官网帮助文档为:https://support.huaweicloud.com/obs/index.html

里面不仅有文字版的说明,还有很详尽的视频教程

图片.png

OBS的计费说明如下图

图片.png

创建桶(创建免费,存储收费)

创建桶的操作是免费的,但往桶里面存储数据却是收费的。如果能预估出使用时长和数据量,可以通过购买相应的包年,或者包月的OBS套餐来获得优惠

下面开始创建桶

  • 区域:华北-北京四
  • 桶名词:zpan-my(不能与已有桶名称重复)
  • 数据冗余存储策略:单AZ存储(启用后不支持修改)
  • 默认存储类别:低频访问存储(适合高可靠,低成本,较少访问场景)
  • 桶策略:私有
  • 默认加密:不勾选
  • 归档数据直读:关闭

图片.png

创建成功后,回返回桶列表页,并显示该桶

图片.png

点击“桶名称”可以进入详情页,查看桶中信息

图片.png

在左侧面板,切换成“总览”,Endpoint的地址为:obs.cn-north-4.myhuaweicloud.com

图片.png

注意:

  1. OBS、桶,还有ECS要选在同一个区域,这样可以节省流量费
  2. 记住你的桶名称(后面有用):zpan-my
  3. 记住你的Endpoint地址(后面有用):obs.cn-north-4.myhuaweicloud.com

购买ECS

进入华为云官网:https://www.huaweicloud.com/

产品 —> 计算 —> 弹性云服务器ECS

图片.png

或者直接访问ECS官网:https://www.huaweicloud.com/product/ecs.html

图片.png

点击“立即购买”

图片.png

  • 区域:华北-北京四
  • 计费模式:按需计费(我这里做实验所以选按需,实际的话建议包年)
  • 规格:t6.small.1(最便宜的CPU)
  • 镜像:公共镜像 Ubuntu 20.04 server 64.bit
  • 安全防护:不使用安全防护
  • 系统盘:高IO 40G(选最便宜的)

图片.png

图片.png

  • 网络:vpc-default
  • 安全组:Sys-WebServer
  • 弹性公网IP:现在购买
  • 线路:静态BGP
  • 公网带宽:按流量计费
  • 带宽大小:1
  • 释放行为:随实例释放

图片.png

这里需要“配置安全组规则”,在Sys-WebServer的入方向,放行8222端口(这是访问ZPan的端口)

点击 Sys-WebServer 的名字

图片.png

切换到“入方向规则”,然后“添加规则”

图片.png

优先级填1,端口填8222,然后点击“确定”

图片.png

切换回“弹性云服务器-控制台”,点击刷新按钮,即可以看到该端口

图片.png

然后点击下一步,之后输入ECS密码即可

图片.png

最后确认配置,勾选协议即可

图片.png

图片.png

返回云服务器列表,可以看到服务器已经在运行中了

图片.png

注意:OBS、桶,还有ECS要选在同一个区域,这样可以节省流量费

安装ZPan

点击弹性云服务器名,进入详情页

图片.png

点击右上角的“远程登录”,然后选择从“CloudShell”登录

图片.png

输入密码后,点击连接即可

图片.png

图片.png

之后输入命令,安装并启动服务

curl -sSLf https://dl.saltbo.cn/install.sh | sh -s zpan
systemctl start zpan

CloudShell支持复制命令后,右键直接粘贴进控制台,非常方便

图片.png

从打印结果可以看出,该命令指向github,无法访问。

图片.png

上面的命令也可能下载很慢然后中断,如果有问题,就重试一下 (我这里反复试了3次,终于下载成功了)

如下图,最终下载并安装成功了 (正常情况下,只要2分30秒左右,就能安装成功了。如果太慢,使用 Ctrl+C 中断,然后再试一次)

图片.png

  • 启动zpan:systemctl start zpan
  • 查看zpan运行状态:systemctl status zpan

图片.png

访问并配置ZPan

ECS服务器的地址,可以在ECS列表中查到。例如,我这里的地址就是:122.9.0.120

图片.png

打开网页,输入http://ECS公网IP:8222。例如,我这里就是 http://122.9.0.120:8222

  • 数据库类型:为了压缩成本,此处先选择 Sqlite3 作为数据库(默认也是sqlite3),后续如果有瓶颈可以自行在配置中切换为其他更强大的数据库
  • DSN:Data Source Name的简称,意思是“数据源名称”,我们这里输入zpan.db(默认也是zpan.db)

图片.png

如果配mysql,DSN默认就是user:pass@tcp(127.0.0.1:3306)/zpan?charset=utf8mb4&parseTime=True&loc=Local

图片.png

点击下一步,输入账号密码(默认账号是:admin@zpan.space)

图片.png

然后点击开始安装(瞬间就安装成功了)

图片.png

点击“去登录按钮”,输入账号密码,登录成功

图片.png

在用户管理这里,可以看到默认只有一个管理员,并且是“已激活”状态

图片.png

这里可以添加新用户

图片.png

切换到“存储管理”,点击“创建存储”按钮。可以看到需要AK/SK,下面来获取一下它们两

图片.png

获取访问密钥(AK/SK)

通过 API 访问华为云需要提供AccessKey 和 SecretKey,简称 AK/SK

ZPan首次登录,进行配置时,也需要AK/SK。这里先行获取一下

注意:AK\SK 相当于你的账号密码,请一定妥善保管!!!

官方文档

华为云官方有提供获取访问密钥(AK/SK)的说明文档,地址如下
https://support.huaweicloud.com/productdesc-obs/obs_03_0208.html

图片.png

OBS支持通过AK/SK认证方式进行认证鉴权,即使用Access Key ID(AK)/Secret Access Key(SK)加密的方法来验证某个请求发送者身份。当您使用OBS提供的API进行二次开发并通过AK/SK认证方式完成认证鉴权时,需要按照OBS定义的签名算法来计算签名并添加到请求中。

OBS支持使用永久AK/SK鉴权,也支持通过临时AK/SK和securitytoken进行认证鉴权。

操作场景

通过控制台访问OBS,您首先要使用您的华为云帐号或IAM用户登录控制台,在这种场景下OBS通过您的帐号或IAM用户信息进行鉴权。

而在使用其他方式访问OBS时,例如工具(OBS Browser+、obsutil、obsfs)、SDK或API,不需要您提供华为云帐号或IAM用户登录信息,取而代之的是通过帐号或IAM用户的访问密钥(AK/SK)来进行鉴权。所以您在使用这些方式访问OBS时,需要提前获取访问密钥(AK/SK)

获取永久访问密钥(AK/SK)

由于时间限制,这里仅介绍获取永久访问密钥(AK/SK),华为云官网文档地址如下:
https://support.huaweicloud.com/qs-obs/obs_qs_0005.html

图片.png

操作步骤

  1. 登录控制台
    有两种方法:
    (1)进入华为云官网https://www.huaweicloud.com/,在右上角点击“控制台”
    图片.png
    (2)直接输入控制台URL地址:https://console.huaweicloud.com
    图片.png

  2. 鼠标指向界面右上角的登录用户名,在下拉列表中单击“我的凭证”
    图片.png

  3. 在左侧导航栏单击“访问密钥”
    图片.png

  4. 单击“新增访问密钥”,进入“新增访问密钥”页面
    图片.png
    注意:如果访问密钥泄露,会带来数据泄露风险,且每个访问密钥仅能下载一次,为了帐号安全性,建议您定期更换并妥善保存访问密钥

  5. 通过邮箱或者手机进行验证,输入对应的验证码。
    图片.png

  6. 创建成功并下载密钥(credentials.csv)
    图片.png
    图片.png

credentials.csv中保存了(记住这几个值,后面有用)

  1. User Name
  2. Access Key Id
  3. Secret Access Key

图片.png

创建ZPan存储

接上面在ZPan页面,登录进去之后,我这里是 http://122.9.0.120:8222/admin/storages

图片.png

点击右上角的“创建存储”按钮

图片.png

类型:网盘
名称:MyZpan(仅允许使用字母数字和中线-)
存储桶:zpan-my(你创建桶时起的名字)
接入点:obs.cn-north-4.myhuaweicloud.com
AccessKey:(略,在上一章节下载的CSV里)
SecretKey:(略,在上一章节下载的CSV里)

图片.png

确定后,在存储列表可以看到刚刚创建的存储状态为:正常
图片.png

至此就已经完成了配置,再次在网址栏输入 http://ECS公网IP:8222 即可访问专属于你的个人网盘

使用Zpan

直接访问刚刚的ZPan地址:http://ECS公网IP:8222。例如,我这里就是 http://122.9.0.120:8222

回车后,回打开ZPan的页面,它会自动在URL末尾补上 “前面创建存储时设置的名称”

图片.png

这里我们上传一个刚刚安装ZPan的shell脚本

图片.png

上传后,叉掉对话框,可以看到列表会自动刷新

图片.png

  • 一次也可以选择一个或多个文件一起上传
  • 上面的“新建”按钮用来创建文件夹

图片.png

鼠标移到某一项上,分别是下载,分享和更多按钮

图片.png

点击“下载”按钮,会直接调用浏览器的下载功能,将文件下载到本地

图片.png

分享则可以选择有效期,以及是否使用提取码保护链接(这个做的跟百度网盘一样)

图片.png

  1. 不使用提取码,有效期7天如下
    图片.png
    图片.png
  2. 不使用提取码,有效期永久如下
    图片.png
    图片.png
    图片.png
  3. 使用提取码保护,有效期7天如下(跟百度网盘,简直是一模一样)
    图片.png
    图片.png
    图片.png

释放资源

删除ECS

在ECS的管理控制台中,点击“我的ECS”

图片.png

在ECS列表右侧,展开更多,选择删除

图片.png

勾选释放公网IP,删除云服务器挂载的数据盘

图片.png

然后命令下发成功,ECS的状态会更改为正在删除的状态

图片.png

ECS删除成功后,ECS列表中不存在服务器了

图片.png

删除OBS中的桶

访问OBS官网:https://www.huaweicloud.com/product/obs.html

图片.png

进入“管理控制台”可以看到OBS使用的情况,包括

  1. 总存储量
  2. 平均每桶存储量
  3. 桶数量
  4. 文件数量
  5. 总下载流量
  6. 内网下载流量
  7. 外网下载流量
  8. 等等

图片.png

图片.png

切换到“桶列表”页面,在桶的列表项右侧,点击“删除”

图片.png

提示桶里面不是空的,所以无法正常删除

图片.png

点击“如何删除”,会链接到华为云的帮助文档,地址如下
https://support.huaweicloud.com/usermanual-obs/zh-cn_topic_0045829108.html

图片.png

点击“桶名称”(这里是“zpan-my”)进入详情页。可以看到一个文件夹,这个文件夹,文件夹里面,就是我们刚刚上传的文件了

  • 对象是数据存储的基本单位,在OBS中文件和文件夹都是对象。您可以上传任何类型(文本、图片、视频等)的文件,并在桶中对这些文件进行管理
  • 若需要将对象移动到桶内其他位置,推荐下载使用OBS Browser+图形化管理工具
  • 基于安全合规要求,从浏览器直接访问文件时不能进行在线预览

图片.png

图片.png

这里直接删除整个文件夹即可。删除后,在右上角的“任务中心”可以看到刚刚的操作(刷新或关闭浏览器,会取消当前任务并清除全部记录。 )

图片.png

图片.png

然后回到“桶列表”,删除桶即可

图片.png

它提示:删除后无法恢复,30分钟后,能再次使用该桶名

图片.png

注意:所有的删除操作,都需要短信或者邮箱的验证,才能顺利完成

实验心得

经过本次实验,从文档和华为云的实际部署中,学到了不少知识

  1. ZPan中的一些专业术语,包括直链和外链、ZPan的数据存储方式、以及与当代各种网盘的区别
  2. OBS、桶,还有ECS要选在同一个区域,这样可以节省流量费
  3. 体验了华为CloudShell远程登录ECS的便捷操作
  4. 文档中提供的安装脚本命令curl -sSLf https://dl.saltbo.cn/install.sh | sh -s zpan,实际上是从github下载安装包,由于国内被墙的原因。网络可能不是很稳定,可能无法下载脚本,要重试几次才能成功
  5. 学习到了完整的个人网盘搭建流程,包括ZPan的页面样式与设置方式(ZPan的界面,包括使用方式,简直和现在最流行的百度网盘一模一样,太像了!!!)

总结

最后,我们来梳理一下本次部署ZPan的整个流程

  1. 通过AppBazaar开发者专属集市,购买到“使用Zpan搭建低配版云速云盘”项目的开发文档
  2. 购买OBS(如果长期使用,则要购买套餐,实验可以跳过此项)
  3. 创建桶(创建免费,存储收费)
  4. 购买ECS
  5. 使用华为CloudShell远程登录ECS
  6. 通过脚本下载并安装ZPan
  7. 启动ZPan
  8. 访问自建的ZPan网站,设置数据库类型、账号密码
  9. 获取华为云AK/SK
  10. 在自建的ZPan网站中,创建存储(需要用到桶名、桶的Endpoint地址、AK/SK)
  11. 访问自建的ZPan网站,会自动在URL后补上刚刚创建的存储名
  12. 使用方式与百度网盘,基本一模一样

图片.png

备注:文中使用到的讲解图在附件中

【购物节已开启,个人开发者的专属集市AppBazaar来啦(所有商品购物节期间免费体验)】有奖征文火热进行中:https://bbs.huaweicloud.com/blogs/381337
此外,在(https://bbs.huaweicloud.com/activity/suggestion.html)提出您的宝贵建议,标题以【云驻计划-定向征文】开头,还有机会赢取额外奖励。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。