Featured image of post 搭建一個 BT 離線下載伺服器

搭建一個 BT 離線下載伺服器

但願不要被版權投訴(

自從買了一些廉價 VPS 以後,手上就閒置了一台 Azure 的學生機,除了用來跑個 Trojan 暫時沒有其他的用途。正好最近想要下一些 BT 資源,而國內的 BT 環境懂的都懂,遂決定用這台接近閒置的機器離線下載 BT。

首先宣告,所有 BT 下載行為需要自行承擔被版權投訴的風險。

安裝 Aria2

對於這些不是「基礎設施」的軟件,我更喜歡直接拉取一個 Docker 容器的方案。我採用了P3TERX/Aria2-Pro-Docker1,這套已經修改好的 Docker 容器。Docker 容器部署起來如出一轍:首先編輯docker-compose.ymldocker compose up把所有容器都跑起來,最後反代暴露的埠即可。

我的docker-compose.yml如下2

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
services:
  Aria2-Pro:
    container_name: aria2-pro
    image: p3terx/aria2-pro
    environment:
      - PUID=65534
      - PGID=65534
      - UMASK_SET=022
      - RPC_SECRET=replace-me # 記得修改這一行
      - RPC_PORT=6800
      - LISTEN_PORT=6888
      - DISK_CACHE=64M
      - IPV6_MODE=false
      - UPDATE_TRACKERS=true
      - CUSTOM_TRACKER_URL=
      - TZ=Asia/Shanghai
    volumes:
      - ./aria2-config:/config
      - ./aria2-downloads:/downloads
    network_mode: bridge # 如果你需要用到 IPV6 網絡,也可以使用 host 模式
    ports:
      - 6800:6800
      - 6888:6888
      - 6888:6888/udp
    restart: unless-stopped
    # 防止日誌塞滿硬碟
    logging:
      driver: json-file
      options:
        max-size: 1m

  # 也可以使用其他面板
  AriaNg:
    container_name: ariang
    image: p3terx/ariang
    command: --port 6880 --ipv6
    network_mode: bridge
    ports:
      - 6880:6880
    restart: unless-stopped
    logging:
      driver: json-file
      options:
        max-size: 1m

用 Caddy 反向代理

之前的反向代理,我都是用的基於 Nginx 的方案,而在這段時間裏關於 Caddy 的好評不絕於耳,這次的我便換用了 Caddy,當然,主要也是想嘗試一些新東西、新技術。

Caddy 的使用真的非常簡單,即使對新人也極其友好,例如,常用的反向代理本機某個埠,只需三行 Caddyfile 即可搞定。

1
2
3
domain.com {
  reverse_proxy :1234
}

安裝 Caddy 請蔘考官方文件,例如,我的伺服器使用 Debian,則使用以下命令安裝:

1
2
3
4
5
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy

安裝完成後記得開放防火牆和從服務商策略組的 80 和 443 埠。

在域名服務商處將要繫結的域名指向伺服器,就可以開始寫 Caddyfile 了。我們需要反向代理三個埠,分別用作不同的用途。我的 Caddyfile 如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# Aria-NG 面板
download.l3zc.com {
  reverse_proxy :6880
}

# Aria2 API
arapi.l3zc.com {
  reverse_proxy :6800
}

# Alist
downloaded.l3zc.com {
  reverse_proxy :5244
}

看到如此簡潔的配置檔案,不由得感嘆,相比於 Nginx,Caddy 用起來真是令人心情舒暢。寫入配置完成後,重新啓動 Caddy3,就可以開始欣賞 Caddy 自動幫你申請 SSL 證書配置好 HTTPS 的絕贊過程。至此,反向代理的部分也就完成了。

配置 Aria-NG

Aria-NG 只是一個前端面板,可以和任何 Aria2 後端通訊,為此,我們需要給 Aria-NG 提供配置資訊。進入剛剛反代好的 Aria-NG 面板,轉到 AriaNG 設定,填入配置資訊。

在 AriaNG 面板內填入配置資訊

其中,RPC 地址是剛剛反代好的 RPC 地址,協議選擇 HTTPS,請求方法選擇 POST,RPC 金鑰是在docker-compose.ymlreplace-me處你所替換的值。

若「Aria2 狀態」旁出現「已連線」,説明配置正確。

用 Alist 對映下載目錄

我們透過 Alist 對映下載目錄,以更方便的檢視、管理和下載伺服器上已經下載好的檔案。Alist 同樣也透過 Docker 部署,由於 Alist 本身在容器內執行們,無法訪問容器外的檔案,部署時需要將 Aria2 的下載目錄提前 Bind 到 Alist 的容器下。

我的docker-compose.yml如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
services:
  alist:
    image: "xhofe/alist:latest"
    container_name: alist
    volumes:
      - "/etc/alist:/opt/alist/data"
      - "/home/azureuser/aria2/aria2-downloads:/aria2-downloads" #這裏需要視情況繫結你自己的目錄
    ports:
      - "5244:5244"
    environment:
      - PUID=0
      - PGID=0
      - UMASK=022
    restart: unless-stopped

第一次啓動 Alist 時,Alist 會隨機生成admin用戶的密碼,所以,第一次啓動這套編排時,最好不要帶-d引數,而是直接docker compose up,並把容器啓動後的輸出妥善儲存。如果不小心沒有儲存管理員密碼,可以用這個命令重新隨機生成一個:

1
docker exec -it alist ./alist admin random

成功登入 Alist 之後就可以開始掛載目錄了。

掛載 Aria2 的下載目錄

驅動選擇本機儲存,掛載路徑需要注意,按照我的編排,我將容器外的/home/azureuser/aria2/aria2-downloads目錄掛載到了容器內的/aria2-downloads,所以掛載路徑應該是/aria2-downloads

完成

現在所有的服務都已經部署上線了,開啓 AriaNG 可以新增下載任務,下載好的檔案可以開啓 Alist 看到,下載,以及線上觀看。

搭建這套服務之前,請仔細檢視 VPS 提供商的服務條款,確保 BT 下載行為不會違規。以及,除了盧森堡等少數國家/地區,下載被 DMCA 保護的資源可能會遭到投訴,這些風險都需要你自行承擔。

反正我這 Azure 的學生機也是白嫖的,被投訴回收了我也無所謂,不管怎樣,現在可以心無旁騖的享受找資源的快樂了。


  1. 當然也可以試一試SuperNG6/docker-aria2 ↩︎

  2. 蔘考原作者的docker-compose.yml ↩︎

  3. caddy stopcaddy start,蔘考Caddy文件 ↩︎