最简单自建BT离线下载+自动上传OneDrive网盘

为什么要自建离线下载

为什么不用百度网盘或者115?如果你只是下载一些简单的电影资源用百度网盘完全没问题,但要是你想下原盘、Remux、4K百度网盘怕是找不到,受制于上传文件大小限制,动则40多G的资源不好上传,只能通过分卷压缩或者其它手段上传资源,事实上除了单机游戏这么干,电影资源我没看到几个人这么干。

115价格贵而且现在也没那么全能了,很多神秘代码都不让下了,原盘、Remux、4K 云端资源倒是很充足,基本也能秒离线,但是有些大文件剧集云端没有的,想离线都不行,比如18年底我准备下个220多G全职猎人的1080P资源,貌似云端没有资源不能秒离线,然后我想离线慢慢下应该也能下下来,结果直接给我失败,后来我用 FDM 下了近半个月才下完,并没断种的资源都离线不了,也让我对 115 的离线下载能力产生怀疑。

对于玩 PT 的,自建离线下载可以7×24小时不间断做种,当然如果你对 PT、原盘、神秘代码都没兴趣,也不常下一些冷门BT,还是不要折腾了。

    准备环境
  • 一台vps主机(如果还没有可以看看我收集的一些大硬盘VPS)
  • 推荐使用 CentOS 7 系统搭建
  • 一个 OneDrive 账号(5T账号的申请教程我就不写了,网上一堆,淘宝两三块钱就能买到)
  • 注:除了挂载OneDrive网盘之外,还支持 Google Drive、Mege、Yandex等几十个国外网盘。

SSH登录服务器开搞

如果你从没用过VPS虚拟服务器,SSH是什么也不知道的小白的话可以去我《自建SSR翻墙》的教程篇看看,里面有服务器购买安装和连接教程。

先安装小z大佬的CCAA傻瓜一键式脚本,直接整合了aria2下载工具、AriaNg前端显示面板(直观的操作界面)、Caddy filemanager文件管理(直观的对下载文件进行管理)。
复制下面的命令,一行一个,粘贴到SSH客户端里回车执行。

yum -y install wget unzip curl  #安装wget unzip
wget https://github.com/helloxz/ccaa/archive/master.zip  #下载ccaa压缩包
unzip master.zip && cd ccaa-master && sh ccaa.sh  #解压并安装ccaa
出现下面界面输入1安装CCAA。

CentOS 7 + Caddy + Aria2 + AriaNg一键安装脚本,简称CCAA
1) 安装CCAA
2) 卸载CCAA
3) 更新bt-tracker
q) 退出!
:1
根据提示设置下载路径、RPC密钥、用户名、密码。这些填的都要记住,稍后要用到,这里我强调下我设置下载路径为/data/download,这个在教程后面挂载网盘时会用到,小白怕出错可以完全按照我的来填写。

设置下载路径(请填写绝对地址,默认/data/ccaaDown):/data/download
Aria2 RPC 密钥:(字母或数字组合,不要含有特殊字符):2ha123
设置Caddy用户名:2ha
设置Caddy密码:2ha123
安装完成后会看到如下提示,请务必记住RPC密钥、用户名、密码等信息。

大功告成,请访问: http://140.82.14.32:6080/
用户名: 2ha
密码: 2ha123
Aria2 RPC 密钥: 2ha123
帮助文档: https://doc.xiaoz.me/#/ccaa/ (必看)
根据提示打开浏览器输入http://IP:6080/打开AriaNg界面,这里IP是你的服务器IP,自己替换掉,如我这里是http://140.82.14.32:6080/。进来后输入上一个步骤中设置的用户名和密码登录。




登录进来后会提示认证失败,点确定不用管,接着我们来认证,打开AriaNg设置RPC ,填写Aria2 RPC 密钥,填完点重新加载页面,Aria2 状态显示已连接就搞定了,可以愉快的下片了。




点击右上角文件管理按钮会跳转到FileManager这个网盘,在这里可以对下载文件进行管理。手动输入地址http://IP:6080/admin也可以进入FileManagerw。




设置下CCAA的开机自启
如果不设置可能导致挂载的网盘在服务器重启后掉盘,又得重新挂载,下面两行代码可以一起复制进去然后回车执行。

chmod +x /etc/rc.d/rc.local 
echo "/usr/sbin/ccaa start" >> /etc/rc.d/rc.local

下载完成自动上传OneDrive网盘

以下分三步这里做个简介:第一步是PC端获取网盘授权的token;第二步是在VPS里绑定获得的授权;第三步才是真正挂载到网盘上。因为OneDrive的授权需要在浏览器打开,而VPS没有图形界面,只能先在PC端获取授权,所以第一步和第二步有点重复。

