问题描述
本项目拟解决以下问题:
1、笔者的VPS服务器磁盘空间不够,希望可以扩大服务器的磁盘空间;
2、希望可以有一个个人网盘,既可以公网访问,用于写作时素材的分享下载链接;也可以当作私有云,存储备份文件;
3、由于国内的墙,网页版的OneDrive在国内打不开,导致Onedrive的使用场景非常受限,但是OneDrive在国内的下载速度还算可以,因此想要搭建一个中转服务器来处理OneDrive网页版无法使用的问题;
通过检索后,目前的主要方案是利用微软onedrive api将onedrive目录映射成一个云盘的程序来解决这类问题,而且目前(2022/07)这种利用VPS+OneDrive搭建个人网盘和扩容主要有以下的解决方案:
- OneIndex:作者已删库跑路…
- OneManager:搭建较简单,教程多【选择】
- rclone : 教程较少
因此,笔者最终选择OneManger+Onedrive+阿里云服务器(VPS)搭建5T大容量私有云,实现服务器磁盘扩容+可公有也可私有的个人网盘。过程中遇到了很多问题,在文中都进行了记录,最终完成后的demo如下:
准备工作
在搭建之前,需要准备以下:
1、服务器(Virtual Private Server,VPS,虚拟专用服务器)。可以选阿里云的香港轻量服务器,系统选择宝塔面板BT-panel6.0或者选Ubuntu。参考笔者的文章,服务器同时可以用来搭建个人网站和个人V*N机场)
2、域名。也很便宜,参考这篇文章里的购买方式。
3、OneDrive。
很多人推荐在淘宝购买很便宜的5T/25T存储空间的账号,但这是不安全的,开账户的大多是私人搭建的企业版OneDrive,有极高的封号概率,翻车的后果是所有账户都会被停用;而且管理员可以修改你所购买的账号和密码,所以不要走这条路…
微软对全球学生群体有永久免费提供的office365,学生可以用edu教育邮箱免费获取office365,有1T的OneDrive空间。无管理员,所以使用这种方式申请1T的one drive空间。(非学生也可以在网上找到临时教育邮箱的注册方法,注册临时教育邮箱后再申请)
方法很简单:打开官网,输入学校邮箱并验证完成office365注册,很快就申请完成了
注册OneDrive API
注册完OneDrive后,我们需要获取OneDrive账号的API。首先进入Microsoft Azure,登录账号密码后,点击新注册
名称随便填,然后选择“任何组织目录(任何 Azure AD 目录 – 多租户)中的帐户和个人 Microsoft 帐户(例如,Skype、Xbox) ”,url填写https://scfonedrive.github.io/
( 因为 OneManager 是这样要求的),点击注册。
将生成的客户端ID保存起来(其他两个不用)
点击证书与密码->新客户端密码,说明随便填,时间最长选3年
将生成的值保存起来(注意:这里如果不保存,后面就不显示了)
点击API权限,添加权限->Microsoft Graph->委托的权限,搜索 Files.ReadWrite.All并添加
完成之后,按照说明文档还需要点击用管理员同意才能拥有读写权限,但笔者进行到这一步,发现尝试了各种方法都没法完成权限设置。(注意:应该选择委托的 Files.ReadWrite.All(如上图),而不是应用程序的 Files.ReadWrite.All!)
于是,笔者开始电话了咨询,打了很多次微软的客服电话,咨询了好久,才知道我们学校的教育邮箱账号也是盗版的,客服也没法帮我开通管理员权限;于是我又咨询了学校信息中心的老师,暑期居然没上班,要我等上班时间线下去问…
笔者猜想这是因为学校老师和学生账号后缀是分开的,也许老师后缀的账号是正版的,学生账号只是子账号,这一点还没经过确认,等开学笔者再去询问,看能否开通一个正版账号。
(笔者在搭建完成后,试着选择了OneManager默认的ID和机密,但由于学校的账号不是正版的,也行不通…)
但都做到了这里了,也不好就此放弃,先暂且在淘宝买一个账号,完成搭建吧。等后续有了自己的账号再重新同步…
安装宝塔面板
接着需要安装一个宝塔面板,简单说,宝塔面板即使一个装在服务器上的管理面板,因为服务器大多是Linux系统,没有像window系统一样的可视化操作界面,宝塔面板相当于提供了一个可视化的管理界面。
如果已经有了服务器(笔者这里是Ubuntu系统),通过Mac的Finalshell连接服务器,然后通过以下命令安装宝塔面板:
wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh ed8484bec
笔者输入后,结果报错了:
查了一下,宝塔面板要求安装的VPS必须为没装过其它环境如Apache/Nginx/php/MySQL的新系统,而笔者已经通过LNMP搭建了个人网站(服务器已经有LAMP环境了),不是纯净系统了 。
不是干净系统能否安装?结果看到官方文档和宝塔论坛都回应不可操作,网上大部分教程也是建议格式化磁盘…
官方要求是纯净系统安装使用,已有环境安装面板是无法使用面板去管理已安装的环境,也不必引起不知因素的问题。
网上大部分教程都是通过宝塔进行OneManager的安装,但笔者这里为了防止个人网站出现不必要麻烦,接下来的安装将使用命令行进行。
新建网站站点
在安装OneManager之前,需要新建一个网站站点作为网盘的地址。
在添加网站前,需要先将域名解析到VPS服务器上。笔者是阿里云,进入阿里云域名管理后台,解析域名,添加记录值:
由于笔者的服务器已经安装了LNMP环境,LNMP脚本中网站又称为vhost,一个vhost就代表一个网站站点,一台VPS上可以同时有多个网站(vhost)。成功安装LNMP环境后,直接执行如下命令即可添加网站:
lnmp vhost add
之后会提示让你输入相应的网站信息,包括
- 域名(笔者是pan.ferryxie.com)
- 域名别称(例如访问ferryxie.com也会重定向到本站,但笔者这里不设置域名别称,还是输入pan.ferryxie.com)
- 网站数据路径以及日志路径直接默认即可(直接按回车)
- 如果跟笔者一样是WordPress建站,那么rewrite规则就选择wordpress
- 需要PHP,选择y;MySQL和SSL不需要,选择n(OneManager只要能运行 PHP 代码即可)
- 全部没有问题后按任易键即可完成网站添加:
root@iZj6caeuxxf7de8lbs6zauZ:~# lnmp vhost add
+-------------------------------------------+
| Manager for LNMP, Written by Licess |
+-------------------------------------------+
| https://lnmp.org |
+-------------------------------------------+
Please enter domain(example: www.lnmp.org): pan.ferryxie.com
Your domain: pan.ferryxie.com
Enter more domain name(example: lnmp.org *.lnmp.org): pan.ferryxie.com
domain list: pan.ferryxie.com
Please enter the directory for the domain: pan.ferryxie.com
Default directory: /home/wwwroot/pan.ferryxie.com:
Virtual Host Directory: /home/wwwroot/pan.ferryxie.com
Allow Rewrite rule? (y/n) y
Please enter the rewrite of programme,
wordpress,discuzx,typecho,thinkphp,laravel,codeigniter,yii2 rewrite was exist.
(Default rewrite: other): wordpress
You choose rewrite: wordpress
Enable PHP Pathinfo? (y/n) y
Enable pathinfo.
Allow access log? (y/n) y
Enter access log filename(Default:pan.ferryxie.com.log):
You access log filename: pan.ferryxie.com.log
Create database and MySQL user with same name (y/n) n
Add SSL Certificate (y/n) n
Press any key to start create virtul host...
Create Virtul Host directory......
set permissions of Virtual Host directory......
You select the exist rewrite rule:/usr/local/nginx/conf/rewrite/wordpress.conf
Test Nginx configure file......
nginx: [warn] conflicting server name "pan.ferryxie.com" on 0.0.0.0:80, ignored
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
Reload Nginx......
nginx: [warn] conflicting server name "pan.ferryxie.com" on 0.0.0.0:80, ignored
Reload service php-fpm done
================================================
Virtualhost infomation:
Your domain: pan.ferryxie.com
Home Directory: /home/wwwroot/pan.ferryxie.com
Rewrite: wordpress
Enable log: yes
Create database: no
Create ftp account: no
================================================
root@iZj6caeuxxf7de8lbs6zauZ:~#
安装OneManager
对于在VPS的部署方式说明得很简单,主要是通过对于Nginx和PHP进行解析和转发处理。
首先到OneManager-php 官方项目项目下载压缩包:
通过Finalshell上传到服务器,放到上面设置的目录里面,比如笔者这里是/home/wwwroot/pan.ferryxie.com
,并进行解压:
root@iZj6caeuxxf7de8lbs6zauZ:~# cd /home/wwwroot/pan.ferryxie.com
root@iZj6caeuxxf7de8lbs6zauZ:/home/wwwroot/pan.ferryxie.com# ls
OneManager-php-master.zip
root@iZj6caeuxxf7de8lbs6zauZ:/home/wwwroot/pan.ferryxie.com# unzip -o -d /home/wwwroot/pan.ferryxie.com OneManager-php-master.zip
然后修改 nginx config 文件,将 rewrite ^(.*) /index.php?/$1 last
写入到相应的 vhost 的 conf 文件中 :
root@iZj6caeuxxf7de8lbs6zauZ:/home/wwwroot/pan.ferryxie.com# cd /usr/local/nginx/conf/vhost/
root@iZj6caeuxxf7de8lbs6zauZ:/usr/local/nginx/conf/vhost# ls
pan.ferryxie.com.conf
root@iZj6caeuxxf7de8lbs6zauZ:/usr/local/nginx/conf/vhost# vim pan.ferryxie.com.conf
将 rewrite ^(.*) /index.php?/$1 last;
加入到 conf 文件中 。
修改域名解析后,按道理就可以直接通过域名访问并安装 OneManager 了。但是笔者却出现了403 forbidden… 检查测试了好久,才发现问题出现了路径不匹配上,如下的路径跟解压时候的路径不匹配,所以要将OneManager-php-maste下面的文件拉到pan.ferryxie.com下。
这样就可以通过域名访问并安装 OneManager 了
点击上图开始安装,下一步是选择语言,然后测试伪静态
这里测试失败了,可能是上一步的问题导致的。正常情况下,应该是点击后直接进入密码设置页。
所以在服务器中,将程序代码所在的目录的所有者修改为 www:www ;并且给 .data/config.php 读取写入权限。例如笔者的修改如下:
root@iZj6caeuxxf7de8lbs6zauZ:/usr/local/nginx/conf/vhost# chown -R www:www /home/wwwroot/pan.ferryxie.com/
root@iZj6caeuxxf7de8lbs6zauZ:/usr/local/nginx/conf/vhost# chmod 666 /home/wwwroot/pan.ferryxie.com/.data/config.php
修改完成后,再次进入刷新页面,完成安装后的页面如下。
然后点击管理添加 OneDrive ,标签与名称随便填写, Client ID 和 Client Secret 填写前文所说的的,输入后,跳转登录账号并接受许可。选择one drive盘。
这样就完成了个人网盘的搭建,可以进行设置,关于各个设置的内涵和方法可以参考这篇文章
有几点需要注意:
- 在OneDrive中修改文件,通过域名访问的也是同步修改后的文件。
- 笔者使用的主题是自带的tfo.html,这个主题没有管理员登录按钮,例如笔者可以设置通过 pan.ferryxie.com?login=admin的方式进入管理登录界面;也可以通过服务器的
vim /home/wwwroot/pan.ferryxie.com/.data/config.php
命令修改配置文件。 - 可以在OneDrive盘设置中通过设置/public路径作为公开文件,再设置/private路径作为私有文件,实现一个OneDrive同时使用公有个人网盘和私有个人网盘。
笔者设置完成后,最终效果如下:Ferry’s Cloud