Loading... # 前言 > 最近做的项目用到个网盘下载,需求主要是上传的文件可以私密分享,类似百度网盘,找了很多最后发现还是nextcloud可以实现我的需求,在安装的过程中,发现了一些配置上的坑,翻看很多教程有的都没有讲清楚,于是就有了这篇文章。 # 准备环境 | 环境 | 版本 | | - | - | | 宝塔Linux正式版 | 7.4.2 | | PHP | 7.2 | | MYSQL | 5.5.62 | | CENTOS | 7x64 | # 安装Rclone并关联OneDrive ## 1. Rclone NextCloud是不能够直接使用OneDrive的,我们需要利用Rclone(Rclone是一个用于和同步云平台同步文件和目录命令行工具)这个中间件将OneDrive挂载到Centos本地,然后NextCloud才可以使用Centos上挂载的目录。 先登录ssh,输入以下命令: ```bash #安装依赖 yum install fuse -y #安装主程序 curl https://rclone.org/install.sh | sudo bash ``` ## 2. 获取OneDrive access_token 这一步需要安装Rclone Windows客户端,通过Rclone Windows客户端去请求OneDrive获取对应账户下access_token,这里要说明的是教育版OneDrive是不能使用此方法获得access_token的,如果想使用教育版的OneDrive貌似需要校园管理员开通对应权限才可以。 Rclone Windows客户端下载地址: [1.52.3Win64客户端下载地址](https://downloads.rclone.org/v1.52.3/rclone-v1.52.3-windows-amd64.zip) [1.52.3Win32客户端下载地址](https://downloads.rclone.org/v1.52.3/rclone-v1.52.3-windows-386.zip) [最新客户端下载地址](https://rclone.org/downloads/) 下载完毕,将压缩包中的 `rclone.exe`解压到 `C:\Windows\System32`文件夹下,这样可以在cmd中直接使用rclone命令。 打开cmd命令,输入: ```bash rclone authorize "onedrive" ``` 此时浏览器会弹出 OneDrive 授权页面,授权完成后将得到下方的一串access_token,保存好,备用。  ## 3. 配置Rclone 回到ssh管理界面,输入以下命令: ```bash #执行rclone config 配置 OneDrive rclone config ```  此处输入 ``n``,代表的是新建一个连接配置。 接下来会让你输入一个配置的名字,输入完毕后,会让你选择OneDrive对应的数字编码:  因为Rclone也是随时更新支持平台的,在输入数字的时候一定要看一下,我安装的时候OneDrive对应的数字是 ``23``。 接下来会提示要求输入 ``client_id、client_secret、Edit advanced config`` ,这三个配置直接回车就可以,默认都是不配置。 当命令提示要求输入 ``Use auto config``的时候,这里记的要输入 ``n`` 开始配置OneDrive。 当命令提示要求输入 ``result``的时候,我们将第二步中获得的 ``access_token``完整的粘贴  ``access_token``填充完毕后会要求你选择OneDrive类型,此处我是个人版的,输入1。  接下来是确认信息的环节,没有错误的话回车即可,直到要求退出环节,输入q就安装配置完毕了。 ## 4. 挂载OneDrive到本地 **重点:** **如果你在宝塔上安装NextCloud的站点开通了 ``防跨站攻击``的选项,我们在挂载OneDrive的时候就需要将OneDrive挂载到NextCloud站点的目录下面,不然你在NextCloud中填写路径的时候会报错!!** 在挂载OneDrive之前我们需要先安装NextCloud,安装过程我就不写了。 由于我宝塔中的NextCloud站点的 ``防跨站攻击``选项我没有关闭,所以我将OneDrive挂载到了NextCloud站点的子目录下,见下方命令: ```bash mkdir /www/wwwroot/网站目录/onedrive #建立onedrive挂载目录 #挂载命令1(如果你是按照我的教程写的配置) rclone mount onedrive: /网站目录/onedrive --copy-links --no-gzip-encoding --no-check-certificate --allow-other --allow-non-empty --umask 000 #挂载命令2(如果你是自定义的配置) rclone mount 服务名:/远程路径 /本地路径 --copy-links --no-gzip-encoding --no-check-certificate --allow-other --allow-non-empty --umask 000 ``` 回车后 SSH 会停留在当前命令,如果一切正确无误,不会出现报错。 接下来到宝塔首页中你会看到我们挂载成功的一个5G容量的磁盘。  ## 5. 设置Rclone开机自启并自动挂载OneDrive 由于 rclone 仅能在前台运行,SSH 断掉就失效了,此处我们需要建立一个rclone的服务并让其开机自启: ```bash vi /usr/lib/systemd/system/rclone.service ``` 将以下代码复制到 ``rclone.service``中 ```bash [Unit] Description=rclone [Service] User=root ExecStart=/usr/bin/rclone mount onedrive: /www/wwwroot/网站目录/onedrive --copy-links --no-gzip-encoding --no-check-certificate --allow-other --allow-non-empty --umask 000 Restart=on-abort [Install] WantedBy=multi-user.target ``` 退出vi并保存: 按 ``esc``按钮,输入 ``:wq``回车。 分别在ssh中执行下方1、2行代码。 ```bash systemctl daemon-reload #加载新的unit 配置文件 systemctl start rclone.service #启动rclone服务 systemctl enable rclone.service #停止rclone服务 ``` 到此安装挂载结束。 最后修改:2020 年 08 月 26 日 10 : 47 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信