Featured image of post BT 离线下载サーバーを構築する

BT 离线下载サーバーを構築する

著作権侵害のクレームが来ませんように(

安い VPS をいくつか購入してから、手に余った Azure の学生向けマシンが一台あります。Trojan を動かす以外には特に用途がありません。ちょうど最近 BT 資源をダウンロードしたいと思っていたところ、国内の BT 環境については言わずもがなでしょう。そこで、このほぼ遊んでいるマシンを使って BT の离线ダウンロードを行うことにしました。

まず声明します。すべての BT ダウンロード行為において、著作権侵害のクレームを受けるリスクは自己責任で負う必要があります。

Aria2 のインストール

「インフラ」ではないソフトウェアの場合、私は Docker コンテナを引っ張ってくる方案を好みます。今回は、修正済みの Docker コンテナである P3TERX/Aria2-Pro-Docker1 を採用しました。Docker コンテナのデプロイ手順はどれも同じです。まず docker-compose.yml を編集し、docker 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 は 3 行で搞定です。

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 の作成を開始できます。3 つのポートをリバースプロキシする必要があります。それぞれ用途が異なります。私の 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 は本当に使い心地が良いと感じずにはいられません。設定を書き込んだら、Caddy を再起動3 します。すると、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 のダウンロードディレクトリを事前に 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 を初めて起動すると、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 startCaddy 文档 を参照。 ↩︎

本ウェブページの日本語版は、生成系大規模言語モデル(LLM)によって簡体字中国語版の内容を翻訳したものです。その内容は「乱筆」による確認、校正および承認を経ておりません。ご利用の際には、いかなる場合でも本日本語版を簡体字中国語版または英語版と同等と見なさないようご注意ください。
Hugo で構築されています。
テーマ StackJimmy によって設計されています。