oracle cloud的免費(fèi)服務(wù)器,大家都知道的吧,我之前注冊(cè)了三個(gè)賬號(hào),申請(qǐng)了三臺(tái)arm的服務(wù)器,4c24g,4GB共享帶寬,除了一臺(tái)平時(shí)拿來google一下,另外的服務(wù)器都處于閑置狀態(tài),放在那兒實(shí)在可惜,正好最近又申請(qǐng)了阿里的云盤,有了1T的云盤,不拿來放點(diǎn)小姐姐實(shí)在是浪費(fèi)呀,綜合以上信息,我想著弄一個(gè)BT下載服務(wù)器,將下載好的小姐姐放到阿里云盤里擴(kuò)充庫(kù)存,于是有了后續(xù)折騰
折騰準(zhǔn)備
工具
一臺(tái)服務(wù)器,系統(tǒng)基于Linux的任何發(fā)行版本都行
遠(yuǎn)程登錄軟件,推薦finalshell,win,mac都可以用
建議各位最好限制下22端口的訪問權(quán)限,或者換成SSH Key登錄服務(wù)器,密碼真的不安全,個(gè)人建議哈
使用到的軟件:
前戲
1、咋登錄服務(wù)器我就不寫了,都會(huì)的吧,會(huì)的吧
2、我折騰都喜歡用docker,這樣可以避免宿主機(jī)安裝各種軟件(小潔癖),不玩了直接容器一刪,宿主機(jī)還跟新的一樣。所以第一步,我們安裝docker,安裝流程參考官方文檔即可。
如果你是debain,可能會(huì)遇到
command not found: sudo的問題,這個(gè)時(shí)候,你可以選擇安裝sudo,也可以選擇復(fù)制官方命令,刪除sudo,前提你是root用戶登錄的
3、給docker配置一個(gè)network,方便等會(huì)兒為各個(gè)容器指定ip,方便配置nginx
docker network create --subnet 172.88.0.0/16 fan
fan是network的名字,subnet是子網(wǎng)網(wǎng)段,自己斟酌修改
4、創(chuàng)建文件目錄
mkdir -p /opt/aria2/config
掛載阿里云盤
阿里云盤最近很火呀,不限速,爽歪歪,還有各種第三方支持,很有玩頭
本次的思路是:借助第三方工具,開啟阿里云盤的webdav支持,再通過rclone將webdav掛載到服務(wù)器上
為什么不直接用三方工具掛載阿里云盤,因?yàn)椴环€(wěn)定,不能共享,還容易掉呀。
1、開啟阿里云盤webdav支持
開啟webdav使用的是開源項(xiàng)目webdav-aliyundriver,有疑問的可以直接翻看作者文檔
我這兒用的是作者提供的鏡像
啟動(dòng)腳本創(chuàng)建命令如下:
cat <<EOF > /opt/aria2/start-webdav.sh
#!/bin/bash
docker rm -f webdav
docker run -d \
-p 9876:8080 \
--name=webdav \
--restart=always \
--log-opt max-size=1m \
-v /etc/localtime:/etc/localtime \
-v /opt/aliyun-driver/:/etc/aliyun-driver/ \
-e ALIYUNDRIVE_REFRESH_TOKEN="阿里云的刷新token,看上面文檔獲取" \
-e ALIYUNDRIVE_AUTH_PASSWORD="webdav的認(rèn)證密碼" \
-e ALIYUNDRIVE_AUTH_USER-NAME="webdav的用戶名" \
-e JAVA_OPTS="-Xms8G -Xmx8G -Xmn4G" \
-e TZ="Asia/Shanghai" \
--ip 172.88.0.11 \
--network fan \
zx5253/webdav-aliyundriver
EOF
-p 9876:8080:9876是容器對(duì)外提供服務(wù)的端口,可以根據(jù)喜好修改
--name: 容器名,自己寫
-v /etc/localtime:/etc/localtime和-e TZ="Asia/Shanghai":這兩個(gè)是為了解決容器時(shí)間不對(duì), 不用修改
/opt/aliyun-driver/:這個(gè)是存儲(chǔ)配置的目錄,可以配置自己喜歡的目錄
--ip 172.88.0.11和--network fan:這個(gè)是給容器配置IP和網(wǎng)絡(luò)的,用的準(zhǔn)備里新建的網(wǎng)絡(luò)
啟動(dòng)服務(wù)
sh /opt/aria2/start-webdav.sh
檢查服務(wù),看下status字段是不是up狀態(tài)
docker ps -a

