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

  • 4
  • 123 views
  • A+
所属分类:有趣源码

Oneindex 简介:

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

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

Oneindex 安装前准备:

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

OneDrive 5T 申请方法:

 

Oneindex 安装:

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

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

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

设置 Nginx 伪静态:

  1. if (!-f $request_filename){
  2.     set $rule_0 1$rule_0;
  3. }
  4. if (!-d $request_filename){
  5.     set $rule_0 2$rule_0;
  6. }
  7. if ($rule_0 = "21"){
  8.     rewrite ^/(.*) /index.php?/$1 last;
  9. }

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

DemoWXLOG 云

 

拓展:

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

 

Aria2 安装:

  1. 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:https://pan.wxlog.cn/Other/AriaNg-1.1.0.zip

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

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

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

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

部署 OneDrive 上传脚本:

这里使用的是萌咖大佬的脚本;

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

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

 

脚本安装命令:

  1. 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 文件夹中,修改 onedriveonedrive-d 脚本,在第二行都加上 export PATH=/usr/local/bin:$PATH 代码,保存 。然后先运行命令 export PATH=/usr/local/bin:$PATH ,再运行命令 onedrive -a 就行了。

 

命令使用:

  1. #此命令只查看根目录文件
  2. onedrive -l
  3. #如果我们要查看根目录 root 文件夹里的文件
  4. onedrive -l /root
  5. #此命令默认上传到 OneDrive 根目录
  6. onedrive '/root/1.txt'
  7. #如果上传到指定文件夹,就需要加-f 参数
  8. onedrive -f RATS '/root/1.txt'  #上传到 OneDrive 根目录的 RATS 文件夹
  9. onedrive -f RATS/RATS '/root/1.txt'  #上传到 OneDrive 根目录 RATS 文件夹里的 RATS 文件夹
  10. #此命令默认上传到 OneDrive 根目录
  11. onedrive-d '/root'
  12. #如果上传到指定文件夹,就需要加-f 参数
  13. onedrive-d -f RATS '/root'  #上传到 OneDrive 根目录的 RATS 文件夹
  14. onedrive-d -f RATS/RATS '/root'  #上传到 OneDrive 根目录 RATS 文件夹里的 RATS 文件夹

 

Aria2 自动上传

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

  1. #!/bin/bash
  2. GID="$1";
  3. FileNum="$2";
  4. File="$3";
  5. MaxSize="15728640"
  6. RemoteDIR="";  #上传到 Onedrive 的路径,默认为根目录,如果要上传到指定目录,方法看文章最后面。
  7. LocalDIR="/home/www/download/";  #Aria2 下载目录,记得最后面加上/
  8. if [[ -z $(echo "$FileNum" |grep -o '[0-9]*' |head -n1) ]]; then FileNum='0'; fi
  9. if [[ "$FileNum" -le '0' ]]; then exit 0; fi
  10. if [[ "$#" != '3' ]]; then exit 0; fi
  11. function LoadFile(){
  12.   IFS_BAK=$IFS
  13.   IFS=$'\n'
  14.   if [[ ! -d "$LocalDIR" ]]; then return; fi
  15.   if [[ -e "$File" ]]; then
  16.     if [[ $(dirname "$File") == $(readlink -f $LocalDIR) ]]; then
  17.       ONEDRIVE="onedrive";
  18.     else
  19.       ONEDRIVE="onedrive-d";
  20.     fi
  21.     FileLoad="${File/#$LocalDIR}"
  22.     while true
  23.       do
  24.         if [[ "$FileLoad" == '/' ]]; then return; fi
  25.         echo "$FileLoad" |grep -q '/';
  26.         if [[ "$?" == "0" ]]; then
  27.           FileLoad=$(dirname "$FileLoad");
  28.         else
  29.           break;
  30.         fi;
  31.       done;
  32.     if [[ "$FileLoad" == "$LocalDIR" ]]; then return; fi
  33.     if [[ -n "$RemoteDIR" ]]; then
  34.       Option=" -f $RemoteDIR";
  35.     else
  36.       Option="";
  37.     fi
  38.     EXEC="$(command -v $ONEDRIVE)";
  39.     if [[ -z "$EXEC" ]]; then return; fi
  40.     cd "$LocalDIR";
  41.     if [[ -e "$FileLoad" ]]; then
  42.       ItemSize=$(du -s "$FileLoad" |cut -f1 |grep -o '[0-9]*' |head -n1)
  43.       if [[ -z "$ItemSize" ]]; then return; fi
  44.       if [[ "$ItemSize" -ge "$MaxSize" ]]; then
  45.         echo -ne "\033[33m$File \033[0mtoo large to spik.\n";
  46.         return;
  47.       fi
  48.       eval "${EXEC}${Option}" \'"${FileLoad}"\';
  49.       if [[ $? == '0' ]]; then
  50.         rm -rf "$FileLoad";
  51.       fi
  52.     fi
  53.   fi
  54.   IFS=$IFS_BAK
  55. }
  56. LoadFile;

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

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

  1. #上传到 Onedrive 里的 RATS 目录,参数改为:RemoteDIR="RATS"; 
  2. #上传到 Onedrive 里的 RATS 目录里的 RATS 目录,参数改为:RemoteDIR="RATS/RATS";
       下载 100% 后上传不了,一直卡在做种阶段解决方法:在 Aria2 配置文件里加入 seed-time=0 参数(意思是停止做种),重启 Aria2 就行了。

如果感觉上传速度较慢,可以编辑 /usr/local/etc/OneDrive/onedrive.cfg ,修改 threads 线程数,默认 2。可以修改为 5,建议别太高。

 

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

  1. 安装 dos2unix
  2. #Centos
  3. yum install dos2unix
  4. 转换文件
  5. dos2unix /root/xx   #文件位置

 

参考及整理:

OneIndex 部署教程,利用 OneDrive 打造专属分享型网盘

使用 Aria2+Aria2Ng+OneIndex+OneDrive 建立不限流量/离线 BT 下载/在线观看网盘

VPS 上传文件到 OneDrive 网盘脚本,可配合 Aria2 实现自动上传

 

历史上的今天:

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:4   其中:访客  2   博主  2

    • avatar nice 2

      看到那麽多代碼就怕了。。。

        • avatar 唯心寒辞  博主

          如果只是安装Oneindex,其实就跟我们建Wordpress一样简单,不,比建Wordpress更简单

        • avatar 奶爸de笔记 3

          不上车了,没有那么大的存储需求。

            • avatar 唯心寒辞  博主

              目前一般的网盘已经足够用了