CentOS下搭建Cloudreve对接Aria2实现网盘和在线下载功能
一直想要一个在线的大容量网盘,把本机上一些文档、视频以及网上搜集的一些资源放到网盘上,一来节约本地硬盘资源,二来可以实现网络共享,随时随地可以查看,第三也相当于把这些资源在网络上做个备份。要实现这些功能有很多方案,我网上搜索查询了以后,最后选择了Cloudreve和Aria2这个组合,搭建Cloudreve作为网盘平台,打开webdav把网盘空间映射到本地PC作为网络磁盘使用。这个方案很成熟,教程也很多,但是里面也有一些坑,尤其在使用docker搭建的时候,走了一点弯路。这个教程不是原创,而是把我自己的搭建过程记录下来,以备今后之用。
安装docker和docker-compose
# 下载docker安装脚本 $ curl -fsSL get.docker.com -o get-docker.sh $ sudo sh get-docker.sh $ sudo systemctl start docker $ sudo systemctl enable docker # 下载docker-compose二进制文件 $ curl -L "https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose # 赋予执行权限 $ sudo chmod +x /usr/local/bin/docker-compose # 创建软链接 $ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose # 测试是否安装成功 $ docker-compose version ## 如果返回显示了版本号就是安装成功了
Aria2安装时的避坑指南
网上有不少使用docker或者docker-compose安装cloudreve和aria2的教程,但安装好之后发现(具体的安装过程就不贴了,反正没有用),cloudreve基本上都没有问题,aira2也显示安装成功了,但是在cloudreve面板里始终无法做到与aria2的对接,刚开始十分抓狂,总也找不出问题,最后仔细阅读了官方文档以后,才发现漏掉了一个很关键的东西:Aria2需要与主机Cloudreve进程共用相同的文件系统。因为网上大部分提供的docker-compose配置文件,都是把cloudreve和aria2作为两个容器来运行的,自然无法做到共用相同的文件系统。为此,我踩了不少的坑。这里有两个方面需要记录下来的。
第一种情况,如果aria2和cloudreve作为两个容器来运行,要想保证两者正常通信,RPC服务器地址就不能填写http://127.0.0.1:6800,而需要使用运行容器时,给aria2分配的内部ip地址,比如172.28.*.*,否则无法与cloudreve进行通信
第二种情况,即便第一种情况所列的问题解决了,rpc服务器地址填对了可以与cloudreve通信实现了离线下载,但是会在下载完成进行转存的时候出现错误,总是转存失败。经过检查,发现存储的文件还在docker的容器里,无法转存到映射的目录里。起初,我以为是映射目录的权限问题,折腾来折腾去无法解决问题。网上搜了很多,也没有发现哪里出了问题。终于,阅读了官方文档后恍然大悟,还是因为aria2和cloudreve没有共用相同的文件系统造成的。忘记了截图,就不贴图出来了。
搞清楚了这两个坑之后,我明白了要实现cloudreve与aria2对接,还是不要偷懒用docker一键安装cloudreve和aria2,而是需要把cloudreve和aria2分开来手动安装,然后再实现对接,这样才可以避免aria2与cloudreve没有使用共同的文件系统而造成的这样那样的问题(至少我很难解决)。下面就来记录正确的安装过程:
安装Cloudreve
# 进入lnmp已经建立的网站目录,下载cloudreve $ wget https://github.com/cloudreve/Cloudreve/releases/download/3.7.1/cloudreve_3.7.1_linux_amd64.tar.gz # 解压cloudreve $ tar -zxvf cloudreve_VERSION_OS_ARCH.tar.gz # 赋予执行权限 $ sudo chmod +x ./cloudreve # 运行cloudreve $ ./cloudreve
Cloudreve 在首次启动时,会创建初始管理员账号,请注意保管管理员密码,此密码只会在首次启动时出现。如果您忘记初始管理员密码,需要删除同级目录下的
cloudreve.db
,重新启动主程序以初始化新的管理员账户。
这时候就可以访问你的域名的5212端口,http://yourdomain.com:5212,就可以看到登陆界面了。这时候还需要设置反向代理,找到网站的配置文件,把以下一段代码写入配置文件,然后重启nginx
location ^~ / { proxy_pass http://127.0.0.1:5212; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_http_version 1.1; # proxy_hide_header Upgrade; add_header X-Cache $upstream_cache_status; }
添加开启启动
# 编辑配置文件 $ sudo vim /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=/PATH_TO_CLOUDREVE ExecStart=/PATH_TO_CLOUDREVE/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
后来补充:Centos 8的环境下,原先Centos 7开机脚本已经无法使用了,这里列一个开机启动的办法
# 编辑rc.local文件 vi /etc/rc.local # 添加一行内容 /cloudreve的绝对路径/cloudreve # 加入可执行属性 chmod +x /etc/rc.d/rc.local # 配置rc.local服务 vi /usr/lib/systemd/system/rc-local.service
最后的install一段不可少,如果当前的service文件中没有这段,需手动添加(默认有前两部分) 否则服务启动时会报错
安装Aria2程序
# 下载aria2一键安装脚本 $ wget http://down.nifeng.win/shell/aria2.sh # 赋予执行权限 $ sodu chmod +x ./aria2.sh # 执行脚本 $ ./aria2.sh
这个脚本还是很好用的,根据自己的需要进行安装,建议下载文件的位置放到网站目录里,便于管理。如果安装的时候忘记选择下载文件位置了,可以再次运行脚本,选择修改配置,很方便。
安装完成后,会显示ip、端口、secret以及下载的位置需要记住,之后要填到cloudreve的离线下载配置里面。当然,如果忘记了,可以运行aria2脚本再次查看或者修改。
至此,cloudreve和aria2就安装完成了。下面,要进入cloudreve的管里面板做一些设置。点击右上角点击进入管理面板,然后点击离线下载节点;随后点击编辑,依次输入有关的信息
最后点击Aria2测试通信,如果出现以下情况,就表示设置成功了