oracle cloud的免費服務器,大家都知道的吧,我之前注冊了三個賬號,申請了三臺arm的服務器,4c24g,4GB共享帶寬,除了一臺平時拿來google一下,另外的服務器都處于閑置狀態(tài),放在那兒實在可惜,正好最近又申請了阿里的云盤,有了1T的云盤,不拿來放點小姐姐實在是浪費呀,綜合以上信息,我想著弄一個BT下載服務器,將下載好的小姐姐放到阿里云盤里擴充庫存,于是有了后續(xù)折騰
折騰準備
工具
一臺服務器,系統(tǒng)基于Linux的任何發(fā)行版本都行
遠程登錄軟件,推薦finalshell,win,mac都可以用
建議各位最好限制下22端口的訪問權限,或者換成SSH Key登錄服務器,密碼真的不安全,個人建議哈
使用到的軟件:
前戲
1、咋登錄服務器我就不寫了,都會的吧,會的吧
2、我折騰都喜歡用docker,這樣可以避免宿主機安裝各種軟件(小潔癖),不玩了直接容器一刪,宿主機還跟新的一樣。所以第一步,我們安裝docker,安裝流程參考官方文檔即可。
如果你是debain,可能會遇到
command not found: sudo的問題,這個時候,你可以選擇安裝sudo,也可以選擇復制官方命令,刪除sudo,前提你是root用戶登錄的
3、給docker配置一個network,方便等會兒為各個容器指定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ěn)定,不能共享,還容易掉呀。
1、開啟阿里云盤webdav支持
開啟webdav使用的是開源項目webdav-aliyundriver,有疑問的可以直接翻看作者文檔
我這兒用的是作者提供的鏡像
啟動腳本創(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的認證密碼" \
-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是容器對外提供服務的端口,可以根據(jù)喜好修改
--name: 容器名,自己寫
-v /etc/localtime:/etc/localtime和-e TZ="Asia/Shanghai":這兩個是為了解決容器時間不對, 不用修改
/opt/aliyun-driver/:這個是存儲配置的目錄,可以配置自己喜歡的目錄
--ip 172.88.0.11和--network fan:這個是給容器配置IP和網(wǎng)絡的,用的準備里新建的網(wǎng)絡
啟動服務
sh /opt/aria2/start-webdav.sh
檢查服務,看下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>
為這個webdav取個名字,自己隨喜好
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
這個ip就是上面webdav啟動時配置的ip,8080是容器內服務的端口,外部服務器要訪問這個webdav,需要使用配置中映射的那個端口和宿主機的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的登錄名,這個根據(jù)上步創(chuàng)建時的設定填寫
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:
輸入密碼,這里不會有任何顯示,自己敲完密碼回車即可,密碼根據(jù)上步創(chuàng)建時的設定填寫
Confirm the password:
password:
再次輸入密碼,這里不會有任何顯示,自己敲完密碼回車即可,密碼根據(jù)上步創(chuàng)建時的設定填寫
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啟動任務
下面的命令第一行command需要修改,勿直接復制使用,修改點如下兩行
test:/:冒號前面對應的是上面rclone設置的name,冒號后面是你要掛載的網(wǎng)盤目錄,/表示根目錄
/mnt/cloud:這是是你服務器的目錄地址
上面兩個配置的完整意思為,把test這個網(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啟動與自啟設置
systemctl daemon-reload
# 設置自啟
systemctl enable rclone
# 啟動服務
systemctl start rclone
# 查看運行狀態(tài)
systemctl status rclone
如下圖則為啟動成功

接下來就可以進入掛載目錄查看網(wǎng)盤上的文件了,跟使用本地目錄一樣的體驗
安裝下載工具
市面上的下載工具千千萬萬,但是之前我用習慣了aria2,所以這次下載還是選擇aria2。
這貨支持各種常見的下載,也支持BT,PT,還能配合插件接管chrome的下載,可以說是比較全能了,而且像百度云的各種三方下載工具,里面也是這貨,所以不用不合適呀。
但是aria2的配置項很多,配置好壞對于下載的速度也會產(chǎn)生影響,所以在網(wǎng)上搜索了一下推薦配置,最后找到了一個github的開源項目Aria2-Pro,而且該項目也提供已經(jīng)封裝好的Docker鏡像,就更方便了。
- 編寫啟動腳本
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)絡設置,具體的根據(jù)掛載阿里云的說明
其他屬性自己去aria2-pro的作者官網(wǎng)看看吧
- 添加rclone的配置文件
掛載網(wǎng)盤那步我們執(zhí)行完rclone config后會有一個配置文件~/.config/rclone/rclone.conf,我們將該配置文件復制給aria2的容器
cp ~/.config/rclone/rclone.conf /opt/aria2/config
- 啟動容器
# 啟動容器
sh /opt/aria2/start-aria2.sh
# 查看容器狀態(tài)是否正常
docker ps -a
- 修改aria2-pro的配置
接下來,我們還需要修改一下/opt/aria2/config目錄下的script.conf配置
drive-name:網(wǎng)盤名稱,就是前面配置rclone時設置的name
drive-dir:網(wǎng)盤目錄,你想將文件放到網(wǎng)盤哪個目錄就配置哪個 - 重啟下aria2-pro容器
docker restart aria2-pro
aria2-pro:需要重啟的容器名,根據(jù)啟動腳本name配置
aria2的管理推薦chrome的擴展Aria2 for Chrome
結語
到這兒,當你用aria2下載完小姐姐后,數(shù)據(jù)會直接上傳到阿里云盤你指定的目錄下,就可以直接使用阿里云盤客戶端觀看下載的內容啦,一臺離線下載服務器就此完成,BT,PT,HTTP,F(xiàn)TP資源都能支持。
擴展的話可以安裝filebrower和nginx,通過nginx為所有服務提供統(tǒng)一的出入口,通過filebrower實現(xiàn)網(wǎng)頁管理和瀏覽相關文件
這兩個工具的安裝和配置有時間再寫了