最开始是因为女票有网盘的需求,但是某度网盘总限速,开会员还限速。所以我就想自己搭一个不限速的网盘。找了一圈之后发现 owncloud 、nextcloud 之类传统网盘都是基于本地文件系统。后来找到了 cloudreve,但是发现他是 php 写的,部署起来比较麻烦。所以我就想着自己写一个。
19 年 9 月底开始搞,每天晚上下班写写,大概不到一个月就部署上线使用了。但是,我觉得这个东西要搞的完善还是很麻烦,包括用户系统、分享、回收站、离线下载、WEBDav 等等。当时我想快速做一个开源项目了解下开源项目的玩法,所以就转头去做 Uptoc 了。没想到这一暂停就是一年,一年后当我把这个项目重新拿起来快重构完的时候,忽然发现 Cloudreve 也用 Go 重构了一版🤣
真的是五味杂陈。不过我还是想把它做出来,我想看看我做的第一个应用类的开源项目能不能获得一些用户。
使用 ZPan 你可以快速的搭建一个完全不限速的网盘系统,目前他实现了百度网盘的基本功能,可以满足日常所需。后续根据用户反馈我也会考虑增加更多的功能
上文说了,ZPan 是我的第一个应用类开源项目(第一个工具类是 Uptoc ),所以我是想把 ZPan 作为开源项目来运作的。我也看了 Cloudreve 的代码,或许是因为 Cloudreve 有些历史包袱,结果就是导致它的代码很臃肿。ZPan 是一个完全从零开始的开源项目,如果你想做开源项目,如果你是一个 gopher,如果你对这个项目有点兴趣,欢迎你跟我一起来做这个开源项目。
本文首发自saltbo.cn
zpan有独立域名了,欢迎来访~
1
blackmoonth 2020-09-07 23:06:53 +08:00
文档 404
|
2
yuanse 2020-09-07 23:08:44 +08:00
mark 一下,等我学 go 了再来
|
3
saltbo OP @blackmoonth 正在打包 稍等
|
4
lysS 2020-09-07 23:09:01 +08:00
小站不太敢用,,,
|
6
flypei 2020-09-07 23:38:14 +08:00
好像不可以在线预览视频
|
8
guappieTRain 2020-09-08 00:21:01 +08:00
精神可嘉,做一个私人网盘还是不错的
但是要拓展用户的话,想一下,当阿里开始做网盘业务的时候,个人 or 小团队做这个,百分百没戏了 |
9
saltbo OP @guappieTRain 是的 就是满足一些有自建需求的用户
|
10
LaicZhang 2020-09-08 00:58:53 +08:00
额,相比起 oss,还是 OneDrive 更适合我等穷人👀
|
11
ray2018 2020-09-08 01:38:12 +08:00
能对接 谷歌云盘 和 onedrive & 世纪互联 么
|
12
cmdOptionKana 2020-09-08 07:30:31 +08:00
@LaicZhang OneDrive 之类的普通网盘不保证可用性的,长时间不使用的文件,几年后有一定概率损坏。oss 按量收费,量少的时候很便宜,不适合用来保存电影之类的文件,但很适合保存重要的私人文件。
|
13
cat 2020-09-08 07:52:07 +08:00 via iPhone
年初刚撸了一个… 支持七牛和又拍… 花了一周
|
14
nozer 2020-09-08 08:43:03 +08:00
牛逼,👍
|
15
klgd 2020-09-08 08:48:41 +08:00
离线下载估计是个问题吧
好多资源用磁力直接下是一点儿速度也没有,但是百度的离线大部分情况下都不是问题 |
16
LokiSharp 2020-09-08 09:05:19 +08:00
@cmdOptionKana #12 有概率损坏是什么贵?
|
17
Mitt 2020-09-08 09:08:22 +08:00
@cmdOptionKana “不保证可用性的,长时间不使用的文件,几年后有一定概率损坏” ??? 你对大企业推出的云服务有什么误解吗?
|
18
huobazi 2020-09-08 09:17:12 +08:00
百度网盘有一个生态就是分享,如果能从百度网盘分享链接转存东西过来,再配上手机的照片同步什么的就很有价值了
|
19
cmdOptionKana 2020-09-08 09:18:33 +08:00 1
|
20
madlifer 2020-09-08 09:21:14 +08:00
资瓷,可以先不考虑网盘本身功能和交互优化,期待以下功能先行:aria2 整合以支持离线下载&支持本地储存及多节点本地储存&支持 onedrive 、onedrive 世纪互联、GoogleDrive&支持 WebDav
|
21
cmdOptionKana 2020-09-08 09:24:27 +08:00
对象存储系统一般通过连续后台数据扫描、数据完整性校验、自动化对象修复等技术,大大提高数据的完整性和安全性。
|
23
ferock 2020-09-08 09:34:53 +08:00
不容易,鼓励!!!
继续用群晖 |
24
binxin 2020-09-08 09:49:04 +08:00
@cmdOptionKana 《论如何张口就来》、《论造谣张张嘴》
|
25
luhe 2020-09-08 09:49:18 +08:00
那个美团单车的照片笑死我了...
|
26
cmdOptionKana 2020-09-08 09:57:04 +08:00
|
27
xuxuxu123 2020-09-08 10:08:16 +08:00
我草 里面的内容。。。
|
28
internelp 2020-09-08 10:08:52 +08:00
速度好快呀。
|
29
1KN6sAqR0a57no6s 2020-09-08 10:13:45 +08:00
试用了,小说很好看
|
30
a570295535 2020-09-08 10:15:34 +08:00 via Android
看到你这个我想到了之前用的 ftp 管理器挺好用的,
不用数据库, 传到空间就能用, 不管填入哪个服务器的 ftp 账号密码都能进入相应的空间管理所有的东西, 简单实用, 就是 ftp 管理器界面不如网盘类界面好看。 |
31
Dganzh 2020-09-08 10:19:30 +08:00
那个 1.MP3 是什么内容,求 V 友告知
|
32
tcfenix 2020-09-08 10:23:23 +08:00
谢谢楼主, 好人一生平安
|
33
8jinmuyan8 2020-09-08 10:42:49 +08:00 via iPhone
Cloudreve
|
34
jeremaihloo 2020-09-08 10:45:56 +08:00
@Mitt #17 百度盘分分钟把你的视频和谐了, 你觉着有安全性吗?
|
35
Cursor1st 2020-09-08 10:53:28 +08:00
流畅度挺高的,赞赞赞
|
36
r9sky 2020-09-08 10:54:50 +08:00
Cloudreve
|
37
ragnaroks 2020-09-08 11:13:40 +08:00
@cmdOptionKana 确实有这个情况,我从百度网盘下载的压缩包,无法通过测试(但强制解压后使用好像也没问题),目前用微云,前后传输了几 T 的内容,暂未出现过错误
|
38
RRRoger 2020-09-08 11:22:37 +08:00
登录看了一下 我想说好人一生平安
|
39
saltbo OP |
40
RockShake 2020-09-08 11:27:04 +08:00
登陆以后, 我只想说你们太有才了
|
41
saltbo OP @madlifer 离线下载、WebDav 会考虑,但是我们不打算支持本地存储。因为 ZPan 就是为了解决上传下载限速的问题,本地文件系统就受限于服务器自身的带宽。而关于多节点本地存储会从架构上考虑会破坏既定架构。
如果需要自己存储,那么我更推荐自建 MinIO 。这样,从架构上来说存储和管理是分离的,各司其职。 |
42
cmdOptionKana 2020-09-08 12:17:27 +08:00 via Android
@ragnaroks 出错概率与储存时间成正比,三五年可能没问题,十年二十年不做完整性检查就比较让人担忧了。当然,大多数文件都不是很重要,损坏就损坏了,我只是指出有这个潜在风险。
|
43
locoz 2020-09-08 12:26:32 +08:00 via Android
我发现楼主和前面的回复都没有注意到一个问题,那就是其实 owncloud 、nextcloud 、seafile 之类的传统网盘也都可以直接对接云服务厂商的对象存储…而且对接起来也没啥难度,和正常用 SDK 一样填个公私钥、桶名称啥的就完事了。
|
45
zst 2020-09-08 12:41:54 +08:00 via Android
话说想知道用 oss 的话每个月大概花多少钱啊
还有就是存储能不能加密啊 |
47
huhexian 2020-09-08 12:43:16 +08:00
国民好老公!
|
48
locoz 2020-09-08 13:02:48 +08:00 via Android
@saltbo #44 首先,直链的意义并不大…直接本地跑一个服务就是走内网 /没有中转的直链了。
或者可以更简单粗暴一点,服务器网络按量付费,走内网读写对象存储(免费),带宽费和直接读写对象存储是一样的。 |
49
ylsc633 2020-09-08 14:00:57 +08:00
很棒啊
|
50
vanwtf 2020-09-08 14:03:38 +08:00
收藏 /star 了,等学 go 再看,支持楼主,赞赞赞
|
51
aoeui 2020-09-08 15:53:20 +08:00
@cmdOptionKana
百度的问题我们不讨论。OneDrive 那个确定不是他自己电脑文件损坏然后同步到服务器的? OneDrive / Google Drive 不保证数据可用性的官方说明链接在哪里?我是没找到。 |
52
cmdOptionKana 2020-09-08 16:10:49 +08:00 1
@aoeui 就以百度为例吧,看这里 https://cloud.baidu.com/doc/BOS/s/njwvyshrl
数据在 BOS 上是否会丢失或损坏? BOS 提供多重备份,和数据自动修复的能力,提供了 99.99999999%的数据可靠性和 99.9%的服务可用性。 其他腾讯云、阿里云、外国云的对象储存都是类似的,都能找到冗余储存、自动修复、可靠性、可用性的说明。 但是,面对普通大众的便宜云盘,你都找不到这些保证。 有保证是会主动说出来的,这是卖点,没有保证就不会提起,这是正常的商品销售方法。 |
53
Musir 2020-09-09 04:51:27 +08:00
手机预览 ui 不友好,有待改进
|
54
yulang 2020-09-09 08:28:03 +08:00
|
55
q9OxQg 2020-09-09 08:50:00 +08:00
@YuxiangLuo 啥小说,啥内容,我进去是不是太晚了?
|
56
hauzi 2020-09-09 10:06:58 +08:00
好酷哦,速度挺快的
|
58
madlifer 2020-09-09 11:21:41 +08:00
@saltbo 如果不考虑本地储存的话,那就把 GD 和 OD 、OD 世纪互联优先级提高吧。
提供一个可参考的开源 PR:OneManager-php 解答你一下为什么不直接用 OD/GD 的问题,我不用 GD,所以主要说 OD 的 1.由于网络问题,OD 和 GD 网页端体验实在太差,不支持直链 share(或者太长) 2.OD 在 win 下几乎找不到可用的 WebDav 方式 3.OD Client 经常遇到保存 Office 文件到网盘,打开后提示 loginto MS 的情况 |
59
madlifer 2020-09-09 11:22:39 +08:00
@saltbo
还有关于为什么要支持本地储存和 OD 就是大部分博主把网盘用来分发文件,这种需求下 OSS 买不起 本地储存 buy big disk server 就行了,很 cheap OD 、GD 可以白 X |
60
madlifer 2020-09-09 11:23:04 +08:00
V2ex 的敏感字符限制也太死了...........
|
61
zzl22100048 2020-09-09 13:00:56 +08:00 via iPhone
前端可以参考下 filebrowser,
|
63
saltbo OP @madlifer
1.网络问题,难道你想把 ZPan 部署在境外服务器么,否则无法解决网络问题啊。 但是与其这样,直接 FQ 不好么 2.你的意思是通过网盘来做 WebDav 的中转么,那还是依赖服务器的带宽啊 3.这是 client 的问题还是 onedrive 本身的问题呢? |
64
cernard 2020-09-10 12:14:19 +08:00
有没有人一起在 zpan 做互动小说
|
65
abser 2020-09-10 12:45:14 +08:00 via iPhone
@cmdOptionKana 支持一下,求个互关
|
68
firefox12 2020-09-10 17:00:55 +08:00
好奇 速度为什么这么快? 哪家的 vps?
|
69
Tigerw 2020-09-11 10:17:06 +08:00
企业会不会自己搭建一个自己的呢?
|
70
saltbo OP |
71
firefox12 2020-09-12 11:00:23 +08:00
@saltbo 你的这个设计,我们看到的站点 其实是个 client, 把云存储上的数据 搬给我们,我们并没直接去云存储里拿数据吧。
|
72
taobibi 2020-09-12 18:59:54 +08:00
onedrive 扩容,或者 onedrive 转存很有用途 好多人都有拼车的 office365
|
74
kutear 2020-09-14 14:14:44 +08:00
和你同样的想法 目前还在 coding 中 😭
|
76
foMM 2020-09-16 10:24:58 +08:00
请教一下文档里面 customHost 是用来做什么的?谢谢
|
78
foMM 2020-09-16 12:34:56 +08:00
@saltbo
谢谢。我尝试了一下绑定 oracle 的 object storage bucket,使用 sqlite 作为数据库。 根据文档里面 driver & dsn sqlite: zpan.db 我在 zpan.yml 里 database 是这么写的: database: driver: sqlite dsn: zpan.db 但是 container 报错 Using config file: /zpan/zpan.yml `sqlite` is not officially supported, running under compatibility mode. 2020/09/16 04:31:55 sql: unknown driver "sqlite" (forgotten import?) 请问一下如何可以成功使用 sqlite 作为数据库呢? 谢谢 |
79
saltbo OP 抱歉,文档可能出错了,你试试改成 sqlite3 呢
另外,目前还不支持 oracle 的 object storage |
80
foMM 2020-09-16 21:59:18 +08:00
@saltbo
`sqlite3` 事实证明是可以用的 ![image.png]( https://i.loli.net/2020/09/16/37Fc4ERPg2xjsUo.png) 可以登录,但是如您所说 oracle 暂时还不支持。 看到 roadmap 上面有之后会支持 aws S3 和 google cloud,不知道是否有可能做成只要是 S3 compatible 都支持,例如 Digitalocean spaces,oracle object 等。 最后,感谢分享 |
81
saltbo OP @foMM 感谢反馈,我还真不知道还有这么多平台。 其实底层都是支持的,我们其实是为了简化配置,想着只配置 endpoint 就不用再配一个 region 了,所以是自动从 endpoint 里提取 region,但是不同平台的 endpoint 规则又不一样,所以就导致了目前只有我们配置了规则的平台才能使用。
后面我们考虑把 region 放开,如果配置了 region 就使用自己配置的 region,这样就不限制平台了 |
82
coldark 2020-10-06 11:13:08 +08:00
能否有文件外链呢?作为文件床的项目
|
84
saltbo OP @coldark 我想了一下 目前要用的话其实也可以 只需要把 bucket 设置成公共读就行了 但是目前只支持配置一个 bucket 不能管理多个不同权限的 bucket 后续会支持 另外后续我们也打算支持不同语言的 sdk 支持方便的上传文件到 zpan
|
85
c0py7hat 2020-11-12 13:11:19 +08:00 via iPhone
支持图床等静态资源吗,我看了文档支持 s3 协议,相当于对接的是 oss
|
86
mushokumunou 2021-03-09 11:18:33 +08:00
亲自买了 cloudreve,然而很多地方要改,理念不适合。准备放弃了。寻其他解决方案。
来说 cr 的一些缺点 1.增删都是物理的,以后秒传基础丧失。 2.因为 1,去重不具备,虽然可以让文件系统代理。 3.存储策略是全局的,无法下放到 user 。 其他的作为系统额外的比如邮件没有使用 oAuth2.0,邮件到达率堪忧。主要用社交账号接入的话也不是什么大问题。 槽点也蛮多的,不过基于 go 写的,性能比大部分开源的 php 网盘性能高很多。 |
88
saltbo OP @mushokumunou 感谢关注 zpan,看看能不能满足你的需要。
据我了解,cr 的存储策略可以配置到不同的用户组上。你说的下放到 user,是想给每个用户配置不同的策略么? ZPan 的策略是管理员可以配置多个存储空间,由用户自己选择使用哪一个。 另外没看懂你说的邮件没有使用 oauth2.0 是啥意思,邮件使用的是 smtp 啊 |
89
mushokumunou 2021-03-09 13:42:16 +08:00
@saltbo 嗯,让每个用户自己配置不同的策略,全局只要支持这些策略就好。
比如支持 onedrive,zpan 有通用的 api,然后用户自己绑定自己的 onedrive 账号,也可以绑定多个。 这样可以用 zpan 来管理多个第三方账号,后期如果能同步第三方盘,那就是最完美的生产力应用了。 还有最好能支持本地存储,对于一些中等应用( pb 级别的),还是需要自建来控制成本,oss 太贵了说真的。 但 zpan 作为普及网盘的尝试,定位没有错,毕竟搭建门槛要够低才能吸引第一批受众,软件才能得到进步。 其实我说的这些倒没有意思让开发者采纳,毕竟开源的,自己 fork 一个分支魔改也是可以的。 |
90
mushokumunou 2021-03-09 13:46:07 +08:00
|
91
saltbo OP @mushokumunou 我还是没理解邮件服务跟 oauth2.0 有啥关系 你能举个例子么 哪个域名服务可以用 oauth2.0
|
92
mushokumunou 2021-03-09 17:58:29 +08:00
@saltbo 设置 smtp 服务器的时候有两种方式,直接密码验证那种,输入账号和密码就好了,这种应该是 zpan 也用的。
还有一种就是 OAUTH2 验证方式,比如我是 google wockspace 用户,我用域名邮箱来发送邮件,就需要用到 gmail api 来生成我的 client ID 和 secret 用于邮件服务器,而不是用账号和密码。用 OAUTH2 更安全吧。 |
93
mushokumunou 2021-03-09 18:04:38 +08:00
@saltbo 补充,其实用 ssl 加密传输也不会遭到中间路由截获破解。只是从趋势来,更应该普及 OAUTH2,因为国外大厂也基本推荐 OAUTH2 方式来访问 gmail,outlook 这些的。
|
94
saltbo OP @mushokumunou 我明白了 你说的是通过 api 发信 这种方式的问题是不同平台的 api 不一样,我们没有精力对接所有平台。而 smtp 是一个标准,标准的邮件服务都是支持的。
|
95
zololiu 2021-04-03 12:04:22 +08:00
demo 登陆不了,我错过了什么。
|
97
zzl22100048 2021-05-08 00:30:32 +08:00
有几个问题
无法使用忘记密码功能 没有使用分段上传,传不了大文件 |
98
saltbo OP @zzl22100048 忘记密码需要配置发信邮箱 分段上传这种功能浏览器端做不了 客户端才能做
|
99
zzl22100048 2021-05-08 19:12:07 +08:00 via iPhone
@saltbo 浏览器可以做,有 jssdk 和临时令牌,我们内部的网盘系统实现了
忘记密码不是邮箱那块的功能问题,提交的时候会提示输入密码,我看后端和登陆走一个接口,实体校验失败了 |