Loading... 本文主打的就是一个CV,不讲原理只说过程  本文需要: - 云服务器 - 一个域名(使用国内服务器请准备一个实名域名) - 一个CloudFlare账号 - 电脑(不建议使用手机操作) - 手和脑子 ## 一、Cloudreve部署 ### 1.下载Cloudreve 本文使用的是官版Cloudreve 3.5.3,文末附件的普通下载是Github release页面,J8网盘提供的是编译好的二进制文件压缩包。  这里我们使用CentOS 8部署,就下载linux_amd64后缀的这个文件,为了方便笔者使用了宝塔面板,默认安装了**Nginx**(必须要有Nginx或者Apache,后续设置反向代理时会用到)。 ### 2.部署Cloudreve 先在系统目录中新建一个文件夹,出于个人习惯,笔者在`/www/wwwroot`目录下新建了一个名为`wangpan`的文件夹,并将下载好的二进制文件上传到这个文件夹中,如下图  如果你下载的压缩包没有问题的话,解压下来的文件应该就叫`cloudreve`如果是别的名字,比如`cloudreve.tar`那就说明你的解压软件出问题了,请直接上传压缩包到文件夹里,使用宝塔自带的解压功能进行解压。 然后打开SSH工具连接到服务器,或者直接使用宝塔提供的在线SSH也可以,输入命令`cd /www/wwwroot/wangpan`切换目录到`wangpan`文件夹中,然后输入命令`./cloudreve`,此时可能出现如下提示 ```shell [root@f wangpan]# ./cloudreve -bash: ./cloudreve: Permission denied ``` 这是因为文件没有执行权限,我们在宝塔中赋予文件权限,在宝塔中选中文件,点击最右侧的`更多`,选择`权限`  赋予文件744权限  再次执行命令 ```shell [root@f wangpan]# ./cloudreve ___ _ _ / __\ | ___ _ _ __| |_ __ _____ _____ / / | |/ _ \| | | |/ _ | '__/ _ \ \ / / _ \ / /___| | (_) | |_| | (_| | | | __/\ V / __/ \____/|_|\___/ \__,_|\__,_|_| \___| \_/ \___| V3.5.3 Commit #0e5683b Pro=false ================================================ [Info] 2022-11-11 22:17:57 初始化数据库连接 [Info] 2022-11-11 22:17:57 开始进行数据库初始化... [Info] 2022-11-11 22:17:57 初始管理员账号:admin@cloudreve.org [Info] 2022-11-11 22:17:57 初始管理员密码:7Dou3MZz [Info] 2022-11-11 22:17:57 开始执行数据库脚本 [UpgradeTo3.4.0] [Info] 2022-11-11 22:17:57 数据库初始化结束 [Info] 2022-11-11 22:17:57 初始化任务队列,WorkerNum = 10 [Info] 2022-11-11 22:17:57 初始化定时任务... [Info] 2022-11-11 22:17:57 当前运行模式:Master [Info] 2022-11-11 22:17:57 开始监听 :5212 ``` 看到上面的这段信息就说明你已经成功运行了Cloudreve了,刷新宝塔面板的页面,可以发现文件夹中多出来了一些文件  然后我们按照上面的命令行的提示,进入宝塔面板对端口进行放行,服务器默认开放在5212端口,点击宝塔面板左侧的`安全`,在右侧的空格中填写端口号和备注即可,然后点击`放行`即可开放端口。  >如果是使用的国内厂商云服务器,在宝塔放行后还需要在云服务器的后台控制面板中放行对应的端口号。 如果想自定义端口号,就打开`wangpan`文件夹中的`conf.ini`,修改里面的`Listen=5212`为你想要的端口号,笔者在这里将它修改为8868。(这一步是非必要的,选做)  ### 3.初始化Cloudreve >由于笔者的服务器已经部署了一个Cloudreve服务器,所以演示的时候使用的端口号为上面修改过的8868,初次部署可直接使用5212端口,下面为了方便读者理解,所有的端口号均写作5212,但实际是使用的8868 按照提示在浏览器中输入`http://服务器ip:5212`访问Cloudreve,使用第一次运行Cloudreve时提供的账号密码进行登录  然后点击右上角的头像,点击`管理面板`进入后台。  将看到这样的提示,不急着点击,先关闭Cloudreve的网页  打开宝塔面板,点击左侧的`网站`,点击`添加`按钮,新增一个网站  在新增网站后,点击网站最右侧的`设置`,找到`反向代理`,添加一个反代  反代配置如下  添加后,选择左侧的SSL选项,申请一个免费的SSL证书并开启强制SSL访问,然后访问你的链接,进入控制台。 网站信息修改这里不做介绍,都是中国话,能走到这一步的理解能力应该不差的。下面主要介绍一下配置储存策略。 ### 4.配置储存策略 进入控制面板,找到左侧的`储存策略`选项,点击进入  本文主要介绍如何配置Onedrive作为储存  选择Onedrive然后按照提示操作,如果出现以下提示请检查是否开启了站点强制SSL访问,或者是不是没有申请SSL证书  在配置时有一个是否使用反代的选项,暂时选不使用,后续会教大家如何配置反代  配置好Onedrive后应该是这个样子的  然后点击左侧的`用户组`,修改储存策略为Onedrive  ### 5.持久化运行 这里用最简单的方法实现持久化运行 先按`Ctrl C`(也就是复制的快捷键)停止Cloudreve运行,接着执行命令`yum install screen`安装`screen`,接着输入命令`screen -R wangpan`(这里的`wangpan`可以替换为你记得到的任何名字) 你会发现屏幕上面之前的文字全部清空了,然后输入命令`cd /www/wwwroot/wangpan`重新进入文件夹,接着和之前一样输入`./cloudreve`运行网盘程序,出现Log之后再按顺序按下`Ctrl A D`即可退出当前Screen。 访问绑定的域名,能够正常打开使用则说明已经实现了持久化运行。 到这里就完成了Cloudreve的全部部署流程,可以用了,但是有一个缺点就是访问比较慢,因为使用的是Onedrive,数据不在国内,那么下面简单介绍一下解决办法。 ## 二、部署Onedrive反代 >反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率。 ——姜大庆主编;邓荣副主编.Linux系统与网络管理:中国铁道出版社,2012.05:第282页 下面将简单介绍如何使用Cloudflare的免费服务对Onedrive服务器进行反代加速。为书写方便,将Cloudflare缩写为`CF`,如无特别注明,下文中的`CF`均指Cloudflare。笔者假定各位读者已经拥有了CF账号,且将自己的域名停靠在了CF,如果没有请自行搜索如何注册和停靠域名。 ### 1.部署反代脚本 进入CF的控制面板,点击左侧的`Workers`,点击创建服务   在创建服务后,点击页面右侧的`快速编辑`,将下方代码替换到左侧的代码区中 ```java // abc-my.sharepoint.com替换成你OneDrive的网址 const upstream = 'abc-my.sharepoint.com' const upstream_mobile = 'abc-my.sharepoint.com' // 下面的配置都不用动 const upstream_path = '/' const blocked_region = ['KP', 'SY', 'PK', 'CU'] const blocked_ip_address = ['0.0.0.0', '127.0.0.1'] const https = true const disable_cache = false const replace_dict = { '$upstream': '$custom_domain', '//sunpma.com': '' } addEventListener('fetch', event => { event.respondWith(fetchAndApply(event.request)); }) async function fetchAndApply(request) { const region = request.headers.get('cf-ipcountry').toUpperCase(); const ip_address = request.headers.get('cf-connecting-ip'); const user_agent = request.headers.get('user-agent'); let response = null; let url = new URL(request.url); let url_hostname = url.hostname; if (https == true) { url.protocol = 'https:'; } else { url.protocol = 'http:'; } if (await device_status(user_agent)) { var upstream_domain = upstream; } else { var upstream_domain = upstream_mobile; } url.host = upstream_domain; if (url.pathname == '/') { url.pathname = upstream_path; } else { url.pathname = upstream_path + url.pathname; } if (blocked_region.includes(region)) { response = new Response('Access denied: WorkersProxy is not available in your region yet.', { status: 403 }); } else if (blocked_ip_address.includes(ip_address)) { response = new Response('Access denied: Your IP address is blocked by WorkersProxy.', { status: 403 }); } else { let method = request.method; let request_headers = request.headers; let new_request_headers = new Headers(request_headers); new_request_headers.set('Host', upstream_domain); new_request_headers.set('Referer', url.protocol + '//' + url_hostname); let original_response = await fetch(url.href, { method: method, headers: new_request_headers }) connection_upgrade = new_request_headers.get("Upgrade"); if (connection_upgrade && connection_upgrade.toLowerCase() == "websocket") { return original_response; } let original_response_clone = original_response.clone(); let original_text = null; let response_headers = original_response.headers; let new_response_headers = new Headers(response_headers); let status = original_response.status; if (disable_cache) { new_response_headers.set('Cache-Control', 'no-store'); } new_response_headers.set('access-control-allow-origin', '*'); new_response_headers.set('access-control-allow-credentials', true); new_response_headers.delete('content-security-policy'); new_response_headers.delete('content-security-policy-report-only'); new_response_headers.delete('clear-site-data'); if (new_response_headers.get("x-pjax-url")) { new_response_headers.set("x-pjax-url", response_headers.get("x-pjax-url").replace("//" + upstream_domain, "//" + url_hostname)); } const content_type = new_response_headers.get('content-type'); if (content_type != null && content_type.includes('text/html') && content_type.includes('UTF-8')) { original_text = await replace_response_text(original_response_clone, upstream_domain, url_hostname); } else { original_text = original_response_clone.body } response = new Response(original_text, { status, headers: new_response_headers }) } return response; } async function replace_response_text(response, upstream_domain, host_name) { let text = await response.text() var i, j; for (i in replace_dict) { j = replace_dict[i] if (i == '$upstream') { i = upstream_domain } else if (i == '$custom_domain') { i = host_name } if (j == '$upstream') { j = upstream_domain } else if (j == '$custom_domain') { j = host_name } let re = new RegExp(i, 'g') text = text.replace(re, j); } return text; } async function device_status(user_agent_info) { var agents = ["Android", "iPhone", "SymbianOS", "Windows Phone", "iPad", "iPod"]; var flag = true; for (var v = 0; v < agents.length; v++) { if (user_agent_info.indexOf(agents[v]) > 0) { flag = false; break; } } return flag; } ``` 代码第一行提到的`abc-my.sharepoint.com`可以打开你的Onedrive页面,看上面的链接,替换到代码中即可。  ### 2.绑定域名 然后点击左下角的保存并部署,接着会跳转到Worker的页面,点击`触发器`,在第一个自定义域的地方点击`添加自定义域`   在添加后会出现正在初始化的提示,耐心等待一会儿  在等待证书生效的过程中,进入这个项目:[CloudflareSpeedTest](https://github.com/XIU2/CloudflareSpeedTest "CloudflareSpeedTest") ,这是一个CloudflareCDN测速的小工具,可以帮助你检测在你的网络环境下速度最快的CDNIP,使用方法在他的项目页面写有详细的[教程](https://github.com/XIU2/CloudflareSpeedTest/blob/master/README.md) 通过测速获得到一个最佳IP后,我们返回到CF的页面,可以看到证书已经变成`有效`,则说明这个自定义域已生效。  然后点击下面的`添加路由`,在第一行中填入你在上面添加的自定义域名 {fwalert type="warning"}这里的域名的末尾一定要加上/*{/fwalert}  接着点击页面左侧的`网站`,选择你停靠的域名  点击`DNS`,按照下图所示添加一个解析  如果出现下面的提示,则说明CF已经自动帮你选择了这个IP,但是为了使他不会自动使用别的IP,可以去Worker的页面里删除掉这个域名的`自定义域`,再次添加解析即可成功,CF也不会切换到别的CDN上去。  最后尝试打开你添加的这个域名,如果可以进到微软的登录页面即说明配置成功,如果不行请检查是否有哪一步没有做对。  将反代域名填写到Cloudreve中保存即可  随便上传一个文件到Cloudreve中,使用下载工具进行下载,观察下载链接是否是反代域名,如果是则说明部署成功。~~笔者在编写本文时不在常用网络环境下,故反代加速效果略差~~  ## 三、Aira2部署 这里使用[P3TERX](https://github.com/P3TERX "P3TERX")大佬的的[Aria2一键安装脚本](https://github.com/P3TERX/aria2.sh "一键安装脚本")进行安装。(下面的安装流程摘自[BT种子、磁力链接下载工具 - Aria2 一键安装管理脚本 增强版](https://p3terx.com/archives/aria2-oneclick-installation-management-script.html "BT种子、磁力链接下载工具 - Aria2 一键安装管理脚本 增强版"),使用命令均为CentOS系统命令) 使用SSH工具连接服务器,输入`cd /www/wwwroot/wangpan`进入之前创建的文件夹,依次输入以下命令 ```shell #安装依赖 yum install wget curl ca-certificates #下载脚本 wget -N git.io/aria2.sh && chmod +x aria2.sh #执行脚本 ./aria2.sh ``` 安装过程中遇到询问就把无脑y,在一段代码飞完之后出现以下菜单: ```shell Aria2 一键安装管理脚本 增强版 [v2.7.4] by P3TERX.COM 0. 升级脚本 ——————————————————————— 1. 安装 Aria2 2. 更新 Aria2 3. 卸载 Aria2 ——————————————————————— 4. 启动 Aria2 5. 停止 Aria2 6. 重启 Aria2 ——————————————————————— 7. 修改 配置 8. 查看 配置 9. 查看 日志 10. 清空 日志 ——————————————————————— 11. 手动更新 BT-Tracker 12. 自动更新 BT-Tracker ——————————————————————— Aria2 状态: 已安装 | 已启动 自动更新 BT-Tracker: 已开启 请输入数字 [0-12]: ``` 然后输入数字7修改配置,设置一个记得住的密码,并且修改下载目录为`/www/wwwroot/wangpan`这样他就会把离线文件下载到这个网盘文件夹中,也可以自己新建文件夹存放文件。在设置完文件夹后,记得修改文件夹的权限为`776`,然后进入Cloudreve管理页面,修改离线下载设置  填写完成后点击`测试Aria2通信`,出现绿色提示则说明能正常连接到Aria2服务。  至此,就完成了Cloudreve的部署并配置Onedrive作为储存,同时安装Aria2实现了离线下载功能。 最后修改:2022 年 11 月 12 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏
1 条评论
牛逼 学习来了