1、先在windows(PC)端安装Rclone
登录Rclone官网下载Rclone的 windows 客户端


下载后解压将里面的rclone.exe移动到C:\Windows\System32这个目录,其它的可以删掉没关系,按 win+R 快捷键打开运行,输入 cmd 确定来打开cmd窗口,输入下面命令开始配置。

rclone config
输入rclone config命令后出现下图界面,按提示输入n回车创建个新的远程,然后提示输入name,名称随意但要记住,这里我填了remote

C:\Users\a2>rclone config
Current remotes:

Name                 Type
====                 ====
onedrive             onedrive

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> n   
name> remote
接着让你选择要挂载的网盘,这里OneDrive是19,填入19(不同版本序号可能会变化)。

Current remotes:

Name                 Type
====                 ====
onedrive             onedrive

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> n
name> onedrive
Type of storage to configure.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
 1 / A stackable unification remote, which can appear to merge the contents of several remotes
   \ "union"
 2 / Alias for a existing remote
   \ "alias"
 3 / Amazon Drive
   \ "amazon cloud drive"
 4 / Amazon S3 Compliant Storage Provider (AWS, Alibaba, Ceph, Digital Ocean, Dreamhost, IBM COS, Minio, etc)
   \ "s3"
 5 / Backblaze B2
   \ "b2"
 6 / Box
   \ "box"
 7 / Cache a remote
   \ "cache"
 8 / Dropbox
   \ "dropbox"
 9 / Encrypt/Decrypt a remote
   \ "crypt"
10 / FTP Connection
   \ "ftp"
11 / Google Cloud Storage (this is not Google Drive)
   \ "google cloud storage"
12 / Google Drive
   \ "drive"
13 / Hubic
   \ "hubic"
14 / JottaCloud
   \ "jottacloud"
15 / Koofr
   \ "koofr"
16 / Local Disk
   \ "local"
17 / Mega
   \ "mega"
18 / Microsoft Azure Blob Storage
   \ "azureblob"
19 / Microsoft OneDrive
   \ "onedrive"
20 / OpenDrive
   \ "opendrive"
21 / Openstack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
   \ "swift"
22 / Pcloud
   \ "pcloud"
23 / QingCloud Object Storage
   \ "qingstor"
24 / SSH/SFTP Connection
   \ "sftp"
25 / Webdav
   \ "webdav"
26 / Yandex Disk
   \ "yandex"
27 / http Connection
   \ "http"
Storage19
client_idclient_secret 直接不填回车;
Edit advanced config? 这里输入n回车;
Already have a token - refresh? 这里输入y回车,后面 VPS 里配置时是没有这个提示的,会出现下个自动配置选项,别手快直接y;
Use auto config? 这里输入y回车,后面VPS里配置时这步要选 n。
过程如下

Microsoft App Client Id
Leave blank normally.
Enter a string value. Press Enter for the default ("").
client_id>
Microsoft App Client Secret
Leave blank normally.
Enter a string value. Press Enter for the default ("").
client_secret>
Edit advanced config? (y/n) 
y) Yes
n) No
y/n> n
Remote config 
Already have a token - refresh?  
y) Yes
n) No
y/ny
Use auto config?  
 * Say Y if not sure
 * Say N if you are working on a remote or headless machine
y) Yes
n) No
y/n> y
接着浏览器会自动弹出窗口,然后登录你要挂载的OneDrive账号,征求许可接受就行了,直到出现下图成功提示。




返回cmd窗口出现以下界面,这里选1回车。

Choose a number from below, or type in an existing value
 1 / OneDrive Personal or Business  #个人和商用
   \ "onedrive"
 2 / Root Sharepoint site
   \ "sharepoint"
 3 / Type in driveID
   \ "driveid"
 4 / Type in SiteID
   \ "siteid"
 5 / Search a Sharepoint site
   \ "search"
Your choice>1
提示找到一个驱动器,让你选择,这里就一个选项0,那就填入0回车,然后问你是否okay,选y回车。