2、安裝rclone
- 參照官網(wǎng)一鍵搞定
curl https://rclone.org/install.sh | bash
- 配置rclone
rclone config
No remotes found - make a new one
n) New remote
s) Set configuration password
q) Quit config
n/s/q>
選新建,輸入:n
name>
為這個(gè)webdav取個(gè)名字,自己隨喜好
Option Storage.
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 / 1Fichier
\ "fichier"
2 / Alias for an existing remote
\ "alias"
3 / Amazon Drive
\ "amazon cloud drive"
4 / Amazon S3 Compliant Storage Providers including AWS, Alibaba, Ceph, Digital Ocean, Dreamhost, IBM COS, Minio, SeaweedFS, and Tencent COS
\ "s3"
5 / Backblaze B2
\ "b2"
6 / Better checksums for other remotes
\ "hasher"
7 / Box
\ "box"
8 / Cache a remote
\ "cache"
9 / Citrix Sharefile
\ "sharefile"
10 / Compress a remote
\ "compress"
11 / Dropbox
\ "dropbox"
12 / Encrypt/Decrypt a remote
\ "crypt"
13 / Enterprise File Fabric
\ "filefabric"
14 / FTP Connection
\ "ftp"
15 / Google Cloud Storage (this is not Google Drive)
\ "google cloud storage"
16 / Google Drive
\ "drive"
17 / Google Photos
\ "google photos"
18 / Hadoop distributed file system
\ "hdfs"
19 / Hubic
\ "hubic"
20 / In memory object storage system.
\ "memory"
21 / Jottacloud
\ "jottacloud"
22 / Koofr
\ "koofr"
23 / Local Disk
\ "local"
24 / Mail.ru Cloud
\ "mailru"
25 / Mega
\ "mega"
26 / Microsoft Azure Blob Storage
\ "azureblob"
27 / Microsoft OneDrive
\ "onedrive"
28 / OpenDrive
\ "opendrive"
29 / OpenStack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
\ "swift"
30 / Pcloud
\ "pcloud"
31 / Put.io
\ "putio"
32 / QingCloud Object Storage
\ "qingstor"
33 / SSH/SFTP Connection
\ "sftp"
34 / Sia Decentralized Cloud
\ "sia"
35 / Sugarsync
\ "sugarsync"
36 / Tardigrade Decentralized Cloud Storage
\ "tardigrade"
37 / Transparently chunk/split large files
\ "chunker"
38 / Union merges the contents of several upstream fs
\ "union"
39 / Uptobox
\ "uptobox"
40 / Webdav
\ "webdav"
41 / Yandex Disk
\ "yandex"
42 / Zoho
\ "zoho"
43 / http Connection
\ "http"
44 / premiumize.me
\ "premiumizeme"
45 / seafile
\ "seafile"
Storage>
選擇連接方式,輸入:webdav
Option url.
URL of http host to connect to.
E.g. https://example.com.
Enter a string value. Press Enter for the default ("").
url>
配置鏈接地址:輸入:http://172.88.0.11:8080
這個(gè)ip就是上面webdav啟動(dòng)時(shí)配置的ip,8080是容器內(nèi)服務(wù)的端口,外部服務(wù)器要訪問這個(gè)webdav,需要使用配置中映射的那個(gè)端口和宿主機(jī)的ip訪問
Option vendor.
Name of the Webdav site/service/software you are using.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value.
1 / Nextcloud
\ "nextcloud"
2 / Owncloud
\ "owncloud"
3 / Sharepoint Online, authenticated by Microsoft account
\ "sharepoint"
4 / Sharepoint with NTLM authentication, usually self-hosted or on-premises
\ "sharepoint-ntlm"
5 / Other site/service or software
\ "other"
vendor>
輸入:other
Option user.
User name.
In case NTLM authentication is used, the username should be in the format 'Domain\User'.
Enter a string value. Press Enter for the default ("").
user>
webdav的登錄名,這個(gè)根據(jù)上步創(chuàng)建時(shí)的設(shè)定填寫
Option pass.
Password.
Choose an alternative below. Press Enter for the default (n).
y) Yes type in my own password
g) Generate random password
n) No leave this optional password blank (default)
y/g/n>
輸入:y
Enter the password:
password:
輸入密碼,這里不會(huì)有任何顯示,自己敲完密碼回車即可,密碼根據(jù)上步創(chuàng)建時(shí)的設(shè)定填寫
Confirm the password:
password:
再次輸入密碼,這里不會(huì)有任何顯示,自己敲完密碼回車即可,密碼根據(jù)上步創(chuàng)建時(shí)的設(shè)定填寫
Option bearer_token.
Bearer token instead of user/pass (e.g. a Macaroon).
Enter a string value. Press Enter for the default ("").
bearer_token>
Edit advanced config?
y) Yes
n) No (default)
y/n>
輸入:n
--------------------
[test]
type = webdav
url = http://172.88.0.11:8080
vendor = other
user = test
pass = *** ENCRYPTED ***
--------------------
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d>
輸入:y
Current remotes:
Name Type
==== ====
test webdav
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
到此,rclone就配置好了,創(chuàng)建的配置文件保存在~/.config/rclone/目錄下
- 配置rclone啟動(dòng)任務(wù)
下面的命令第一行command需要修改,勿直接復(fù)制使用,修改點(diǎn)如下兩行
test:/:冒號(hào)前面對(duì)應(yīng)的是上面rclone設(shè)置的name,冒號(hào)后面是你要掛載的網(wǎng)盤目錄,/表示根目錄
/mnt/cloud:這是是你服務(wù)器的目錄地址
上面兩個(gè)配置的完整意思為,把test這個(gè)網(wǎng)盤的根目錄掛載到/mnt/cloud上
command="mount test:/ /mnt/cloud --cache-dir /tmp --allow-other --vfs-cache-mode writes --allow-non-empty"
cat > /etc/systemd/system/rclone.service <<EOF
[Unit]
Description=Rclone
After=network-online.target
[Service]
Type=simple
ExecStart=$(command -v rclone) ${command}
Restart=on-abort
User=root
[Install]
WantedBy=default.target
EOF
- rclone啟動(dòng)與自啟設(shè)置
systemctl daemon-reload
# 設(shè)置自啟
systemctl enable rclone
# 啟動(dòng)服務(wù)
systemctl start rclone
# 查看運(yùn)行狀態(tài)
systemctl status rclone
如下圖則為啟動(dòng)成功

接下來就可以進(jìn)入掛載目錄查看網(wǎng)盤上的文件了,跟使用本地目錄一樣的體驗(yàn)
安裝下載工具
市面上的下載工具千千萬萬,但是之前我用習(xí)慣了aria2,所以這次下載還是選擇aria2。
這貨支持各種常見的下載,也支持BT,PT,還能配合插件接管chrome的下載,可以說是比較全能了,而且像百度云的各種三方下載工具,里面也是這貨,所以不用不合適呀。
但是aria2的配置項(xiàng)很多,配置好壞對(duì)于下載的速度也會(huì)產(chǎn)生影響,所以在網(wǎng)上搜索了一下推薦配置,最后找到了一個(gè)github的開源項(xiàng)目Aria2-Pro,而且該項(xiàng)目也提供已經(jīng)封裝好的Docker鏡像,就更方便了。
- 編寫啟動(dòng)腳本
cat <<EOF > /opt/aria2/start-aria2.sh
#/bin/bash
cd `dirname $0`
docker rm -f aria2-pro
docker run -d \
--name aria2-pro \
--restart unless-stopped \
--log-opt max-size=1m \
-p 6888:6888/udp \
-p 6888:6888/tcp \
--ip 172.88.0.9 \
--network fan \
-e PUID=$UID \
-e PGID=$GID \
-e RPC_PORT=6800 \
-e LISTEN_PORT=6888 \
-e DISK_CACHE=4096M \
-e RPC_SECRET=123456789 \
-e SPECIAL_MODE=rclone \
-v $PWD/downloads:/downloads \
-v $PWD/config:/config \
p3terx/aria2-pro
EOF
--name:容器名,根據(jù)喜好來
--ip 172.88.0.9和--network fan:網(wǎng)絡(luò)設(shè)置,具體的根據(jù)掛載阿里云的說明
其他屬性自己去aria2-pro的作者官網(wǎng)看看吧
- 添加rclone的配置文件
掛載網(wǎng)盤那步我們執(zhí)行完rclone config后會(huì)有一個(gè)配置文件~/.config/rclone/rclone.conf,我們將該配置文件復(fù)制給aria2的容器
cp ~/.config/rclone/rclone.conf /opt/aria2/config
- 啟動(dòng)容器
# 啟動(dòng)容器
sh /opt/aria2/start-aria2.sh
# 查看容器狀態(tài)是否正常
docker ps -a
- 修改aria2-pro的配置
接下來,我們還需要修改一下/opt/aria2/config目錄下的script.conf配置
drive-name:網(wǎng)盤名稱,就是前面配置rclone時(shí)設(shè)置的name
drive-dir:網(wǎng)盤目錄,你想將文件放到網(wǎng)盤哪個(gè)目錄就配置哪個(gè) - 重啟下aria2-pro容器
docker restart aria2-pro
aria2-pro:需要重啟的容器名,根據(jù)啟動(dòng)腳本name配置
aria2的管理推薦chrome的擴(kuò)展Aria2 for Chrome
結(jié)語
到這兒,當(dāng)你用aria2下載完小姐姐后,數(shù)據(jù)會(huì)直接上傳到阿里云盤你指定的目錄下,就可以直接使用阿里云盤客戶端觀看下載的內(nèi)容啦,一臺(tái)離線下載服務(wù)器就此完成,BT,PT,HTTP,F(xiàn)TP資源都能支持。
擴(kuò)展的話可以安裝filebrower和nginx,通過nginx為所有服務(wù)提供統(tǒng)一的出入口,通過filebrower實(shí)現(xiàn)網(wǎng)頁管理和瀏覽相關(guān)文件
這兩個(gè)工具的安裝和配置有時(shí)間再寫了