相信用过国内限速的网络云盘的朋友们都有过相同感受,下载怎么这么慢!?不禁开始说出优美的中国话.. 工信部整顿“网盘限速”后,各大网盘确有改善不少,不过还是很难用啊。如果是用自己的服务器搭建一个网盘私人网盘系统,那么稳定性、隐私空间,传输速率还是可以保证的。
接下来介绍的是开源网盘系统Cloudreve,其他暂且不说,就论它搭建安装,实在是太便捷友好了!仅仅只需要复制下面这一串代码,即可开始使用。之前折腾搭建安装过Seafile,失败了。这一对比Cloudreve,对于看不太懂代码的小白,Cloudreve的简易安装是真的好使。
Cloudreve 功能介绍
主要特色功能如下,更多功能介绍可直达官网查看。
- 多样化的外部存储:支持对接多种外部存储存储端,文件的上传和下载全部为客户端直传,无需经过您的服务器中转。
- 虚拟文件系统:Cloudreve 基于 DBMS 构建了一层文件系统抽象,将用户文件和物理文件结构隔离,用户管理文件时无需关注底层存储方式,也可同时管理多个外部存储。
- 从机存储节点:您可以将多个 Cloudreve 实例组成主从集群,将文件、离线下载任务分配到不同的服务器处理。
- 流畅的文件上传、管理体验:在 Web 端,Cloudreve 提供了强大的文件管理及上传组件,通过拖拽管理文件;多选、范围选择批量操作文件,对文件进行分享、移动、复制、压缩等操作。功能丰富的上传任务管理器,支持目录上传、断点续传、并行上传、拖拽文件上传。
- 对接外部云存储提供商:支持使用本机、从机、七牛、阿里云 OSS、腾讯云 COS、又拍云、AWS S3、OneDrive 作为存储端,上传/下载 均支持客户端直传,无需服务器中转。
- 构建您的私人离线资源库:将磁力链、种子文件、下载链接交给 Cloudreve 处理,Cloudreve 会在服务端下载您指定的文件, 并自动上传到对应的存储端中.您还可以通过从机 Cloudreve 节点,将不同的离线下载和转存任务分配到不同服务器处理,减轻主节点的负载压力。
- 从多种设备、应用中访问您的文件:通过 WebDAV 协议,您可以在所有支持 WebDAV 协议的应用中访问并操作文件,包括 系统文件管理器、 各种文件管理器客户端、视频播放器、笔记软件等。
- 创建分享链接来分享您的文件、目录,为你的分享链接设置密码保护、自动过期、收费分享。
Cloudreve搭建安装流程
项目地址:https://docs.cloudreve.org/,下面以Ubuntu 20.04 系统,CPU架构为AMD64的VPS为例,在其上搭建安装Cloudreve网盘系统,访问域名为cloud.example.com。不同之处请自行修改。
获取 Cloudreve
你可以在 GitHub Release 页面获取已经构建打包完成的主程序。其中每个版本都提供了常见系统架构下可用的主程序,命名规则为cloudreve_版本号_操作系统_CPU架构.tar.gz 。比如,普通64位Linux系统上部署3.0.0版本,则应该下载cloudreve_3.0.0_linux_amd64.tar.gz。如果你想体验最新的功能特性,可以在 GitHub Actions 中下载每次 commit 后构建的开发版。注意,开发版并不稳定,无法用于生产用途,且不保证完全可用。
启动 Cloudreve
SSH远程登录到Linux服务器,直接获取、解压并执行主程序即可:
apt-get update && apt-get upgrade
cd /usr/bin
wget https://github.com/cloudreve/Cloudreve/releases/download/3.8.0/cloudreve_3.8.0_linux_amd64.tar.gz
#解压获取到的主程序
tar -zxvf cloudreve_3.8.0_linux_amd64.tar.gz
# 赋予执行权限
chmod +x ./cloudreve
# 启动 Cloudreve
./cloudreve
访问http://服务器IP:5212,使用首次启动Cloudreve打印出来的账号密码登录。登录后修改账号密码。Ctrl+C结束Cloudreve。
进程守护
使用Systemd方式:
# 编辑配置文件
vi /usr/lib/systemd/system/cloudreve.service
将下文 PATH_TO_CLOUDREVE 更换为程序所在目录:
[Unit]
Description=Cloudreve
Documentation=https://docs.cloudreve.org
After=network.target
After=mysqld.service
Wants=network.target
[Service]
WorkingDirectory=/usr/bin
ExecStart=/usr/bin/cloudreve
Restart=on-abnormal
RestartSec=5s
KillMode=mixed
StandardOutput=null
StandardError=syslog
[Install]
WantedBy=multi-user.target
启动Cloudreve
# 更新配置
systemctl daemon-reload
# 启动服务
systemctl start cloudreve
# 设置开机启动
systemctl enable cloudreve
反向代理
在自用或者小规模使用的场景下,你完全可以使用 Cloudreve 内置的 Web 服务器。但是如果你需要使用HTTPS,亦或是需要与服务器上其他 Web 服务共存时,你可能需要使用主流 Web 服务器反向代理 Cloudreve ,以获得更丰富的扩展功能。你需要在Web服务器中新建一个虚拟主机,完成所需的各项配置(如启用HTTPS)。
先将你要使用的域名解析到你服务器的IP。这里先介绍使用Nginx反向代理Cloudreve。
安装 nginx和 acme
sudo -i
apt-get install -y nginx
配置nginx虚拟主机
mkdir -p /www/log/ # 在此之前新建一个目录 (可选)
cd /etc/nginx/sites-available
sudo vi cloud.example.com # 进入文件写入如下相应配置后保存
cd ../sites-enabled
sudo ln -s ../sites-available/cloud.example.com
加入反代规则,内容如下:
server
{
listen 80;
listen [::]:80;
server_name cloud.example.com; # 这里替换为自己的域名
location ^~ /.well-known/ {
default_type "text/plain";
allow all;
root /var/www/cloud-ssl;
}
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; # 这里限制了单个文件上传的大小
}
}
完成后启动nginx,设置开机启动
systemctl reload nginx
systemctl enable nginx
配置HTTPS访问
# 生成证书(在这一步前要完成域名解析)
mkdir -p /var/www/cloud-ssl
chmod a+r /var/www/cloud-ssl
curl https://get.acme.sh | sh -s email=my@is-udomain.com
~/.acme.sh/acme.sh --set-default-ca --server letsencrypt
~/.acme.sh/acme.sh --issue -d cloud.example.com -w /var/www/cloud-ssl
编辑/etc/nginx/sites-enabled/cloud.example.com,写入最终nginx配置。有四个地方需要根据自己的情况进行替换。
server
{
listen 80;
listen [::]:80;
server_name cloud.example.com; # 这里替换自己的域名
location ^~ /.well-known/ {
default_type "text/plain";
allow all;
root /var/www/cloud-ssl;
}
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; # 这里限制了单个文件上传的大小
}
}
server
{
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name cloud.example.com; # 这里替换自己的域名
location ^~ /.well-known/ {
default_type "text/plain";
allow all;
root /var/www/cloud-ssl;
}
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; # 这里限制了单个文件上传的大小
}
ssl_certificate /etc/nginx/certs/fullchain.cer; # 这里是你的证书地址
ssl_certificate_key /etc/nginx/certs/cloud.example.com.key; # 这里是你的密钥路径
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_session_timeout 10m;
}
必须使用以下命令将生成的证书复制到证书文件的存储目录,请勿使用~/.acme.sh/文件夹中的证书文件,它们仅供内部使用,文件夹结构将来可能会更改。
mkdir /etc/nginx/certs
~/.acme.sh/acme.sh --install-cert -d cloud.example.com \
--key-file /etc/nginx/certs/cloud.example.com.key \
--fullchain-file /etc/nginx/certs/fullchain.cer \
--reloadcmd "service nginx force-reload"
这里看到Reload success即是成功!可以使用域名 https://cloud.example.com 访问登录搭建好的Cloudreve网盘啦!
如果遇到上传文件错误:无法解析响应。那需要修改反向代理配置里的client_max_body_size的值,因为它限制了单个文件上传的大小。
如没问题,我们接下来配置离线下载。
另:如果不使用Nginx反向代理Cloudreve,而想直接使用 Cloudreve 内置 Web 服务器,那么忽略nginx配置这部分内容,编辑/usr/bin/conf.ini 文件,添加以下配置代码:
[SSL]
Listen = :443
CertPath = /etc/nginx/certs/fullchain.cer
KeyPath = /etc/nginx/certs/cloud.example.com.key
指定配置文件路径:
cd /usr/bin/
./cloudreve -c /usr/bin/conf.ini
安装 Aria2 离线下载
首先安装Aria2,再接入Cloudreve。
推荐在日常启动流程中,先启动 Aria2,再启动 Cloudreve,这样 Cloudreve 可以向 Aria2 订阅事件通知,下载状态变更处理更及时。当然,如果没有这一流程,Cloudreve 也会通过轮询追踪任务状态。
Aria2安装
Aria2 github地址:https://github.com/P3TERX/aria2.sh
apt install wget curl ca-certificates
wget -N git.io/aria2.sh && chmod +x aria2.sh
./aria2.sh
输入1并回车来安装Aria2,再次输入 ./aria2.sh ,输入7查看配置文件中的 rpc-secret ,启动Aria2后将其与Cloudreve对接。
接入Cloudreve
前往 Cloudreve 的 管理面板→离线下载节点,选择启用主机接管离线下载任务,根据指引填写信息并测试是否可以与aria2正常通信。
对于其中重要参数项的解释如下:
RPC 服务器地址
Aria2 RPC 服务器的地址,一般可填写为http://127.0.0.1:6800/ 。其中6800 为上文 Aria2 配置文件中指定的监听端口。您可以使用 WebSocket 通信,此处填写为ws://127.0.0.1:6800/ 。
RPC Secret
上文中您在 Aria2 配置文件中设定的 RPC 授权令牌
临时下载目录
Cloudreve 会指定 Aria2 将文件下载到此目录中,下载完成后 Cloudreve 会复制到指定的存储策略,并删除文件。此目录必须为绝对路径,否则 Cloudreve 在任务下载完成后会找不到文件。Windows 下指定的绝对路径应该携带盘符,比如G:\www\downloads 。
状态刷新间隔(秒)
指定针对每一个任务,Cloudreve 向 Aria2 轮询更新任务状态的间隔。用户再前台看到的任务进度不会实时更新,而是根据这里设定的间隔自动刷新。
全局任务参数
在此处指定 Cloudreve 创建 Aria2 下载任务时携带的额外参数,如果 Aria2 未与其他服务公共时,你也可以在 Aria2 的配置文件中指定这些参数。具体的可用参数可参考官方文档,以 JSON 的格式填写在这里。如果格式有误,可能会导致无法创建任务。以下为一个填写示例,指定了最大并行任务数和 Tracker 服务器列表:
{
"max-concurrent-downloads": 10,
"bt-tracker": [
"udp://tracker.coppersurfer.tk:6969/announce",
"udp://tracker.opentrackr.org:1337/announce",
"udp://tracker.leechers-paradise.org:6969/announce"
]
}
重启 Cloudreve,搞定!
systemctl restart cloudreve
挂载 OneDrive 云盘
前往 Cloudreve 的 管理面板→存储策略→添加存储策略,官方说明已经很清楚,按提示操作挂载 OneDrive 或其他云盘即可。
完成后到用户组里,将存储策略修改为你新添加的。到这里已经完成了全部 Cloudreve 网盘搭建流程!
🙁 请求时出现错误 cloudreve配置文件应该怎么修改?
不是很清楚你说的提示错误,我没遇到。Cloudreve配置文件可以按照文章中给出的修改,检查一下其中需要更改的部分,例如域名,证书地址。
我是菜鸡,严格按照你写的教程部署的。新的问题是IOS客户端webdav无法连接,提示SSL错误,无法建立与该服务器的安全连接。我把配置文件导出发给你?帮我看看可以吗?
我刚测试了一遍,在电脑和IOS端均可以通过Webdav连接观看视频,不过电脑端连接需要单独创建WebDAV新账号,得到密码后连接。根据提示那你应该是SSL证书配置不对。你可以把配置单独发到我邮箱看看,另外配置正确的前提是你已经通过这里的命令获取到SSL证书。
邮件无法发送,配件文件被判断为病毒文件。我黏贴在这里吧。
server
{
listen 80;
listen [::]:80;
server_name cloud.XXX.com; # 这里替换自己的域名
location ^~ /.well-known/ {
default_type “text/plain”;
allow all;
root /var/www/cloud-ssl;
}
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; # 这里限制了单个文件上传的大小
}
}
server
{
listen 8443 ssl http2;
listen [::]:8443 ssl http2;
server_name cloud.XXX.com; # 这里替换自己的域名
location ^~ /.well-known/ {
default_type “text/plain”;
allow all;
root /var/www/cloud-ssl;
}
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; # 这里限制了单个文件上传的大小
}
ssl_certificate /etc/nginx/certs/fullchain.cer; # 这里是你的证书地址
ssl_certificate_key /etc/nginx/certs/cloud.XXX.com.key; # 这里是你的密钥路径
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_session_timeout 10m;
}
listen 8443 ssl http2; listen [::]:8443 ssl http2; 这两行中的8443都改为443后重载一下Nginx。
listen 8443 ssl http2; listen [::]:8443 ssl http2; 这两行中的8443都改为443后重载一下Nginx。443端口已经给了xraycore使用,应该怎么写这个?
IOS端的Cloudreve,登录用的协议是http或者https,用https也就是默认443端口的。如果你这边被Xray占用了443,那你用http(80端口)登录,但是似乎有些WebDAV客户端会强制443端口,你可以试下。如果不行,你就将Xray改为其他端口,让出443端口。
能否共用443端口?应该怎么写这个配置文件呢?
共用应该是可以的,不过你得自己搜索该怎么操作了。
刚刚重装系统,纯净的debian12,按教程做完,使用443端口,做完反代https登陆还是出现一样的报错。我的vps是amazon的lightsail,域名通过cf解析。
你在浏览器上能直接访问https域名并登录吗?