无论是搭建在互联网的服务器上、本地,还是局域网的其他设备上,Cloudreve都能提供出色的云服务。对于个人,它存点资料完全够用;而对于组织,它也有账号管理系统,可以满足多人使用的需求。我是将它作为个人云使用的,除上面所说之外,它还有许多感知强烈的优点:
- 上传下载不限速,具体视服务器和客户机而定
- 文件实时在线预览/编辑/压缩
- 连接到其他存储服务,如Microsoft OneDrive、亚马逊S3等,当然也可以存在服务器端
- Material Design网页界面,多平台、深色模式及PWA支持
- 支持文件分享,可选直链分享
- WebDAV
- 配合aria2实现离线下载
相比官方原版OneDrive,它的网页端可以自由访问;而相比百度云,它就只有容量不占优了。
以下皆以amd64架构的Ubuntu 20.04为例。
部署
在服务器中合适的位置用chmod
新建一个目录,然后下载Releases页面对应架构的软件包,解压即可。
对于负载不大的情况,可以直接使用Cloudreve自带的反代服务器,无需重新设置。
直接执行./cloudreve
即可使其前台运行,后台运行可以使用nohup。第一次运行建议截个图,内含管理员账号密码,用它登录进去之后可以在管理后台进行改名改密码等操作。
SSL
如果你想使用Cloudreve的OneDrive同步,你还需要HTTPS访问,而这需要一个SSL证书和一个域名。域名可以自己买,而这里主要解决SSL的问题。这里推荐使用Certbot来完成这个过程,它使用了Let’s Encrypt的服务。可以参考这篇文档的方法。简单来说,就是:
- 使用
sudo snap install certbot
安装certbot - 运行
sudo certbot certonly --standalone
(如果80端口没被占用) - 依次输入你的邮箱和域名
- 记下证书路径和私钥路径
- 编辑Cloudreve文件夹下的conf.ini,加入以下内容:
[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。
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端口相同。
参考文献
又水一篇,开心