Found 1 drives, please select the one you want to use:
0: OneDrive (business) id=huioaeuiaeagioioieuiaaefe@#%gaege94#
Chose drive to use:>0
Found drive 'root' of type 'business'URL:https://jxjjxy-my.sharepoint.com/personal/meeaghvp_t_odmail_cn/Documents
Is that okay?
y) Yes
n) No
y/n> y
接着会出现一串长token,将下图红框内的整个复制,复制范围{"access_token":…………………………2019-04-21T16:41:25.1595637+08:00"},先保存到记事本,下面就要回到VPS操作了。




2、VPS安装Rclone

cd ~  #返回宿主目录
curl https://rclone.org/install.sh | sudo bash  #下载并安装rclone
rclone config  #配置Rclone
上面输入完rclone config回车后的过程就跟前面在PC端cmd窗口下配置步骤基本一样,这里就不重复了,只有Use auto config? 问你是否使用自动配置这步不同,这里选n回车,然后在出现的result>后面粘贴上你前面获得的token然后回车,接着还是跟前面一样操作,直到又回到如下图配置开头界面,输入q回车退出配置即可,到此我们完成了网盘的授权。

Name                 Type
====                 ====
onedrive             onedrive

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> q
3、自动上传设置

yum -y install vim*  #先安装下vim,也可以不安装用vi命令
vim /root/rcloneupload.sh  #创建并打开名为 rcloneupload.sh 的脚本,用来处理自动上载
vi命令给不懂的小白先科普下,上面代码vim /root/rcloneupload.sh,你可以把它理解为用记事本(vim)在root这个目录新建并打开了一个名为rcloneupload.sh的空白文档,接着就要编辑它,要编辑需要先按键盘的i键,这样我们就进入INSERT插入模式了,可以将光标移动到对应位置来修改文档内容。修改完要保存时按esc键来退出插入模式,然后保持英文输入法下输入:wq!回车就保存退出vim了。
这里复制以下全部内容粘贴进去,确保里面以下三个路径跟你前面设置的一致。记得检查下有没有复制漏了的部分,我用putty每次复制头部都会有两行缺失的情况,不知道怎么回事。想了解更多vi/vim命令可以看看这篇文章《vi/vim基本操作命令》
downloadpath='/data/download' #Aria2下载目录
name='remote' #配置Rclone时的name
folder='/backup' #网盘里的文件夹,如果是根目录直接留空

#!/bin/bash
filepath=$3     #取文件原始路径,如果是单文件则为/Download/a.mp4,如果是文件夹则该值为文件夹内第一个文件比如/Download/a/1.mp4
path=${3%/*}     #取文件根路径,如把/Download/a/1.mp4变成/Download/a
downloadpath='/data/download'    #Aria2下载目录
name='remote' #配置Rclone时的name
folder='/backup'     #网盘里的文件夹,如果是根目录直接留空
MinSize='10k'     #限制最低上传大小,默认10k,BT下载时可防止上传其他无用文件。会删除文件,谨慎设置。
MaxSize='15G'     #限制最高文件大小,默认15G,OneDrive上传限制。

if [ $2 -eq 0 ]; then exit 0; fi

while truedo
if [ "$path" = "$downloadpath" ] && [ $2 -eq 1 ]    #如果下载的是单个文件
    then
    rclone move -v "$filepath" ${name}:${folder} --min-size $MinSize --max-size $MaxSize
    rm -vf "$filepath".aria2    #删除残留的.aria.2文件
    exit 0
elif [ "$path" != "$downloadpath" ]    #如果下载的是文件夹
    then
    while [[ "`ls -A "$path/"`" != "" ]]; do
    rclone move -v "$path" ${name}:/${folder}/"${path##*/}" --min-size $MinSize --max-size $MaxSize --delete-empty-src-dirs
    rclone delete -v "$path" --max-size $MinSize    #删除多余的文件
    rclone rmdirs -v "$downloadpath" --leave-root    #删除空目录,--delete-empty-src-dirs 参数已实现,加上无所谓。
    done
    rm -vf "$path".aria2    #删除残留的.aria2文件
    exit 0
fi
done
保存后给予执行权限

chmod +x /root/rcloneupload.sh
然后编辑 Aria2 配置文件,在末尾加上一行on-download-complete=/root/rcloneupload.sh即可,后面为脚本的路径。重启 CCAA 使 Aria2 配置文件生效。

vim /etc/ccaa/aria2.conf  #编辑aria2配置文件
on-download-complete=/root/rcloneupload.sh  #末尾加上
ccaa restart  #重启ccaa
大功告成,赶紧去下个片试试吧

评论

  1. 完全按步骤,本机上复制的token, 粘贴到vps上就显示Failed to configure token:
    unexpected end of JSON input。这是为什么呢

    回复删除
    回复
    1. 不好意思,我的博客基本没人看也没人留言,今天才注意到。注意复制部分的是否有缺漏,从 { 开始到日期后面的 } 结束

      删除
  2. 小白一个,按照您的方法成功,来感谢的,另外,如何将网盘映射到本地硬盘?

    回复删除
  3. 设置号了我能通过ARIA2下载,但无法同步到ONE DRIVE,不知道问题在哪里

    回复删除
    回复
    1. 你可以下载张图片试试,或者试试手动上传,自动同步的话需要任务进入已完成才行,很多地方配置可能出问题,仔细检查下,不行就重置重新配置,尤其注意vi编辑时粘贴进去头部是否有缺失,用putty粘贴头部总会少内容,还有别忘了修改aria2配置文件后需要重启应用。

      删除
  4. 下载速度怎么样?下载电影什么的会被封vps帐号吗?望回复

    回复删除
    回复
    1. 当然会啊...所以拿国外vps不是搞什么一堆下载工具,而是先弄明白这个运营商是否抗投诉。否则一下载热门的电影,大概率凉凉。vps直接封。如果账号下有多台机器,也是二话不说直接没掉。写这种文章最好还是重点提醒下吧... ...

      删除
  5. 不知道大佬有没有遇到过这个问题,就是“on-download-complete”里的内容无法执行,文件下载成功了,但是上传不到onedrive,查看了aria2.log文件之后发现.sh文件已经执行了,但是并没有能够上传。
    请问您知道可能是什么情况么?

    回复删除
    回复
    1. 我自己来回答一下吧,给后面遇到类似问题的同学一点参考:

      通过rclone上传到网盘(比如onedrive)的操作需要读取rclone的相关配置,由于是以ccaa用户运行的,它会先查找/home/ccaa/.rclone. config文件,但是一开始可能并没有建这个文件,甚至该文件夹都不存在,由于查不到该.config文件,rclone会用其default的config,但显然与用户自己设置的网盘信息是不同的,所以上传会失败。
      用root权限直接使用rclone上传则没有问题,因为此时可以读到root用户下的config文件(位置是/root/.config/rclone/rclone.config),所以可以正常上传。
      解决办法很简单,先把/root/.config/rclone/rclone.config拷贝到/home/ccaa/.rclone.config,然后给文件夹和文件改至ccaa用户组:chown -R ccaa:ccaa /home/ccaa/.rclone.config
      chown -R ccaa:ccaa /home/ccaa/
      以上文件夹需要如此操作的原因是rclone运行过程中还会在/home/ccaa文件夹中创建临时config文件,所以需要文件夹的权限。另外上传用的脚本也需要如此操作。

      删除
    2. 你好,请问一下,/home/ccaa/.rclone. config这个是否有误?我的root用户的config文件位置是/root/.config/rclone/rclone.conf,是否是需要把这个rclone.conf拷贝到/home/ccaa/rclone.conf还是/home/ccaa/.config/rclone/rclone.conf或者是别的路径?需要把accounts文件夹也改为ccaa用户组吗?

      删除
    3. 对的,我写的时候笔误了,写config写习惯了,应该是conf,后来懒得改了(逃)
      只需按我说的改,只要注意config应该是conf就行了,其他没别的。accounts文件不要紧。
      如果拷了/home/ccaa/.rclone.conf不行的话试试 /home/ccaa/rclone.conf,我忘了那里有没有.了。

      删除
    4. 请问中间还有其他配置吗?我把rclone.conf复制到/home/ccaa/路径下了也试了/home/ccaa/.config/rclone/,还试了/home/ccaa/rclone,改了用户组,改了上传脚本的用户组,也不知道哪里出了问题,始终无法启动上传

      删除
    5. 还有rcloneupload.sh文件呀,你最好别按楼主的那样把rcloneupload.sh放root文件夹里,把他放/home/ccaa/或者/data/dowload/或者aira2所在文件夹都行,然后这个文件也要改权限改用户组。道理都是一样的。

      删除
    6. 我终于知道了,上传脚本的路径文件夹也要给到ccaa用户组,苍了个天啦

      删除
    7. 当然呀,所以我说不要放root文件夹里,否则很尴尬

      删除
    8. 好家伙,要是没有你的评论,我就G了。。终于搞定了

      删除
  6. 没有挂载 OneDrive ,能教一下如何挂载吗?
    而且名称前后不一致啊????

    回复删除
  7. 可以直接下载到挂载的OneDrive里吗

    回复删除
  8. 教程是不是有问题啊,我怎么都搞不定呢,就是不能上传到onedrive

    回复删除
  9. 如果下载有多个文件夹的种子的话只会自动上传第一个文件夹

    回复删除
  10. 现在是不是弄不到 ondriver 了。

    回复删除
  11. 403 Forbidden 了该怎么办

    回复删除

发表评论

添加评论

此博客中的热门博文

CentOS 7 简易搭建 V2Ray 科学上网翻墙工具(官方脚本)

低价大盘鸡frantech (大硬盘VPS G口带宽不限流量 适合做私有网盘离线下载)