メインコンテンツへスキップ

aria2 Docker Compose + AriaNg 24時間常時稼働サーバー構築

高性能かつ 24時間ノンストップで稼働するヘッドレス aria2 ダウンロードサーバーを構築。洗練された AriaNg Web パネル、BT トラッカー自動更新、自宅 NAS へのシームレスな保存を実現します。

1. 3層コンテナマイクロサービス構成

本番環境の aria2 Docker 環境は、軽量な Alpine コンテナ上で動く3つのモジュールで構成されます:

⚙️

1. コアエンジン (aria2-pro)

高 IOPS メモリキャッシュ、複数プロトコル対応(HTTP/FTP/BT)、ポート 6800 で待機する WebSocket JSON-RPC を搭載。

📡

2. トラッカー自動同期

GitHub から毎日最新の有効 BT トラッカーリストを自動取得・注入し、0 KB/s の接続停止を完全に防ぎます。

🖥️

3. AriaNg WebUI パネル

ポート 6880 で動作する洗練された HTML5 レスポンシブ Web 管理画面。PC、スマホ、タブレットからいつでも操作可能。

2. 本番用 docker-compose.yml 設定ファイル

以下の構成を docker-compose.yml として保存し、デプロイ先フォルダ(例: /opt/aria2//volume1/docker/aria2/)に配置します:

# docker-compose.yml
version: '3.8'

services:
  aria2-pro:
    container_name: aria2-pro
    image: p3terx/aria2-pro:latest
    restart: unless-stopped
    logging:
      driver: json-file
      options:
        max-size: 10m
        max-file: "3"
    environment:
      - PUID=1000
      - PGID=1000
      - RPC_SECRET=YourSuperSecureToken99! # 安全なパスワードに変更
      - RPC_PORT=6800
      - LISTEN_PORT=6888
      - TRACKERS_AUTO_UPDATE=true         # BTトラッカーを毎日自動更新
      - DISK_CACHE=64M                    # ディスク保護用RAMキャッシュ
      - IPV6_MODE=false                   # IPv6環境の場合は true に設定
      - TZ=UTC
    volumes:
      - ./aria2-config:/config            # 設定・セッション保存先
      - ./downloads:/downloads            # ダウンロード保存先
    ports:
      - "6800:6800"                       # RPC WebSocket / HTTP API
      - "6888:6888"                       # BitTorrent TCP peer discovery
      - "6888:6888/udp"                   # BitTorrent DHT UDP peer discovery

  ariang:
    container_name: ariang
    image: p3terx/ariang:latest
    restart: unless-stopped
    ports:
      - "6880:6880"                       # WebUI Dashboard
    depends_on:
      - aria2-pro

主要な環境変数の解説:

  • PUID / PGID:ダウンロード完了ファイルの権限を設定し、Plex、Jellyfin、Samba などの他アプリからの読み書きエラーを防止します。
  • DISK_CACHE=64M:メモリ上に書き込みキャッシュを確保し、HDD/SSD への過剰な細切れ書き込みを抑え寿命を延ばします。
  • LISTEN_PORT=6888:BitTorrent の着信ポートです。ルーターで 6888 TCP/UDP をポート開放すると高速化します。

3. プラットフォーム別セットアップ手順

A. Linux サーバー (Ubuntu / Debian / AlmaLinux / Raspberry Pi)

ディレクトリを作成し、所有権を設定してコンテナを起動します:

mkdir -p /opt/aria2/{aria2-config,downloads}
cd /opt/aria2
# Copy docker-compose.yml into /opt/aria2/
sudo chown -R 1000:1000 /opt/aria2
docker compose up -d

B. Synology NAS (DSM 7.2+ Container Manager)

  1. File Station/docker/aria2/config/volume1/downloads を作成します。
  2. Container Managerプロジェクト作成 を開きます。
  3. プロジェクト名: aria2、パス: /docker/aria2、ソース: docker-compose.yml を作成 を選択。
  4. 設定コードを貼り付け、完了 をクリックすれば自動構築・起動します。

C. QNAP Container Station と Unraid

QNAP では アプリケーション → 作成 に貼り付け。Unraid では Compose プラグインを使用します。

4. HTTPS リバースプロキシと安全な外部アクセス

HTTPS 経由で AriaNg を利用する場合、暗号化されていない 6800 ポートへの通信はブラウザの仕様(Mixed Content)でブロックされます。SSL WebSocket (WSS) リバースプロキシを設定してください:

# Nginx Reverse Proxy with WSS Support
server {
    listen 443 ssl http2;
    server_name aria2.yourdomain.com;

    ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;

    # 1. Route WebUI Frontend
    location / {
        proxy_pass http://127.0.0.1:6880;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }

    # 2. Route JSON-RPC Secure WebSocket (WSS)
    location /jsonrpc {
        proxy_pass http://127.0.0.1:6800/jsonrpc;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_read_timeout 86400;
    }
}

5. ダウンロード完了後の自動化フック(Rclone / 自動解凍)

aria2 は on-download-complete フックに対応しており、完了時に自動でクラウドへ転送したりアーカイブを展開できます:

フックの動作仕様:

./aria2-config/clean.sh 内で $1 (GID)、$2 (ファイル数)、$3 (ファイルパス) が渡されます。

6. トラブルシューティング & FAQ

Q1: コンテナのリアルタイムログを確認するには?

docker compose logs -f aria2-pro を実行すると、接続状態やトラッカー更新ログを確認できます。

Q2: BitTorrent の速度が 0 KB/s のまま進まないときは?

対処法: ルーターで 6888 UDP を開放し、当サイトの トラッカーハブ から最新トラッカーを追加してください。

Q3: "AriaNg disconnected" と表示され接続できないときは?

対処法: AriaNg 設定の RPC ホスト(サーバーIP)、ポート(6800)、シークレットトークンが一致しているか確認してください。