关于对电视盒子废物再利用的想法,为家里闲置的电视盒子刷入armbian作为一台离线下载服务器使用——OneDrive篇。
使用条件如下:
一台安装了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=65534
- PGID=65534
- 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}/onedrive-uploader:/onedrive-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、onedrive-uploader。
这个时候就可以打开AriaNg页面连接Aria2了。
如果你的电脑和搭建设备在同一个局域网下,只需要在浏览器输入 搭建设备IP:6880 即可进入AriaNg,然后如下图所示设置,将RPC地址改成你的搭建设备内网IP,密钥改为之前在启动配置设置的,页面刷新后Aria2状态变成已连接即可。
打开
如下设置后点 注册
进入刚刚注册的应用后记下应用程序ID
点击左侧的 API权限,点击 Microsoft Graph,搜索 'Files' ,勾选 Files.Read、Files.Read.All、Files.ReadWrite、Files.ReadWrite.All
继续搜索 'offline_access' ,勾选之后点击 更新权限,更新后权限如下
点击左侧 证书和密码->客户端密码->新客户端密码,创建一个客户端密码并记录,这个值只会显示一次,如果弄丢了重复此步骤即可。
然后找个地方创建一个新的文件夹(建议纯英文路径),下载电脑对应的onedrive-uploader*.exe到这个文件夹里并重命名为onedrive-uploader.exe。
按住Shift的同时鼠标右键点击文件夹内空白位置,点击 在此处打开Powershell窗口。
输入如下指令
.\onedrive-uploader.exe config #只输入这个,下面的是输出和选择
OneDrive Client ID: 填写之前记下的应用程序ID
OneDrive Client Secret: 填写之前记下的客户端密码
Available scopes:
1) Default (Files.Read, Files.ReadWrite, Files.Read.All, Files.ReadWrite.All, offline_access)
2) App Root (Files.ReadWrite.AppFolder, offline_access)
3) Custom
Select Scopes [1]: 1 #选1
Available Drive Roots:
1) Default (/drive/root)
2) App Root (/drive/special/approot)
3) Custom
Select Drive Root [1]: 1 #选1
Redirect URL? [http://localhost:53682/] #直接回车默认http://localhost:53682/
Save config? [C:\Users\Demo\AppData\Roaming\onedrive-uploader\config.json] #直接回车默认
Config written to: C:\Users\Demo\AppData\Roaming\onedrive-uploader\config.json #这是我的配置文件保存地址,每个人都不一样,记住自己的
接下来继续输入
.\onedrive-uploader.exe login #如果弹出网络权限请求,请通过
#回车后会输出一串网址,复制后粘贴到浏览器打开,接受应用程序授权之后页面显示如下
OneDrive Uploader
Received authorization code from Microsoft Graph API.
Please return to your terminal now.
#这个时候返回终端显示
Login successful.
Login successful之后找到生成的配置文件,本次演示即 C:\Users\Demo\AppData\Roaming\onedrive-uploader\config.json
将配置文件复制出来后面要用到
现在回到armbian的SSH继续操作
cd /root/aria2/onedrive-uploader #进入之前aria2安装后生成的onedrive-uploader文件夹
wget https://github.com/virtualzone/onedrive-uploader/releases/download/v0.8.1/onedrive-uploader_linux_arm64_v0.8.1 -O onedrive-uploader #将下载链接替换为对应你系统版本的链接
chmod +x onedrive-uploader
touch upload.sh && chmod +x upload.sh #创建upload.sh上传脚本并赋予可执行权限
#并将之前复制的配置文件config.json上传到这个目录
将下面的代码复制到创建的upload.sh文件内保存
#!/bin/bash
GID="$1";
FileNum="$2";
File="$3";
MaxSize="15728640";
RemoteDIR="/";
#上传到Onedrive的路径,默认为根目录,如果要上传到HEITAO2目录,""里面请填成HEITAO2
LocalDIR="/downloads/";
#Aria2在docker内的下载目录,记得最后面加上/
Uploader="/onedrive-uploader/onedrive-uploader";
#上传工具在docker内的路径
Config="/onedrive-uploader/config.json";
#配置文件在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
if [ -f "${FileLoad}" ]; then
${Uploader} -c "${Config}" upload "${FileLoad}" "${RemoteDIR}"
else
newRemoteDIR="${RemoteDIR}/${tmpFile}"
${Uploader} -c "${Config}" mkdir "${newRemoteDIR}"
for file in ${FileLoad}/*
do
${Uploader} -c "${Config}" upload "${file}" "${newRemoteDIR}"
done
fi
if [[ $? == '0' ]]; then
rm -rf "${FileLoad}";
fi
IFS=$IFS_BAK
}
LoadFile;
测试网盘工具是否可用
./onedrive-uploader -c ./config.json mkdir test #在根目录新建test文件夹
查看onedrive网盘内是否有了新建的test文件夹
cd /root/aria2/aria2-config #进入容器生成的aria2配置文件夹目录
打开aria2.conf文件,找到如下配置并修改
on-download-complete=/config/script/clean.sh
#修改为
on-download-complete=/onedrive-uploader/upload.sh #此为容器内上传脚本的路径
重启docker使配置生效
docker restart aria2-pro
评论 (0)