说明:目前用的比较多的网盘有Nextcloud
、Seafile
等,都还不错,而刚刚在loc
看到树洞外链的作者开发出了个功能更强大的Cloudreve
网盘,博主就想试下,顺便发个搭建教程。
缘起
之前写过一个叫树洞外链的程序,其主要定位是小文件分享、图床。但许多人把他理解为网盘,提出的建议也都向网盘靠拢。既然如此,那就结合树洞外链的特点,写一个真正意义上的网盘系统吧。Cloudreve
的定位为小型公有云和私有云,即公私兼备。
截图
更新
最新的版本为1.1.0
,新增以下内容。
- 新增
OneDrive
存储策略,理论支持Bussiness
和个人账号 - 新增基于
Aria2
的离线下载(只支持本地和OneDrive
策略使用) - 全新的目录分享页样式
Web
端安装向导
功能
- 快速对接多家云存储,支持七牛、又拍云、阿里云
OSS
、AWS
S3
、Onedrive
、自定远程服务端,当然,还有本地存储。 - 可限制单文件最大大小、
MIMEType
、文件后缀、用户可用容量。 - 图片、音频、视频、文本、
Markdown
、Ofiice
文档 在线预览。 - 移动端全站响应式布局。
- 文件、目录分享系统,可创建私有分享或公开分享链接。
- 用户个人主页,可查看用户所有分享。
- 多用户系统、用户组支持。
- 初步完善的后台,方便管理。
- 拖拽上传、分片上传、断点续传、下载限速(实验性功能)。
- 多上传策略,可为不同用户组分配不同策略。
- 用户组基础权限设置。
WebDAV
协议支持。
准备
- 重写目录分享和单文件分享页面样式
- 增加保存其他用户的分享到自己账户(限
Pro
版) - 推出辅助程序,并借此实现:压缩包解压缩、文件压缩;对接
Google Drive
,上传模式为先上到自己服务器,然后中转。
安装
1、安装宝塔
#Centos系统
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install.sh && sh install.sh
#Ubuntu系统
wget -O install.sh http://download.bt.cn/install/install-ubuntu.sh && sudo bash install.sh
#Debian系统
wget -O install.sh http://download.bt.cn/install/install-ubuntu.sh && bash install.sh
安装完成后,请安装PHP 5.6
及以上的版本,Nginx
,mysql
。安装完成后再去左侧软件管理,找到PHP
版本,点击设置,安装拓展,安装fileinfo
,然后点击禁用函数,删掉proc_open
和proc_get_status
。
#如果Fileinfo拓展安装失败,就是内存太小,我们可以添加swap,不适用于ovz
1、手动添加,方法查看:https://www.moerats.com/archives/19/。
2、面板添加,找到左侧软件管理-系统工具-安装Linux工具箱,然后进入工具箱添加。
2、安装Composer
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
3、使用Composer安装Cloudreve
解析域名到服务器,添加网站,根目录文件夹为xx.com
。
使用命令:
cd /www/wwwroot/xx.com
git clone https://github.com/HFO4/Cloudreve.git
mv Cloudreve/* /www/wwwroot/xx.com
composer install
如果使用Composer
安装有问题的话,可以不使用Composer
安装。到http://cloudreve.org/download.php
下载最新的安装包,解压到网站根目录,并授权文件夹755
权限。其他步骤都一样。
4、配置MySQL
将根目录下的mysql.sql
导入到你的数据库,编辑application/database_sample.php
文件,填写数据库信息,并重命名为database.php
。
5、伪静态
对于Apache
服务器,请确保:
httpd.conf配置文件中加载了mod_rewrite.so模块。
AllowOverride None将None改为All。
#项目目录下的.htaccess已经配置好重写规则,如有需求酌情修改。
对于Nginx
服务器,在配置文件添加以下代码:
#程序在根目录
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=/$1 last;
break;
}
}
#程序在二级目录,xx为你的二级目录名
location /xx/ {
if (!-e $request_filename){
rewrite ^/xx/(.*)$ /xx/index.php?s=/$1 last;
}
}
6、后续操作
到此步时,系统已基本可以正常运行,但还需要进行一些后续操作。
1、登录后台(初始用户名:admin@cloudreve.org
,初始密码:admin
,后台URl
:http://你的域名/Admin
,登录后到设置-基本设置中检查站点URL
是否正确)。
2、到用户管理页修改初始用户密码。
3、如果你需要使用二步验证功能,请使用命令:
cd /www/wwwroot/xx.com
composer require phpgangsta/googleauthenticator:dev-master
composer require endroid/qrcode
添加Cron
定时任务:
* * * * * curl http://你的域名/Cron
* 如果你打算使用本地上传策略并且不准备开启外链功能,请将public/uploads目录设置为禁止外部访问、禁止脚本。
相关问题
1、Composer安装Cloudreve时提示The requested PHP extension ext-XXX * is missing from your system
这是PHP扩展未达到要求所致,Cloudreve需要curl、fileinfo、gd扩展支持,请先安装并启用这些扩展。
2、安装成功后页面404/No input file specified
URL重写规则未配置好,请检查。
3、安装后首页提示“遇到错误”
请依次检查:
application/database.php是否存在,如果不存在请手动创建写入数据库信息。
runtime及其子目录是否有写入权限。
其他原因,编辑application/config.php打开debug模式,查看详细报错。
4、头像无法显示/文件无法上传
检查fileinfo扩展是否被安装并启用。
5、本地存储策略文件上传到4mb时卡住
public/uploads/chunks目录没有写入权限,请分配写入权限。
6、使用云存储策略时回调失败/获取的文件外链URL不对
依次检查:
后台-设置-基本设置中的站点URL是否正确。
服务器时间是否正确。
有些服务器可能会将Authorization头自行解析掉,比如apache2,因此需要设置成不解析这个头部。以apache2为例,具体设置方法请参考 https://help.aliyun.com/document_detail/31927.html?spm=a2c4g.11186623.6.637.wPbiue。
Cloudreve应用是否能被外网访问
7、开启二步验证时的二维码无法显示
执行:
composer require phpgangsta/googleauthenticator:dev-master
composer require endroid/qrcode
麻烦问一下大佬。我用的是宝塔,在网站根目录用官网的#安装开发版$ composer create-project hfo4/cloudreve:dev-master命令安装后,在根目录的是一个cloudreve文件夹,然后写了二级目录的伪静态后访问页面403啊?必须把文件夹里的文件移到网站根目录才能正常访问吗?
运行目录设置的对么?
最后配置成功但是进入网站登录界面全空,什么也没有?!请问何解?
去Github项目地址,首页有开发版安装,直接用那种方法没问题。
用那种方法装完后出现页面,未定义数组索引: themes,怎么办啊
我也是
404,您请求的文件不存在!
我的网站是在二级目录,伪静态配置文件在哪修改?好像按您的方法改了出错!
姿势不对
将根目录下的mysql.sql导入到你的数据库,请附上操作指南。小白不懂!
请问这个怎么更新啊......之前搭的有问题,去github提了说是新版修复了......然后我不知道怎么更新......
最简单的方法就是删掉源码,重新安装
主要是怕已经上传的东西看不到……这个站没法看onedrive已经有的文件,只有上传有记录的才会显示
请问一下大佬,我是按照步骤来的,最后的伪静态配置,是直接在宝塔nginx的配置修改里写吗?这程序算是在/www/wwwroot/域名?算二级目录吗?
直接在域名设置里有,伪静态设置,二级目录是你的域名目录的子目录,你这个应该是一级目录
为什么我上传快结束的时候就卡死了。/public/uploads/chunks这个我都给了777权限了。。
看是不是上传被限制了,一般默认情况下,php和nginx都会有上传大小限制
不对,我都改了,php50M,nginx 50M,改完都重启了。还是在结束的时候卡死
看下public/uploads/chunks有没有写入权限
游客无法下载文件,已在用户组中允许游客下载
我想问一下#程序在二级目录,xx为你的二级目录名,其中这个二级目录名指的是哪一个名字,博主能举个例子吗,谢谢了
xx名称不特指哪个,就是你把Cloudreve源码放到哪个二级目录就填哪个。
大佬,你的左栏那个文件,使用什么搭建的?还是你自己写的?
用的DirectoryLister,你在博客搜下关键词就可以找到教程。