关于对电视盒子废物再利用的想法,为家里闲置的电视盒子刷入armbian作为一台离线下载服务器使用——阿里云盘篇。
使用条件如下:
一台安装了armbian or 其他linux系统的设备
项目地址:
项目地址:
创建启动配置
mkdir aria2 && cd aria2 #创建aria2目录并进入,需确保创建的路径里没有中文
touch aria2-pro.yml #创建配置文件。
创建完配置文件后将下面的配置复制到aria2-pro.yml里
version: "3.8"
services:
Aria2-Pro:
container_name: aria2-pro
image: p3terx/aria2-pro
environment:
- PUID=0 #root用户UID或当前系统用户
- PGID=0 #root用户GID或当前系统用户
- UMASK_SET=022
- RPC_SECRET=12345678 #这里是设置RPC密钥,按需修改
- RPC_PORT=6800
- LISTEN_PORT=6888
- DISK_CACHE=64M
- IPV6_MODE=false
- UPDATE_TRACKERS=true
- CUSTOM_TRACKER_URL=
- TZ=Asia/Shanghai
volumes:
- ${PWD}/aria2-config:/config
- ${PWD}/alidrive-uploader:/alidrive-uploader
- ${PWD}/aria2-downloads:/downloads
network_mode: host
restart: unless-stopped
logging:
driver: json-file
options:
max-size: 1m
#这里是AriaNg页面的配置,不需要的话删掉即可
AriaNg:
container_name: ariang
image: p3terx/ariang
command: --port 6880 --ipv6
network_mode: host
restart: unless-stopped
logging:
driver: json-file
options:
max-size: 1m
修改完成后保存文件,执行下面的命令启动容器
docker-compose -f aria2-pro.yml up -d
ls #查看当前路径文件。
启动完成后在当前路径会新增三个文件夹,aria2-config、aria2-downloads、alidrive-uploader。
这个时候就可以打开AriaNg页面连接Aria2了。
如果你的电脑和搭建设备在同一个局域网下,只需要在浏览器输入 搭建设备IP:6880 即可进入AriaNg,然后如下图所示设置,将RPC地址改成你的搭建设备内网IP,密钥改为之前在启动配置设置的,页面刷新后Aria2状态变成已连接即可。
获取阿里云盘的 default_drive_id 和 refresh_token
登录网页版阿里云盘: https://www.aliyundrive.com
打开页面后按F12并刷新页面
根据下图指示获取 default_drive_id 和 refresh_token 并记录
开始配置云盘上传工具
作者原版arm64在aria2-pro的docker内运行缺少动态库,这里重新编译了一个可用的版本
cd /root/aria2/alidrive-uploader #进入之前aria2安装之后生成的alidrive_uploader文件夹
wget https://github.com/heitao2/heitao2/releases/download/alidrive/alidrive-arm64 -O alidrive #下载我编译的上传工具
wget https://github.com/heitao2/heitao2/releases/download/alidrive/config.yaml #下载配置文件
#如果不是arm64的系统请前往作者的项目地址获取其他版本文件https://github.com/aoaostar/alidrive-uploader/releases
chmod +x alidrive
打开编辑 /root/aria2/alidrive-uploader/config.yaml 文件并保存
debug: false
transfers: 3
proxy:
match_pattern:
retry: 3
ali_drive:
drive_id: xxxxxxx #此处填写之前记录的drive_id
refresh_token: xxxxxx #此处填写之前记录的refresh_token
root_path: /
#这个上传工具最后一次更新提交于 Jul 28, 2022
#好像并不能上传现在的阿里云盘资源库路径内,默认上传在备份盘里
测试网盘工具是否可用
touch test.txt
./alidrive -c ./config.yaml test.txt / #上传test文件夹
#需要注意的是如果在本机执行过上传指令后生成的日志缓存等文件是本机执行用户的权限
#如果本机是root用户执行,
查看网盘内是否有了test.txt
配置自动上传脚本
在当前目录创建一个upload.sh上传脚本并赋予可执行权限
touch upload.sh && chmod +x upload.sh
将下面的代码复制到创建的upload.sh文件内保存
#!/bin/bash
GID="$1";
FileNum="$2";
File="$3";
MaxSize="104857600";
#最大上传文件100G,按需修改,100*1024*1024=104857600
RemoteDIR="/";
#上传到阿里云盘的路径,默认为根目录,如果要上传到HEITAO2目录,""里面请填成HEITAO2
LocalDIR="/downloads/";
#Aria2在docker内的下载目录,记得最后面加上/
Uploader="/alidrive-uploader/alidrive";
#上传工具在docker内的路径
Config="/alidrive-uploader/config.yaml";
#配置文件在docker内的路径
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 "\033[33m${FileLoad} \033[0mtoo large to spik.\n";
return;
fi
${Uploader} -c ${Config} ${FileLoad} ${RemoteDIR}
if [[ $? == '0' ]]; then
rm -rf "${FileLoad}";
${Uploader} --clean
fi
IFS=$IFS_BAK
}
LoadFile;
调整aria2下载完成后执行指令
cd /root/aria2/aria2-config #进入容器生成的aria2配置文件夹目录
打开aria2.conf文件,找到如下配置并修改
on-download-complete=/config/script/clean.sh
#修改为
on-download-complete=/alidrive-uploader/upload.sh #此为容器内上传脚本的路径
重启docker使配置生效
docker restart aria2-pro
随便在AriaNg下载一个文件后看看是否上传到了网盘内。
此工具的常用指令,更多详情前往项目地址查看
由于阿里云盘限制了海外,海外机器无法上传,解决方法前往项目地址查看
Usage:
alidrive [OPTIONS] LocalPath RemotePath
Application Options:
-d, --debug Debug模式
-t, --transfers= 同时上传文件个数
-c, --config= 配置文件路径 (default: config.yaml)
-p, --proxy= API代理
-m, --match_pattern= 正则过滤
-v, --version 输出版本信息
-r, --retry= 请求超时最大重试次数
--refresh 刷新token
--clean 清空缓存,清理上传记录
--drive_id= 驱动id
--refresh_token= 刷新令牌
--root_path= 根目录路径
Help Options:
-h, --help Show this help message
Arguments:
LocalPath: 本地文件路径
RemotePath: 远程文件路径
至此。
{/card-describe}
评论 (0)