使用Zpan搭建低配版云速云盘【开发者专属集市】
AppBazaar
访问个人开发者专属集市AppBazaar官网:
https://console.huaweicloud.com/appbazaar/home?region=cn-north-4
本篇,我们要制作的是“使用Zpan搭建低配版云速云盘”
背景
市面上的免费网盘已经有很多了,比如百度网盘、阿里云盘、WPS云盘、OneDrive、GoogleDrive…但是免费的东西反而是最贵的,要么有限速,要么就是免费容量太小,更有甚者还有数据被泄露、封禁的风险。重要的隐私数据,还是放在自己这里比较放心。本文就介绍一个不限速的低成本个人网盘——ZPan,相较于老牌的私有网盘OwnCloud等,Zpan有一个独特的优势:不限速
原理
目前ZPan支持所有兼容S3协议的云存储平台,包括阿里云OSS 、腾讯云COS 、七牛云Kodo 、Ucloud US3(暂不支持自动设置CORS) 、华为云OBS 、网易云NOS(暂不支持自动设置CORS) 、亚马逊S3 、MinIO等,也就是说你可以将数据存储在大厂那里。
ZPan本质上是一个URL签名服务器+可视化的文件浏览器,采用直链的方式进行上传下载,所以为了保证上传下载的安全性,客户端用来上传下载的URL均需要服务端进行签名。支持文件及文件夹分享(未登录可访问),并且完全不受服务器带宽限制,你本地带宽有多大,就能跑多快。
URL签名
原理:用户登录后向服务器提供用户认证信息(如账户和密码),服务器认证完后给客户端返回一个Token令牌,当用户再次获取信息时,带上此令牌,如果令牌正确,则返回数据。对于获取Token信息后,访问相关接口,客户端请求的url需要带上如下参数:
- 时间戳:timestamp
- Token令牌:token
然后对时间戳和token拼接排序,用私钥进行非对称加密生成sign签名,连同前面的一起发给服务端。服务端通过客户端的公钥来解密,从而来验证数据来源的真实性。
我用时序图画了个大致流程,以帮助理解
直链与外链的区别
- 直链是文件在网盘中的HTTP地址,可以直接外部下载,不用进入资源分享页面,直接得到文件的URL地址,可以实现很多功能,例如音乐,视频,应用等文件直接外部发布,下载,播放。
- 外链是网盘资源分享之后得到的一个资源分享地址,要进入这个外链地址才能下载资源。
“直链”与“外链”的整个流程图如下,其中直链流程用绿色箭头表示,外链用黑色箭头表示。可以看到外链明显比直链多了好几个环节
特色
- 完全不受服务器带宽限制
- 支持所有兼容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
在国内访问很慢,要多刷几次,或者装个插件(→_→)
购买AppBazaar下的ZPan
因为双十一购物节,所有商品均是免费,因此这里直接0元购买即可
订单支付成功后,前往“买家中心”就能看到我们刚刚购买的订单了
购买OBS(不买则按实际计费)
首先,访问华为云官网:https://www.huaweicloud.com/
产品 —> 存储 —> 对象存服务 OBS
或者直接访问对象存储服务OBS官网:https://www.huaweicloud.com/product/obs.html
点击“立即购买”按钮,可以开始购买ECS包月、包年套餐
- 区域:华北-北京四
- 资源包类型:标准存储单AZ包
- 规格:40GB
- 购买时长:1个月
注意:
- OBS、桶,还有ECS要选在同一个区域,这样可以节省流量费
- 我这里做实验,没多少数据,因此不购买,按实际计费即可**
OBS的官网帮助文档为:https://support.huaweicloud.com/obs/index.html
里面不仅有文字版的说明,还有很详尽的视频教程
OBS的计费说明如下图
创建桶(创建免费,存储收费)
创建桶的操作是免费的,但往桶里面存储数据却是收费的。如果能预估出使用时长和数据量,可以通过购买相应的包年,或者包月的OBS套餐来获得优惠
下面开始创建桶
- 区域:华北-北京四
- 桶名词:zpan-my(不能与已有桶名称重复)
- 数据冗余存储策略:单AZ存储(启用后不支持修改)
- 默认存储类别:低频访问存储(适合高可靠,低成本,较少访问场景)
- 桶策略:私有
- 默认加密:不勾选
- 归档数据直读:关闭
创建成功后,回返回桶列表页,并显示该桶
点击“桶名称”可以进入详情页,查看桶中信息
在左侧面板,切换成“总览”,Endpoint的地址为:obs.cn-north-4.myhuaweicloud.com
注意:
- OBS、桶,还有ECS要选在同一个区域,这样可以节省流量费
- 记住你的桶名称(后面有用):zpan-my
- 记住你的Endpoint地址(后面有用):obs.cn-north-4.myhuaweicloud.com
购买ECS
进入华为云官网:https://www.huaweicloud.com/
产品 —> 计算 —> 弹性云服务器ECS
或者直接访问ECS官网:https://www.huaweicloud.com/product/ecs.html
点击“立即购买”
- 区域:华北-北京四
- 计费模式:按需计费(我这里做实验所以选按需,实际的话建议包年)
- 规格:t6.small.1(最便宜的CPU)
- 镜像:公共镜像 Ubuntu 20.04 server 64.bit
- 安全防护:不使用安全防护
- 系统盘:高IO 40G(选最便宜的)
- 网络:vpc-default
- 安全组:Sys-WebServer
- 弹性公网IP:现在购买
- 线路:静态BGP
- 公网带宽:按流量计费
- 带宽大小:1
- 释放行为:随实例释放
这里需要“配置安全组规则”,在Sys-WebServer的入方向,放行8222端口(这是访问ZPan的端口)
点击 Sys-WebServer 的名字
切换到“入方向规则”,然后“添加规则”
优先级填1,端口填8222,然后点击“确定”
切换回“弹性云服务器-控制台”,点击刷新按钮,即可以看到该端口
然后点击下一步,之后输入ECS密码即可
最后确认配置,勾选协议即可
返回云服务器列表,可以看到服务器已经在运行中了
注意:OBS、桶,还有ECS要选在同一个区域,这样可以节省流量费
安装ZPan
点击弹性云服务器名,进入详情页
点击右上角的“远程登录”,然后选择从“CloudShell”登录
输入密码后,点击连接即可
之后输入命令,安装并启动服务
curl -sSLf https://dl.saltbo.cn/install.sh | sh -s zpan
systemctl start zpan
CloudShell支持复制命令后,右键直接粘贴进控制台,非常方便
从打印结果可以看出,该命令指向github,无法访问。
上面的命令也可能下载很慢然后中断,如果有问题,就重试一下 (我这里反复试了3次,终于下载成功了)
如下图,最终下载并安装成功了 (正常情况下,只要2分30秒左右,就能安装成功了。如果太慢,使用 Ctrl+C 中断,然后再试一次)
- 启动zpan:
systemctl start zpan
- 查看zpan运行状态:
systemctl status zpan
访问并配置ZPan
ECS服务器的地址,可以在ECS列表中查到。例如,我这里的地址就是:122.9.0.120
打开网页,输入http://ECS公网IP:8222。例如,我这里就是 http://122.9.0.120:8222
- 数据库类型:为了压缩成本,此处先选择 Sqlite3 作为数据库(默认也是sqlite3),后续如果有瓶颈可以自行在配置中切换为其他更强大的数据库
- DSN:Data Source Name的简称,意思是“数据源名称”,我们这里输入
zpan.db
(默认也是zpan.db)
如果配mysql,DSN默认就是user:pass@tcp(127.0.0.1:3306)/zpan?charset=utf8mb4&parseTime=True&loc=Local
点击下一步,输入账号密码(默认账号是:admin@zpan.space)
然后点击开始安装(瞬间就安装成功了)
点击“去登录按钮”,输入账号密码,登录成功
在用户管理这里,可以看到默认只有一个管理员,并且是“已激活”状态
这里可以添加新用户
切换到“存储管理”,点击“创建存储”按钮。可以看到需要AK/SK,下面来获取一下它们两
获取访问密钥(AK/SK)
通过 API 访问华为云需要提供AccessKey 和 SecretKey,简称 AK/SK
ZPan首次登录,进行配置时,也需要AK/SK。这里先行获取一下
注意:AK\SK 相当于你的账号密码,请一定妥善保管!!!
官方文档
华为云官方有提供获取访问密钥(AK/SK)的说明文档,地址如下
https://support.huaweicloud.com/productdesc-obs/obs_03_0208.html
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
操作步骤
-
登录控制台
有两种方法:
(1)进入华为云官网https://www.huaweicloud.com/,在右上角点击“控制台”
(2)直接输入控制台URL地址:https://console.huaweicloud.com
-
鼠标指向界面右上角的登录用户名,在下拉列表中单击“我的凭证”
-
在左侧导航栏单击“访问密钥”
-
单击“新增访问密钥”,进入“新增访问密钥”页面
注意:如果访问密钥泄露,会带来数据泄露风险,且每个访问密钥仅能下载一次,为了帐号安全性,建议您定期更换并妥善保存访问密钥 -
通过邮箱或者手机进行验证,输入对应的验证码。
-
创建成功并下载密钥(credentials.csv)
credentials.csv中保存了(记住这几个值,后面有用)
- User Name
- Access Key Id
- Secret Access Key
创建ZPan存储
接上面在ZPan页面,登录进去之后,我这里是 http://122.9.0.120:8222/admin/storages
点击右上角的“创建存储”按钮
类型:网盘
名称:MyZpan(仅允许使用字母数字和中线-)
存储桶:zpan-my(你创建桶时起的名字)
接入点:obs.cn-north-4.myhuaweicloud.com
AccessKey:(略,在上一章节下载的CSV里)
SecretKey:(略,在上一章节下载的CSV里)
确定后,在存储列表可以看到刚刚创建的存储状态为:正常
至此就已经完成了配置,再次在网址栏输入 http://ECS公网IP:8222 即可访问专属于你的个人网盘
使用Zpan
直接访问刚刚的ZPan地址:http://ECS公网IP:8222。例如,我这里就是 http://122.9.0.120:8222
回车后,回打开ZPan的页面,它会自动在URL末尾补上 “前面创建存储时设置的名称”
这里我们上传一个刚刚安装ZPan的shell脚本
上传后,叉掉对话框,可以看到列表会自动刷新
- 一次也可以选择一个或多个文件一起上传
- 上面的“新建”按钮用来创建文件夹
鼠标移到某一项上,分别是下载,分享和更多按钮
点击“下载”按钮,会直接调用浏览器的下载功能,将文件下载到本地
分享则可以选择有效期,以及是否使用提取码保护链接(这个做的跟百度网盘一样)
- 不使用提取码,有效期7天如下
- 不使用提取码,有效期永久如下
- 使用提取码保护,有效期7天如下(跟百度网盘,简直是一模一样)
释放资源
删除ECS
在ECS的管理控制台中,点击“我的ECS”
在ECS列表右侧,展开更多,选择删除
勾选释放公网IP,删除云服务器挂载的数据盘
然后命令下发成功,ECS的状态会更改为正在删除的状态
ECS删除成功后,ECS列表中不存在服务器了
删除OBS中的桶
访问OBS官网:https://www.huaweicloud.com/product/obs.html
进入“管理控制台”可以看到OBS使用的情况,包括
- 总存储量
- 平均每桶存储量
- 桶数量
- 文件数量
- 总下载流量
- 内网下载流量
- 外网下载流量
- 等等
切换到“桶列表”页面,在桶的列表项右侧,点击“删除”
提示桶里面不是空的,所以无法正常删除
点击“如何删除”,会链接到华为云的帮助文档,地址如下
https://support.huaweicloud.com/usermanual-obs/zh-cn_topic_0045829108.html
点击“桶名称”(这里是“zpan-my”)进入详情页。可以看到一个文件夹,这个文件夹,文件夹里面,就是我们刚刚上传的文件了
- 对象是数据存储的基本单位,在OBS中文件和文件夹都是对象。您可以上传任何类型(文本、图片、视频等)的文件,并在桶中对这些文件进行管理
- 若需要将对象移动到桶内其他位置,推荐下载使用OBS Browser+图形化管理工具
- 基于安全合规要求,从浏览器直接访问文件时不能进行在线预览
这里直接删除整个文件夹即可。删除后,在右上角的“任务中心”可以看到刚刚的操作(刷新或关闭浏览器,会取消当前任务并清除全部记录。 )
然后回到“桶列表”,删除桶即可
它提示:删除后无法恢复,30分钟后,能再次使用该桶名
注意:所有的删除操作,都需要短信或者邮箱的验证,才能顺利完成
实验心得
经过本次实验,从文档和华为云的实际部署中,学到了不少知识
- ZPan中的一些专业术语,包括直链和外链、ZPan的数据存储方式、以及与当代各种网盘的区别
- OBS、桶,还有ECS要选在同一个区域,这样可以节省流量费
- 体验了华为CloudShell远程登录ECS的便捷操作
- 文档中提供的安装脚本命令
curl -sSLf https://dl.saltbo.cn/install.sh | sh -s zpan
,实际上是从github下载安装包,由于国内被墙的原因。网络可能不是很稳定,可能无法下载脚本,要重试几次才能成功 - 学习到了完整的个人网盘搭建流程,包括ZPan的页面样式与设置方式(ZPan的界面,包括使用方式,简直和现在最流行的百度网盘一模一样,太像了!!!)
总结
最后,我们来梳理一下本次部署ZPan的整个流程
- 通过AppBazaar开发者专属集市,购买到“使用Zpan搭建低配版云速云盘”项目的开发文档
- 购买OBS(如果长期使用,则要购买套餐,实验可以跳过此项)
- 创建桶(创建免费,存储收费)
- 购买ECS
- 使用华为CloudShell远程登录ECS
- 通过脚本下载并安装ZPan
- 启动ZPan
- 访问自建的ZPan网站,设置数据库类型、账号密码
- 获取华为云AK/SK
- 在自建的ZPan网站中,创建存储(需要用到桶名、桶的Endpoint地址、AK/SK)
- 访问自建的ZPan网站,会自动在URL后补上刚刚创建的存储名
- 使用方式与百度网盘,基本一模一样
备注:文中使用到的讲解图在附件中
【购物节已开启,个人开发者的专属集市AppBazaar来啦(所有商品购物节期间免费体验)】有奖征文火热进行中:https://bbs.huaweicloud.com/blogs/381337
此外,在(https://bbs.huaweicloud.com/activity/suggestion.html)提出您的宝贵建议,标题以【云驻计划-定向征文】开头,还有机会赢取额外奖励。
- 点赞
- 收藏
- 关注作者
评论(0)