使用Oneindex搭建一个不限流量网盘

Oneindex 简介:

1598160102-07d9ac5f9f1edf9

OneIndex 是针对 Onedrive 网盘的一个开源程序。可以将 Onedrive 存储的文件展示,直链下载。支持视频在线播放,不占用服务器空间,而且不走服务器流量。

使用 Oneindex 搭建一个不限流量网盘

Oneindex 安装前准备:
安装前需要先申请 OneDrive 网盘,OneIndex 支持个人的 OneDrive 网盘,不过个人版的就算是扩容最大也才 15G,当然用来放一些文档是足够的,而如果你是用来放视频,那我推荐你申请 5T 的 OneDrive 网盘。

OneDrive 5T 申请方法:

打开 Office 365 Education:https://products.office.com/en-us/student?tab=students
填上如有乐享提供的临时邮箱:https://51.ruyo.net/8263.html
从临时邮箱获取的验证码及填写一些账号设置。

Oneindex 安装:
先去 Oneindex 开源地址:https://github.com/donwa/oneindex 下载

这里服务器用的宝塔版面,Nginx,注意 PHP 版本必须 5.6+。

跟正常部署网站一样,在宝塔版面建立新站点,上传 Oneindex 到新站点目录。

设置 Nginx 伪静态:

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;
}

然后打开域名进行安装,注意后台地址:https://xx.com/?/admin,默认密码是:oneindex 。

拓展:
如果你想离线 BT 下载到 OneDrive 网盘,可以使用 Aria2+Aria2Ng 。

Aria2 安装:

wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubiBackup/doubi/master/aria2.sh && chmod +x aria2.sh && bash aria2.sh

安装后可以使用 bash aria2.sh 查看修改 Aria2 配置。

AriaNg 安装:
下载 AriaNg:

跟正常部署网站一样,在宝塔版面建立新站点,上传 Aria2Ng 到新站点目录,绑定【域名】或者【IP:端口】即可。

打开【域名】或者【IP:端口】就可访问以 AriaNg 界面。

在AriaNg 设置界面填好 Aria2 地址及密钥等,显示已连接即可。

1598160105-d480f2575f368b1

使用 Oneindex 搭建一个不限流量网盘

部署 OneDrive 上传脚本:
这里使用的是萌咖大佬的脚本;(请忽略折叠部分脚本,脚本作者已经不再维护。)

脚本特点:脚本支持文件夹上传,支持获取文件的匿名直链,且只适用于 OneDrive 非个人版。

Github 地址:https://github.com/0oVicero0/OneDrive

脚本安装命令:

wget --no-check-certificate -qO- "https://raw.githubusercontent.com/0oVicero0/OneDrive/master/OneDrive.sh" |bash
运行命令 onedrive -a,将返回的网址复制到浏览器打开,再登陆你的 OneDrive for Business 账号,登陆成功后复制地址栏中的地址(复制包括 localhost 的所有链接地址),粘贴到 SSH 客户端里,敲回车键即可。

使用 Oneindex 搭建一个不限流量网盘

如果返回以下字段:It seems like we have a refresh token, so we are ready to go,那就是设置成功了。

如果你遇到 bash: onedrive: command not found 错误,则要在 /usr/local/etc/OneDrive 文件夹中,修改 onedrive 和 onedrive-d 脚本,在第二行都加上 export PATH=/usr/local/bin:$PATH 代码,保存 。然后先运行命令 export PATH=/usr/local/bin:$PATH ,再运行命令 onedrive -a 就行了。

命令使用:

#此命令只查看根目录文件
onedrive -l
#如果我们要查看根目录 root 文件夹里的文件
onedrive -l /root
#此命令默认上传到 OneDrive 根目录
onedrive '/root/1.txt'
#如果上传到指定文件夹,就需要加-f 参数
onedrive -f RATS '/root/1.txt' #上传到 OneDrive 根目录的 RATS 文件夹
onedrive -f RATS/RATS '/root/1.txt' #上传到 OneDrive 根目录 RATS 文件夹里的 RATS 文件夹
#此命令默认上传到 OneDrive 根目录
onedrive-d '/root'
#如果上传到指定文件夹,就需要加-f 参数
onedrive-d -f RATS '/root' #上传到 OneDrive 根目录的 RATS 文件夹
onedrive-d -f RATS/RATS '/root' #上传到 OneDrive 根目录 RATS 文件夹里的 RATS 文件夹
这是萌咖大佬使用 Golang 基于新的 API 写了个效率更高的上传工具,同时也修复了各种 Shell 版本遗留下来的小问题,该版本特点就是授权简单,无需依赖,单文件。

Github 地址:https://github.com/MoeClub/OneList/tree/master/OneDriveUploader

1、授权认证

点击右侧 URL 登录并授权,授权地址→传送门。

授权后会获取一个 localhost 开头打不开的链接,这里只需要记住 code ,也就是链接中 code= 和 & 中间的参数。

2、安装 OneDriveUploader

wget https://raw.githubusercontent.com/MoeClub/OneList/master/OneDriveUploader/amd64/linux/OneDriveUploader -P /usr/local/bin/
chmod +x /usr/local/bin/OneDriveUploader

3、初始化配置

#国际版,将 url 换成你上面复制的授权地址,包括 http://loaclhost。
OneDriveUploader -a "url"
#个人版(家庭版),将 url 换成你上面复制的授权地址,包括 http://loaclhost。
OneDriveUploader -ms -a "url"
#中国版(世纪互联),将 url 换成你上面复制的授权地址,包括 http://loaclhost。
OneDriveUploader -cn -a "url"

