前言

相信使用win10的各位都多多少少体都验过OneDrive了,我的是国际家庭版Office 365,带全家桶还送1T OneDrive,组队购买只要60¥香得很!不过实际使用起来的话就emm...,速度比较不稳定,有时能满速,有时跟某D盘不分上下。(听说世纪互联版账号走国内服务器速度贼快?我没试过)

其实速度啥的我并不太在意,毕竟上面的价格已经很香了,OneDrive可能算是赠品吧😂。真正让人觉得可惜的是OneDrive的网页版被墙了,直接葬送了其跨平台数据共享的能力,想搞只能挂梯子。某度虽然也有网页版,但是大文件就要下客户端这点就很烦人,有时身在linux就很难受。

不过这倒让我想起了之前了解的OneIndex,一个能实现OneDrive网页版下载功能的软件,结果发现作者删库了(好像是怕被请喝茶?)。但是互联网是有记忆的,多亏了一些好心人的备份和记录,我最终还是找到了最后一次更新的源码,并且成功部署。速度的话还是老样,不过能有这个跨平台解决方案我真的很感动,向所有开源作者致敬

2020-07-25,在此记录OneIndex目前最新的部署过程。

前置需求

OneIndex 可以部署在本地(localhost),也可以部署在远程服务器上,下载不走服务器流量直连微软那边。本地部署只能本地使用,而且win10本身就已经自带OneDrive客户端了,完全起不到跨平台的作用,所以pass(当然如果需要在非win平台上上传东西可以考虑)。本文介绍的是部署在服务器的教程,为此你需准备(需要一定动手能力):

准备好上面步骤后,下载OneIndex源码,修改以下文件:

  • 修改 controller/AdminController.php,将$redirect_uri = 'https://oneindex.github.io/';替换为自己的域名
  • 如果是世纪互联版,取消index.php中前面的两行注释

然后源码可以丢到事先准备好的目录下了,并赋予cacheconfig文件夹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注册应用,点击新注册

step1

名称自起,类型选哪个都行,重定向URI填给OneIndex准备的域名,然后点注册

step2

进入该页面得到第一个参数:++应用程序(客户端)ID++,保存下来。

step3

点击左边导航栏的API权限,点击添加权限,从右侧选择SharePoint,类型选择“委托的权限”勾选MyFiles下的读写权限,最后点击下面的添加权限按钮

step4

点击左边导航栏的证书和密码,点击新客户端密码,按需填入说明和选择期限后点击添加

step5

得到第二个参数:++用户机密++,保存下来。

接着访问分配给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。

主题美化

    添加新评论 | #

    Markdown Supported
    简单数学题:NaN + NaN =
    表情

    Comments | ?? 条评论

    • 单身为狗 21 年

    • 朝循以始 夜继以终

    • Blog: Von by Bersder

    • Alive: 0 天 0 小时 0 分

    Support:

    frame ssr server DNS music player

    © 2019-2021 ᛟᛊᚺᛁᚾᛟ

    back2top