奇技淫巧 ·

Cloudreve+OneDrive私有云搭建教程

花了一天时间终于把私有云搭建完成了,因为基础差,不懂代码,所以翻阅了很多资料。在这里特地把一个写的比较齐全的搬运过来,方便大家学习,再次也感谢原作者。Rat's 以及Cat


 

说明:目前用的比较多的网盘有

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、安装宝塔


<span class="hljs-comment">#Centos系统</span>
<span class="hljs-attribute">yum</span> install -y wget &amp;&amp; wget -O install.sh http://download.bt.cn/install/install.sh &amp;&amp; sh install.sh

<span class="hljs-comment">#Ubuntu系统</span>
wget -O install.sh http://download.bt.cn/install/install-ubuntu.sh &amp;&amp; sudo bash install.sh

<span class="hljs-comment">#Debian系统</span>
wget -O install.sh http://download.bt.cn/install/install-ubuntu.sh &amp;&amp; bash install.sh

安装完成后,请安装

PHP 5.6

及以上的版本,

Nginx

mysql

。安装完成后再去左侧软件管理,找到

PHP

版本,点击设置,安装拓展,安装

fileinfo

,然后点击禁用函数,删掉

proc_open

proc_get_status


<span class="hljs-comment">#如果Fileinfo拓展安装失败,就是内存太小,我们可以添加swap,不适用于ovz</span>
<span class="hljs-number">1</span>、手动添加,方法查看:<span class="hljs-symbol">https:</span>/<span class="hljs-regexp">/www.moerats.com/archives</span><span class="hljs-regexp">/19/</span>。
<span class="hljs-number">2</span>、面板添加,找到左侧软件管理-系统工具-安装Linux工具箱,然后进入工具箱添加。

2、安装Composer


<span class="hljs-attribute">curl</span> -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer

3、使用Composer安装Cloudreve
解析域名到服务器,添加网站,根目录文件夹为

xx.com


使用命令:


<span class="hljs-attribute">cd</span> /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

服务器,请确保:


<span class="hljs-selector-tag">httpd</span><span class="hljs-selector-class">.conf</span>配置文件中加载了<span class="hljs-selector-tag">mod_rewrite</span><span class="hljs-selector-class">.so</span>模块。
<span class="hljs-selector-tag">AllowOverride</span> <span class="hljs-selector-tag">None</span>将<span class="hljs-selector-tag">None</span>改为<span class="hljs-selector-tag">All</span>。
#项目目录下的<span class="hljs-selector-class">.htaccess</span>已经配置好重写规则,如有需求酌情修改。

对于

Nginx

服务器,在配置文件添加以下代码:


<span class="hljs-comment">#程序在根目录</span>
location / {
   <span class="hljs-keyword">if</span> (!-e <span class="hljs-variable">$request_filename</span>) {
   rewrite  ^(.*)$  /index.php?s=/<span class="hljs-variable">$1</span>  last;
   <span class="hljs-built_in">break</span>;
    }
 }

<span class="hljs-comment">#程序在二级目录,xx为你的二级目录名</span>
location /xx/ {
    <span class="hljs-keyword">if</span> (!-e <span class="hljs-variable">$request_filename</span>){
        rewrite  ^/xx/(.*)$  /xx/index.php?s=/<span class="hljs-variable">$1</span>  last;
    }
}

这里是在网站》设置》伪静态里添加

6、后续操作
到此步时,系统已基本可以正常运行,但还需要进行一些后续操作。
1、登录后台(初始用户名:

admin@cloudreve.org

,初始密码:

admin

,后台

URl

http://你的域名/Admin

,登录后到设置-基本设置中检查站点

URL

是否正确)。
2、到用户管理页修改初始用户密码。
3、如果你需要使用二步验证功能,请使用命令:


cd /www/wwwroot/xx.com
composer <span class="hljs-keyword">require</span> phpgangsta/googleauthenticator:dev-master
composer <span class="hljs-keyword">require</span> endroid/qrcode

添加

Cron

定时任务:


<span class="hljs-bullet">* </span><span class="hljs-bullet">* *</span> <span class="hljs-bullet">* *</span> curl http://你的域名/Cron
<span class="hljs-bullet">* </span>如果你打算使用本地上传策略并且不准备开启外链功能,请将public/uploads目录设置为禁止外部访问、禁止脚本。

相关问题


<span class="hljs-number">1</span>、Composer安装Cloudreve时提示The requested PHP extension ext-XXX * is missing <span class="hljs-keyword">from</span> your system
这是PHP扩展未达到要求所致,Cloudreve需要curl、fileinfo、gd扩展支持,请先安装并启用这些扩展。

<span class="hljs-number">2</span>、安装成功后页面<span class="hljs-number">404</span>/No input file specified
URL重写规则未配置好,请检查。

<span class="hljs-number">3</span>、安装后首页提示“遇到错误”
请依次检查:
application/database.php是否存在,如果不存在请手动创建写入数据库信息。
runtime及其子目录是否有写入权限。
其他原因,编辑application/config.php打开debug模式,查看详细报错。

<span class="hljs-number">4</span>、头像无法显示/文件无法上传
检查fileinfo扩展是否被安装并启用。

