前言
相信使用win10的各位都多多少少体都验过OneDrive了,我的是国际家庭版Office 365,带全家桶还送1T OneDrive,组队购买只要60¥香得很!不过实际使用起来的话就emm...,速度比较不稳定,有时能满速,有时跟某D盘不分上下。(听说世纪互联版账号走国内服务器速度贼快?我没试过)
其实速度啥的我并不太在意,毕竟上面的价格已经很香了,OneDrive可能算是赠品吧😂。真正让人觉得可惜的是OneDrive的网页版被墙了,直接葬送了其跨平台数据共享的能力,想搞只能挂梯子。某度虽然也有网页版,但是大文件就要下客户端这点就很烦人,有时身在linux就很难受。
不过这倒让我想起了之前了解的OneIndex,一个能实现OneDrive网页版下载功能的软件,结果发现作者删库了(好像是怕被请喝茶?)。但是互联网是有记忆的,多亏了一些好心人的备份和记录,我最终还是找到了最后一次更新的源码,并且成功部署。速度的话还是老样,不过能有这个跨平台解决方案我真的很感动,向所有开源作者致敬。
2020-07-25,在此记录OneIndex目前最新的部署过程。
前置需求
OneIndex 可以部署在本地(localhost),也可以部署在远程服务器上,下载不走服务器流量直连微软那边。本地部署只能本地使用,而且win10本身就已经自带OneDrive客户端了,完全起不到跨平台的作用,所以pass(当然如果需要在非win平台上上传东西可以考虑)。本文介绍的是部署在服务器的教程,为此你需准备(需要一定动手能力):
- 微软账号(个人家庭企业教育都行)
- VPS(购买参考)
- nginx、php5.6+(部署参考,也可以使用宝塔这类现成lnmp)
- 域名+证书(申请参考,微软要求https没办法)
- OneIndex 源码(备份1,备份2)
准备好上面步骤后,下载OneIndex源码,修改以下文件:
- 修改 controller/AdminController.php,将
$redirect_uri = 'https://oneindex.github.io/';
替换为自己的域名 - 如果是世纪互联版,取消
index.php
中前面的两行注释
然后源码可以丢到事先准备好的目录下了,并赋予cache
和config
文件夹777权限。
接着修改 nginx 配置文件,下面是参考配置(需插入到http块下或单独成文件再include),按实际情况稍作修改。记得改完后检测配置文件是否成功并重启 nginx
server {
# 强制https
listen 80;
# 给oneindex准备的域名,下同
server_name od.oshinonya.com;
return 301 https://od.oshinonya.com$request_uri;
}
server {
listen 443 ssl http2;
server_name od.oshinonya.com;
index index.php index.html;
# 给oneindx准备的目录
root oneindex;
# 证书相关文件位置
ssl_certificate /usr/local/nginx/ssl/fullchain.cer;
ssl_certificate_key /usr/local/nginx/ssl/oshinonya.com.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers on;
ssl_session_timeout 1d;
ssl_session_cache builtin:1000 shared:SSL:10m;
# (可选)伪静态,配合oneindex去掉问号
if (!-f $request_filename){
set $rule_0 1$rule_0;
}
if (!-d $request_filename){
set $rule_0 2$rule_0;
}
if ($rule_0 = "21"){
rewrite ^/(.*)$ /index.php?/$1 last;
}
# PHP CGI
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location / {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
安装、配置
到此服务器那边已经没啥事了,可以用回当前PC了。登录Azure注册应用,点击新注册
名称自起,类型选哪个都行,重定向URI填给OneIndex准备的域名,然后点注册
进入该页面得到第一个参数:++应用程序(客户端)ID++,保存下来。
点击左边导航栏的API权限,点击添加权限,从右侧选择SharePoint,类型选择“委托的权限”,勾选MyFiles下的读写权限,最后点击下面的添加权限按钮。
点击左边导航栏的证书和密码,点击新客户端密码,按需填入说明和选择期限后点击添加
得到第二个参数:++用户机密++,保存下来。
接着访问分配给OneIndex的域名,进入引导安装界面,这里可能会卡在第一步的协议同意上,如果出现了无法同意的情况,可以打开浏览器开发者工具,将协议弹窗及遮罩层删掉,露出下一步的按钮。
点击下一步后会要求填写两个参数,填入上面拿到的两个参数,点击下一步(不用理右上角的蓝色按钮),之后可以绑定微软账号了。不出意外的话安装成功,进入后台修改密码和个性化配置吧(初始密码为oneindex
)
使用技巧
后台定时刷新缓存和token,可增加前台访问的速度,可以选择性加入 crontab 计划任务
# 每小时刷新一次token
0 * * * * /php目录/bin/php /oneindex目录/one.php token:refresh
# 每十分钟后台刷新一遍缓存
*/10 * * * * /php目录/bin/php /oneindex目录/one.php cache:refresh
在 OneDrive 目录里可以放置以下特定文件来实现加密或展示的功能
.password
(内填密码),该目录会被加密,要求输入密码访问。README.md
,访问该目录时下方显示README。
Comments | ?? 条评论