Cloudreve:属于你的网盘

无论是搭建在互联网的服务器上、本地,还是局域网的其他设备上,Cloudreve 都能提供出色的云服务。对于个人,它存点资料完全够用;而对于组织,它也有账号管理系统,可以满足多人使用的需求。我是将它作为个人云使用的,除上面所说之外,它还有许多感知强烈的优点:

  • 上传下载不限速,具体视服务器和客户机而定
  • 文件实时在线预览 / 编辑 / 压缩
  • 连接到其他存储服务,如 Microsoft OneDrive、亚马逊 S3 等,当然也可以存在服务器端
  • Material Design 网页界面,多平台、深色模式及 PWA 支持
  • 支持文件分享,可选直链分享
  • WebDAV
  • 配合 aria2 实现离线下载

相比官方原版 OneDrive,它的网页端可以自由访问;而相比百度云,它就只有容量不占优了。

Cloudreve PWA 主界面

以下皆以 amd64 架构的 Ubuntu 20.04 为例。

部署

在服务器中合适的位置用 chmod 新建一个目录,然后下载 Releases 页面对应架构的软件包,解压即可。

对于负载不大的情况,可以直接使用 Cloudreve 自带的反代服务器,无需重新设置。

直接执行 ./cloudreve 即可使其前台运行,后台运行可以使用 nohup。第一次运行建议截个图,内含管理员账号密码,用它登录进去之后可以在管理后台进行改名改密码等操作。

SSL

如果你想使用 Cloudreve 的 OneDrive 同步,你还需要 HTTPS 访问,而这需要一个 SSL 证书和一个域名。域名可以自己买,而这里主要解决 SSL 的问题。这里推荐使用 Certbot 来完成这个过程,它使用了 Let’s Encrypt 的服务。可以参考 这篇文档 的方法。简单来说,就是:

  1. 使用 sudo snap install certbot 安装 certbot
  2. 运行 sudo certbot certonly --standalone(如果 80 端口没被占用)
  3. 依次输入你的邮箱和域名
  4. 记下证书路径和私钥路径
  5. 编辑 Cloudreve 文件夹下的 conf.ini,加入以下内容:
ini
1
2
3
4
[SSL]
Listen = :xxx ; 将 xxx 替换为 HTTPS 访问该网站用的端口号,如 https://abc.com:xxx,推荐使用 443
CertPath = /etc/letsencrypt/live/abc.com/fullchain.pem ;abc.com 替换为你的域名
KeyPath = /etc/letsencrypt/live/abc.com/privkey.pem ; 同上

如果你已经在运行 Cloudreve,先执行 killall cloudreve 再重新启动。

上传速度演示,受网速限制
上传速度演示,受网速限制

到现在就可以使用服务器本地的硬盘空间作为一个网盘了。操作非常简单,我想我没必要再说了。但对于 OneDrive,我觉得还得再提一句。

连接 OneDrive

许多云主机的空间很小,装不下几个大文件,这时可以连接到 OneDrive,支持个人用户或者企业 / 学校用户,以及各种 Microsoft 365 套餐。

在下载大文件的时候,主机直接连接微软服务器。

下载速度
就是这么快……

在管理后台的”存储策略 “点击添加,然后按步骤操作。如果你用的不是公司 / 学校 Microsoft 账户,注册应用程序时需要选择” 任何组织目录…… 及个人 Microsoft 账户 “,后面才可以验证,否则会出现” 无法使用个人帐户在此登录,请改用工作或学校帐户“的错误。

添加完成之后,还需要在” 用户组 “设置里选择特定用户组使用的使用的存储策略,才能使用其他平台的存储空间。

OneDrive 代理加速

可以参考 这篇文章,Cloudreve 的 OneDrive 反代原理是一样的。不过,如果你使用的是 OneDrive 个人版,获取到的下载链接类似于 https://public.bn.files.1drv.com,也是可以的,不必强求 SharePoint 链接。

反代

我使用的是 Nginx 反代,所以当然以它为例。核心部分就是照着官方文档的配置,在 Nginx 的某个 server 中加入以下的 location。

json
1
2
3
4
5
6
7
8
location / {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://127.0.0.1:5212;
    # 如果您要使用本地存储策略,请将下一行注释符删除,并更改大小为理论最大文件尺寸
    # client_max_body_size 20000m;
}

需要注意的是,Cloudreve 目前(指 3.3.2 和 3.4.0-beta1)并不能够使用二级目录反代,如设置 location ^~ /cloud,因为 Cloudreve 会在调用静态资源的时候访问不带二级目录的内容,即使 “站点 URL” 中已添加二级目录也是这样。所以,我更推荐使用在 Nginx 里新建一个 server,将另一个二级域名的根目录直接指向 Cloudreve。只需设定不同的 server_name,Nginx 就可以根据不同的二级域名来访问不同的服务,即使设定的 listen 端口相同。


参考文献

又水一篇,开心