<span class="hljs-number">5</span>、本地存储策略文件上传到<span class="hljs-number">4</span>mb时卡住
public/uploads/chunks目录没有写入权限,请分配写入权限。

<span class="hljs-number">6</span>、使用云存储策略时回调失败/获取的文件外链URL不对
依次检查:
后台-设置-基本设置中的站点URL是否正确。
服务器时间是否正确。
有些服务器可能会将Authorization头自行解析掉,比如apache2,因此需要设置成不解析这个头部。以apache2为例,具体设置方法请参考 https:<span class="hljs-comment">//help.aliyun.com/document_detail/31927.html?spm=a2c4g.11186623.6.637.wPbiue。</span>
Cloudreve应用是否能被外网访问

<span class="hljs-number">7</span>、开启二步验证时的二维码无法显示
执行:
composer <span class="hljs-built_in">require</span> phpgangsta/googleauthenticator:dev-master
composer <span class="hljs-built_in">require</span> endroid/qrcode

Onedrive对接说明

由于Onedrive策略上传方式为服务器中转,需要额外在服务器上运行一个任务处理进程。请确保您的Cloudreve版本大于或等于1.1.1。

1

进入Cloudreve后台管理面板 - 其他 - 任务队列

2

点击随机生成Token,点击保存设置并复制下生成的64位Token备用;

3

根据你的操作系统版本和架构请到到 https://github.com/HFO4/CloudreveTaskQueue/releases 下载对应的Cloudreve任务队列处理程序。

Linux系统:命令行模式输入命令“

<span style="font-family: Lucida Console;">uname -a</span>

”,可以显示系统版本。

对应的Cloudreve任务队列处理程序;此处以64位Linux为例,下载taskqueue_X.X_linux_amd64.tar.gz并解压。注意:此程序后续会进行更新,请不要照搬以下命令中的下载链接

Code

<span style="font-family: Lucida Console;">wget https://github.com/HFO4/CloudreveTaskQueue/releases/download/X.X/taskqueue_X.X_linux_amd64.tar.gz
tar -zxvf taskqueue_X.X_linux_amd64.tar.gz

</span>

或者手动下载到本地再用winscp之类的软件上传到ROOT机器里!

启动Cloudreve任务队列

1 赋予执行权限

Code

<span style="font-family: Lucida Console;">chmod +x ./taskqueue
</span>

2 编辑config.yaml文件,具体说明如下:

Code

<span style="font-family: Lucida Console;">#第2步中生成的Token
token: SOME_THING_HARD_TO_GUESS
#格式为:您的站点地址/Queue
api: http://127.0.0.1/Queue
#启动的进程数量
taskNum: 4
#轮询间隔
Duration: 1

</span>

3 启动任务队列

Code

<span style="font-family: Lucida Console;">./taskqueue
</span>

如果屏幕上打印出如下信息,则表示配置正确;

Code

<span style="font-family: Lucida Console;">Cloudreve Queue Go Version 1.0
Author: AaronLiu

2018/10/20 18:27:29 [INFO] Config information: {XXX https://XXX/Queue 4 1}
2018/10/20 18:27:29 [INFO] Basic Info: {"basePath":"XXX"}
2018/10/20 18:27:29 [Info] Thread 1 start
2018/10/20 18:27:30 [Info] Thread 2 start
2018/10/20 18:27:31 [Info] Thread 3 start
2018/10/20 18:27:32 [Info] Thread 4 start

</span>

4 使用nohup 或其他方式使其在后台运行,一下步骤以nohup为例;

SSH运行:screen
如果提示screen: command not found 命令不存在可以执行:yum install screen 或 apt-get install screen安装

Code

<span style="font-family: Lucida Console;">nohup ./taskqueue &amp; </span>
Cloudreve任务队列处理程序后台运行这样就可以了。

我们再登陆到Cloudreve网盘程序的后台 - 上传策略 - 添加 - Onedrive 中转

第一步获取的是:应用机密(密码/公钥) 复制好填在对应的地方就好了。

然后点击:知道了,返回到快速启动

第二步获取到的是:应用 ID(Client ID) 复制好填在对应的地方就好了。

填写完成后保存,跳转到Onedrive授权页后,登录你要用于存储的Onedrive账号(暂不支持国内世纪互联版),授权应用即可。

然后在后台 - 用户组 编辑或者新添加用户组 上传策略 选你刚刚添加的Onedrive上传策略就可以了。

添加计划任务

我用的是宝塔控制面板,所以在面板里 添加计划任务

注意

文件上传处理成功后不会立刻显示你上传成功的文件,还需要中转上传至Onedrive。Onedrive那边上传完成后 程序里面才会显示你刚才上传的文件。

Q&A

1 Onedrive策略哪些步骤是直传。那些需要经过服务器?

上传是经过服务器中转,下载不经过服务器。

2 Onedrive策略是否支持离线下载?

支持。

3 绑定账号时报错The reply uri specified in the request isn't using a secure scheme.

站点必须启用HTTPS,并在基本设置-站点URL中更改为正确的HTTPS链接,保存后重新点击添加上传策略页面中的链接创建应用并绑定账号

 

相关链接


参与评论