如果提示 Init config file: /path/to/file/auth.json 或者 Init config file: `/root/auth.json` 类似信息,则初始化成功。

4、使用命令

Usage of OneDriveUploader:
-a string
// 初始化授权
Setup and Init auth.json.
-b string
// 自定义上传分块大小, 可以提高网络吞吐量, 受限于磁盘性能和网络速度.
Set block size. [Unit: M; 5<=b<=60;] (default "10")
-c string
// 配置文件路径
Config file. (default "auth.json")
-n string
// 上传单个文件时,在网盘中重命名
Rename file on upload to remote.
-r string
// 上传到网盘中的某个目录, 默认: 根目录
Upload to reomte path.
-s string
// 要上传的文件或文件夹
Upload item.
-t string
// 线程数, 同时上传文件的个数. 默认: 2
Set thread num. (default "2")

5、命令示例

#将当前目录下的 Mark.jpg 文件上传到 OneDrive 网盘根目录
OneDriveUploader -s "Mark.jpg"
#将当前目录下的 Mark1.jpg 文件上传到 OneDrive 网盘根目录,并改名为 Mark2.jpg
OneDriveUploader -s "Mark1.jpg" -n "Mark2.jpg"
#将当前目录下的 Download 文件夹上传到 OneDrive 网盘根目录
OneDriveUploader -s "Download"
#将当前目录下的 Download 文件夹上传到 OneDrive 网盘 Test 目录中
OneDriveUploader -s "Download" -r "Test"
#将同目录下的 Download 文件夹上传到 OneDriv 网盘 Test 目录中,使用 10 线程
OneDriveUploader -t 10 -s "Download" -r "Test"
#将同目录下的 Download 文件夹上传到 OneDrive 网盘 Test 目录中,使用 15 线程,并设置分块大小为 20M
OneDriveUploader -t 15 -b 20 -s "Download" -r "Test"

Aria2 自动上传
将下面代码自己稍作修改后保存为 rcloneupload.sh 脚本文件。

#!/bin/bash
GID="$1";
FileNum="$2";
File="$3";
MaxSize="15728640";
Thread="3"; #默认 3 线程,自行修改,服务器配置不好的话,不建议太多
Block="20"; #默认分块 20m,自行修改
RemoteDIR=""; #上传到 Onedrive 的路径,默认为根目录,如果要上传到 MOERATS 目录,""里面请填成 MOERATS
LocalDIR="/usr/local/caddy/www/aria2/Download/"; #Aria2 下载目录,记得最后面加上/
Uploader="/usr/local/bin/OneDriveUploader"; #上传的程序完整路径,默认为本文安装的目录
Config="/root/auth.json"; #初始化生成的配置 auth.json 绝对路径,参考第 3 步骤生成的路径
if [[ -z $(echo "$FileNum" |grep -o '[0-9]*' |head -n1) ]]; then FileNum='0'; fi
if [[ "$FileNum" -le '0' ]]; then exit 0; fi
if [[ "$#" != '3' ]]; then exit 0; fi
function LoadFile(){
if [[ ! -e "${Uploader}" ]]; then return; fi
IFS_BAK=$IFS
IFS=$'n'
tmpFile="$(echo "${File/#$LocalDIR}" |cut -f1 -d'/')"
FileLoad="${LocalDIR}${tmpFile}"
if [[ ! -e "${FileLoad}" ]]; then return; fi
ItemSize=$(du -s "${FileLoad}" |cut -f1 |grep -o '[0-9]*' |head -n1)
if [[ -z "$ItemSize" ]]; then return; fi
if [[ "$ItemSize" -ge "$MaxSize" ]]; then
echo -ne "33[33m${FileLoad} 33[0mtoo large to spik.n";
return;
fi
${Uploader} -c "${Config}" -t "${Thread}" -b "${Block}" -s "${FileLoad}" -r "${RemoteDIR}"
if [[ $? == '0' ]]; then
rm -rf "${FileLoad}";
fi
IFS=$IFS_BAK
}
LoadFile;

授权 chmod +x /root/.aria2/rcloneupload.sh ,同时再 Aria2 配置文件中加上一行 on-download-complete=/root/.aria2/rcloneupload.sh ,重启 Aria2 生效。

如果你想上传到指定的文件夹,修改如下:

#上传到 Onedrive 里的 RATS 目录,参数改为:RemoteDIR="RATS";
#上传到 Onedrive 里的 RATS 目录里的 RATS 目录,参数改为:RemoteDIR="RATS/RATS";
下载 100% 后上传不了,一直卡在做种阶段解决方法:在 Aria2 配置文件里加入 seed-time=0 参数(意思是停止做种),重启 Aria2 就行了。
如果感觉上传速度较慢,可以编辑 /usr/local/etc/OneDrive/onedrive.cfg ,修改 threads 线程数,默认 2。可以修改为 5,建议别太高。

有时候我们在电脑上编辑一些脚本或者文件时,放到 linux vps 服务器上会出现问题,其实只需要安装 dos2unix 转换下格式就可以用了。

安装 dos2unix
#Centos
yum install dos2unix
转换文件
dos2unix /root/xx #文件位置

学习是一件漫长而又免费的事,转载请记得注明出处!
一同学习 » 使用Oneindex搭建一个不限流量网盘

一同学习资源库

依彤学习 MSDN原版