5分で完了するクイックスタート
Docker Composeはこのスタックをデプロイするための標準的な手法です。コードを触る前に、適切なディレクトリ構造を設定する必要があります。多くの人がここで失敗し、ファイル転送の遅延やCPUリソースの浪費を招いています。「ハードリンク(Hardlinks)」を確実に使用して、ファイルを瞬時に移動できるように設定しましょう。
mkdir -p ~/homelab/data/{downloads,media/{movies,tv}}
mkdir -p ~/homelab/config/{sonarr,radarr,prowlarr,qbittorrent}
次に、ホームラボのディレクトリに docker-compose.yml ファイルを作成します。この構成では、単一の /data マウントポイントを使用して、超高速なファイル管理を実現します。
services:
prowlarr:
image: lscr.io/linuxserver/prowlarr:latest
container_name: prowlarr
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Tokyo
volumes:
- ./config/prowlarr:/config
ports:
- 9696:9696
restart: unless-stopped
radarr:
image: lscr.io/linuxserver/radarr:latest
container_name: radarr
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Tokyo
volumes:
- ./config/radarr:/config
- ./data:/data
ports:
- 7878:7878
restart: unless-stopped
sonarr:
image: lscr.io/linuxserver/sonarr:latest
container_name: sonarr
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Tokyo
volumes:
- ./config/sonarr:/config
- ./data:/data
ports:
- 8989:8989
restart: unless-stopped
qbittorrent:
image: lscr.io/linuxserver/qbittorrent:latest
container_name: qbittorrent
environment:
- PUID=1000
- PGID=1000
- TZ=Asia/Tokyo
- WEBUI_PORT=8080
volumes:
- ./config/qbittorrent:/config
- ./data:/data
ports:
- 8080:8080
restart: unless-stopped
docker-compose up -d を実行します。数秒以内に、ローカルネットワーク上でプロ仕様のメディアパイプラインが稼働し始めます。
ディープダイブ:「Arr」スタックが重要な理由
これまで何十回もこの環境を構築してきましたが、本当の魔法は単なるダウンロード機能にあるのではありません。手動の混乱から、プロフェッショナルな自動パイプラインへと移行することに意味があります。各アプリケーションには特定の役割があり、それらが正しく連携することで、ホームラボは自己修復機能を持つライブラリへと進化します。
Prowlarr:司令塔
Prowlarrは、全体を繋ぎ合わせる「接着剤」だと考えてください。お気に入りのインデクサーをSonarrやRadarrに個別に登録する代わりに、ここで一度追加するだけで済みます。設定は自動的にすべてのアプリに同期されます。トラッカーのURLが変更された場合も、一箇所更新するだけでスタック全体がオンライン状態を維持できます。
Sonarr & Radarr:デジタル司書
Sonarrはテレビ番組を管理し、Radarrは映画を担当します。これらは単なるダウンローダーではなく、洗練されたデータベースマネージャーです。ローカルライブラリを24時間365日監視し、欠けているエピソードを特定して、1080p BluRayや4K HEVCなど、設定したルールに基づいて最適な品質のファイルを検索します。
「Atomic Move(アトミック・ムーブ)」の秘密
初心者は /downloads と /movies のように個別のボリュームをマウントしがちですが、これは大きな間違いです。Dockerがこれらを異なるファイルシステムとして認識すると、データの物理的なコピーが発生します。このプロセスは低速で、SSDの寿命を縮める原因にもなります。
単一の /data ボリュームを使用することで、システムは「Atomic Move(即時移動)」を実行します。60GBの4K映画も、ミリ秒単位でライブラリに表示されます。物理ディスク上ではデータは移動しません。これにより、元のファイルをシード(共有)し続けながら、リネームされたバージョンをメディアフォルダに綺麗に配置することができます。
高度なチューニング:品質とカスタムフォーマット
基本的な同期が機能し始めたら、こだわりを反映させましょう。単なる1080pファイルではなく、特定のリリースグループや、ディスク容量を最大40%節約できるH.265などのコーデックを指定したくなるはずです。
Trash Guidesのインポート
最高の結果を得るには、「Trash Guides」を参考にしてください。これらはコミュニティによって精査されたプロファイルで、高ビットレート(20 Mbps以上など)のリリースを優先し、映画館で撮影された「CAM」版を無視するように設定できます。これらのJSONプロファイルをRadarrに直接インポートすることで、自動的に「こだわり派」の設定を反映できます。
FlareSolverrによるブロックの回避
一部のパブリックトラッカーは、Cloudflareを使用して自動ボットをブロックしています。Prowlarrが特定のサイトに接続できない場合は、FlareSolverrコンテナを追加してください。これは「私は人間です」という認証を自動的に解決するプロキシとして機能します。
flaresolverr:
image: ghcr.io/flaresolverr/flaresolverr:latest
container_name: flaresolverr
environment:
- LOG_LEVEL=info
ports:
- 8191:8191
restart: unless-stopped
現場で学んだ教訓
私はこのスタックを何年も運用してきました。以下の3つの習慣を身につければ、停電やハードウェア障害の際にも、システムをゼロから再構築する手間を省けます。
- コンテナ名を使用する: 設定で
localhostを絶対に使用しないでください。Dockerのサービス名(例:http://qbittorrent:8080)を使用します。これにより、内部IPアドレスが変更されても、アプリ同士が互いを見つけることができます。 - プライバシーを保護する: トレントを使用する場合は、ダウンロードクライアントをVPN経由でルーティングしてください。
gluetunのようなコンテナは、qBittorrentの通信のための安全なゲートウェイとして機能します。 - ストレージ容量に注意する: Radarrは非常に優秀ですが、時には優秀すぎることがあります。「トレンド」リストなどを購読していると、週末の間に10TBのドライブを簡単に埋めてしまうことがあります。DiscordのウェブフックやApprise通知を設定し、ディスク使用率が90%に達したときにアラートを受け取るようにしましょう。
このスタックの構築は、ホームサーバー愛好家にとって基本となるプロジェクトです。コンテナ化がいかに強力であるかを完璧に証明してくれます。一度自動化が始まれば、二度と手動でファイルを探すことはしたくなくなるでしょう。

