Audibleはやめよう:AudiobookshelfとDockerでプロ級のオーディオブック&電子書籍サーバーを構築する

HomeLab tutorial - IT technology blog
HomeLab tutorial - IT technology blog

手動による書籍管理の煩雑な現実

おそらく、SynologyのNASやGoogleドライブ「Books」フォルダにEPUBやM4Bファイルを放り込むことからデジタルライブラリを始めたことでしょう。ストレージとしては機能しますが、実際に読んだり聴いたりしようとすると、その体験は快適とは言えません。AudibleやKindleなどの商用プラットフォームは、洗練された体験を提供してくれます。

それらは読んでいたページを記憶し、カバーアートを取得し、検索を容易にします。しかし、これらのサービスには月額約15ドルかかり、DRM(デジタル著作権管理)によって縛られます。実質的に、すでにお金を払った本をレンタルしているようなものです。

汎用メディアサーバーにも問題があります。JellyfinやPlexは4K映画には最適ですが、20時間のオーディオブックを「非常に長い曲」、電子書籍を「ランダムなPDF」として扱います。書籍のシリーズ、ナレーター、特定の出版日といった構造が欠けているのです。Audiobookshelfは、ホームラボ(HomeLab)コミュニティのために、まさにこの問題を解決するために構築されました。

私の経験では、タイトル数が100を超えると手動のファイル管理は破綻します。お気に入りのプレミアム機能を損なうことなく大手テック企業のエコシステムから脱却したいのであれば、専用のブックサーバーを構築するのが最善の策です。

なぜAudiobookshelfが選ばれるのか

Audiobookshelfはオープンソースの強力なツールです。汎用サーバーとは異なり、文学のニュアンスを理解しています。Audible、Google Books、Open Libraryからデータを自動的に取得し、ファイルをクリーンでプロフェッショナルなインターフェースに整理します。

再生状況の同期こそ、このソフトウェアが真に輝く部分です。午前10時15分にデスクトップで章を一時停止し、午後5時30分の通勤中にスマホで全く同じ秒数から再開できます。また、ポッドキャストも管理できるため、サーバーをあらゆる音声メディアの集中ステーションに変えることができます。これをDockerで実行することで、アプリを隔離し、新しいハードウェアへの移行もフォルダを移動するのと同じくらい簡単になります。

Docker ComposeによるAudiobookshelfのデプロイ

Docker Composeはこのセットアップを処理する最も信頼できる方法です。ネットワークとストレージを1つのファイルで定義するため、デプロイの再現性が高く、トラブルシューティングも容易になります。

1. フォルダの設定

設定ファイルとメディアを混在させないでください。ホストマシン上に専用のディレクトリ構造を作成し、整理された状態を保ちます。

mkdir -p ~/homelab/audiobookshelf/{config,metadata}
mkdir -p ~/homelab/data/{audiobooks,ebooks,podcasts}

2. Docker Composeファイル

audiobookshelf フォルダ内に docker-compose.yml ファイルを作成します。この構成では、公式イメージを使用し、ボリュームを先ほど作成したディレクトリにマップします。

version: "3.7"
services:
  audiobookshelf:
    container_name: audiobookshelf
    image: ghcr.io/advplyr/audiobookshelf:latest
    ports:
      - 1337:80
    volumes:
      - ./config:/config
      - ./metadata:/metadata
      - ~/homelab/data/audiobooks:/audiobooks
      - ~/homelab/data/ebooks:/ebooks
      - ~/homelab/data/podcasts:/podcasts
    environment:
      - AUDIOBOOKSHELF_UID=1000
      - AUDIOBOOKSHELF_GID=1000
    restart: unless-stopped

この設定では、内部ポート80をホストポート1337にマッピングしています。UIDGID 変数(通常、主要なLinuxユーザーの場合は1000)は、コンテナがドライブにカバーアートやメタデータを書き込むための適切な権限を持っていることを保証します。

3. コンテナの起動

ファイルを保存したら、次の1つのコマンドでサービスをバックグラウンドで起動します。

docker-compose up -d

初期設定とライブラリの整理

http://your-server-ip:1337 にアクセスしてWebダッシュボードを表示します。最初のタスクは管理者アカウントの作成です。強力なパスワードを使用してください。このサーバーはやがてあなたの知的コレクション全体を保持することになります。

最初のライブラリの設定

Audiobookshelfはコンテンツをタイプ別に分類します。単にドライブを指定するのではなく、各フォルダの中に何が入っているかを定義します。書籍を追加するには:

  • サイドバーの「Libraries」を開き、「Add Library」をクリックします。
  • 「Audiobooks」または「E-books」を選択します。
  • /audiobooks または /ebooks パス(コンテナ内部のパス)を選択します。
  • ライブラリに名前を付けて保存します。

メタデータの自動取得

サーバーはすぐにファイルをスキャンします。ファイル名の命名規則が多少なりとも明確であれば(例:著者名 - タイトル.m4b)、オンラインデータベースと照合されます。一致しない場合は、「Match」ボタンをクリックしてください。通常、Audibleプロバイダーが最も高解像度のカバーアートと最も正確なチャプターデータを提供します。

検証とリモートアクセス

サーバーはアクセスできてこそ価値があります。外出先や自宅のWi-Fi以外からでも、データが安全でアクセス可能であることを確認する必要があります。

モバイル対応

AndroidおよびiOS向けのモバイルアプリは非常に優れています。再生状況を同期するには、アプリでサーバーのIPを指定します。カフェや外出先からライブラリにアクセスするには、TailscaleのようなVPNや、Nginx Proxy Managerのようなリバースプロキシの使用をお勧めします。同期をテストするには、スマホで本を再生し、一時停止してから、ノートPCのWebインターフェースを確認してください。2〜3秒以内に更新されるはずです。

メンテナンスとパフォーマンス

カバーの読み込みに失敗した場合は、コンテナのログを確認して権限エラーがないかチェックしてください:

docker logs -f audiobookshelf

metadata フォルダの容量に注意してください。ライブラリが1,000冊以上に増えると、高解像度の画像やデータベースのバックアップが保存されるため、このフォルダは簡単に数ギガバイトまで膨れ上がります。リソースの使用状況は以下で監視できます:

docker stats audiobookshelf

これで、バラバラだったファイルの山を、プライベートでプロフェッショナルなメディアエコシステムへと変えることができました。データは自分の手元にあり、再生状況は同期され、物語を聴くためだけに月額料金を支払い続ける必要ももうありません。

Share: