Audiobookshelf:自分専用のオーディオブック&ポッドキャストサーバーを作る方法
パソコンで聴き始めた本をスマートフォンの同じ位置から再開し、旅行前にダウンロードし、端末を替えても再生位置を失わないようにするために、別の有料サービスへ依存する必要はありません。Audiobookshelfは、自分の音声ファイルのコレクションを、表紙、チャプター、アプリ、家族それぞれの個別プロフィールを備えた整然としたオンラインライブラリに変えてくれます。
これはストアでも、無料の本を提供するサービスでもありません。ユーザー自身が、合法的に入手し、互換性のないDRM保護が付いていない音声ファイルを追加します。その代わり、本、再生履歴、設定はすべて自分のサーバーに残ります。
Audiobookshelfとは
Audiobookshelfは、オーディオブックとポッドキャスト向けの無料かつオープンソースのセルフホスト型サーバーです。メディアファイルを含むフォルダーをスキャンし、著者やシリーズごとにライブラリを整理し、メタデータと表紙を取得したうえで、ブラウザーやモバイルアプリからコレクションを再生できるようにします。
仕組みとしては、カタログを自分で作る個人用ストリーミングサービスです。サーバーがライブラリと再生位置を保存し、スマートフォン、タブレット、パソコンがクライアントとして動作します。そのため、ある端末で本を停止し、別の端末で保存された位置から続きを聴けます。
Audiobookshelfは、自宅のNASやミニPCでも動かせます。自宅のパソコンを常時起動したり、ポート転送を設定したり、自宅回線に依存したりせず、どのネットワークからでもアクセスしたい場合はVPSのほうが便利です。
Audiobookshelfでできること
端末間で再生位置を同期する
ユーザーごとに再生位置、履歴、ブックマークが保存されます。Webインターフェース、Progressive Web App、AndroidとiOS向けの公式モバイルクライアントが利用できます。本をあらかじめスマートフォンへダウンロードし、インターネット接続なしで聴くこともできます。
個別のアカウントを作成する
1台のサーバーに複数のユーザーを作成し、それぞれの再生位置を混在させずに管理できます。管理者はライブラリへのアクセス権や権限を設定でき、必要に応じてタグでコンテンツを制限できます。各ユーザーには、再生中の本の一覧、履歴、ブックマークが個別に保持されます。
ライブラリを整理する
サービスは外部ソースからタイトル、説明、著者、表紙を取得し、著者やシリーズごとに本をまとめ、チャプターやトラック順を修正できるようにします。複数のMP3ファイルを1つのM4Bに結合し、表紙やメタデータをファイルへ埋め込むこともできます。元のファイルを変更する前に、ライブラリのコピーを作成しておくのが安全です。
ポッドキャストを自動でダウンロードする
ポッドキャストは、名前、RSSリンク、OPMLファイルから追加でき、新しいエピソードをスケジュールに沿ってダウンロードするよう設定できます。サービスはエピソードを直接ストリーミングするのではなく、まずファイルをサーバーへ保存します。消えてしまう可能性のあるエピソードを保存できますが、その分ディスク容量が必要です。
オーディオブックと電子書籍を一緒に保存する
本のフォルダーにEPUB、PDF、CBR、CBZ、AZW3、MOBIを置くと、音声とテキストを同じ本のカードから開けます。内蔵リーダーは基本的な機能に限られ、Calibre-WebやKavitaの代わりにはなりません。
Audiobookshelfが向いている人
このサービスは、次のような状況で特に役立ちます。
- MP3、M4B、M4A、またはその他の一般的な形式で、すでにオーディオブックのコレクションを持っている;
- 複数の端末で聴き、再生位置を同期したい;
- 複数の家族が同じライブラリを利用する;
- 自分専用のポッドキャストアーカイブを保存したい;
- ファイル、ユーザーアカウント、バックアップを自分で管理したい;
- 表紙、チャプター、再生履歴がないため、通常のクラウドフォルダーでは不便になってきた。
1台のスマートフォンだけで1〜2冊を聴く程度なら、専用サーバーは不要かもしれません。Audiobookshelfは、コレクションが増えたとき、または常時リモートアクセスが必要なときに本領を発揮します。
Audiobookshelfに必要なサーバー構成
このプロジェクトには一律の公式最小要件がありません。負荷は、ライブラリの規模、ユーザー数、ファイルのスキャン、音声のトランスコードが必要かどうかによって変わります。小規模な個人コレクションなら、次の構成を開始時の目安にできます。
| 利用シナリオ | CPU | RAM | ディスク |
|---|---|---|---|
| 1〜2ユーザー、小規模ライブラリ | 1 vCPU | 1 GB | 30〜40 GB以上 |
| 家族利用と複数の同時接続 | 2 vCPU | 2 GB | 60〜100 GB以上 |
| 大規模ライブラリ、頻繁なスキャンとファイル処理 | 2〜4 vCPU | 4 GB | コレクション容量に応じて |
これは公式の最小要件ではなく、実用上の目安です。最も重要なリソースはディスクです。64〜128 Kbit/sの10時間の本は約0.3〜0.6 GBを使用するため、100冊ならポッドキャストやバックアップを除いて約30〜60 GBが必要です。あとから拡張できる小規模なVPSで始めるのが合理的です。
Docker ComposeでAudiobookshelfをインストールする方法
Dockerは開発者が推奨するインストール方法です。ここでは、UbuntuまたはDebianにDockerとComposeプラグインがすでにインストールされているものとします。
プロジェクト用ディレクトリとデータ用フォルダーを作成します。
mkdir -p /opt/audiobookshelf/{config,metadata,audiobooks,podcasts}
cd /opt/audiobookshelfcompose.ymlファイルを作成します。
services:
audiobookshelf:
image: ghcr.io/advplyr/audiobookshelf:latest
container_name: audiobookshelf
ports:
- "13378:80"
volumes:
- ./config:/config
- ./metadata:/metadata
- ./audiobooks:/audiobooks
- ./podcasts:/podcasts
environment:
- TZ=UTC
restart: unless-stoppedコンテナを起動します。
docker compose up -d起動後、管理画面は一時的に次のアドレスからアクセスできます。
http://SERVER_IP:13378初回アクセス時にルート管理者を作成し、続いて種類がBooksのライブラリを追加して、ディレクトリに/audiobooksを指定します。ポッドキャストには、パスを/podcastsにした別のライブラリを作成します。
オーディオブックをフォルダーへ正しく配置する方法
Audiobookshelfでは、通常1冊の本を1つのフォルダーに対応させます。最も分かりやすい構造は次のとおりです。
/audiobooks/
著者/
シリーズ/
01 - 本のタイトル/
01 - チャプター.mp3
02 - チャプター.mp3
cover.jpg単独の本なら、シリーズ階層は省略できます。1つのM4Bファイルも、その本専用のフォルダーに置けます。
構造は重要です。同じ著者の複数の本を1つの共通フォルダーに置くと、スキャナーがそれらを1つの本としてまとめる可能性があります。最初の完全スキャン前にファイルを整理しておくのが理想です。ライブラリ間で本を移動すると新しい項目の作成として扱われるため、メタデータと再生位置は自動的に引き継がれません。
インターネットから安全にライブラリへアクセスする方法
管理画面を開放されたHTTPポート13378のまま常用することは推奨されません。リモートアクセスには、ドメイン、HTTPS証明書、Nginx、Caddy、Traefikなどを使ったリバースプロキシを設定するのが安全です。
AudiobookshelfはWebSocketを使用するため、プロキシ側でそのサポートを有効にする必要があります。HTTPSを設定したあとは、コンテナのポートをローカルインターフェースだけにバインドできます。
ports:
- "127.0.0.1:13378:80"固有のパスワードを使用し、利用者ごとに個別のアカウントを作成し、コンテナを更新し、不要な管理者権限を付与しないようにしてください。
バックアップについて知っておくべきこと
Audiobookshelfの内蔵バックアップは、データベースと一部のメタデータを保存し、metadataディレクトリ内の表紙も含みます。一方、オーディオブック、ポッドキャスト、メディアファイルと同じ場所にある表紙は、このバックアップには含まれません。
そのため、信頼できるバックアップ構成は次の2つで成り立ちます。
- データベースとメタデータの内蔵自動バックアップ;
audiobooksとpodcastsディレクトリを、別のディスクまたはリモートストレージへ個別にコピーする。
/configディレクトリにはSQLiteデータベースが含まれます。開発者は、ネットワーク経由でマウントせず、同じサーバーのローカルディスクへ保存することを推奨しています。ネットワーク上の配置は、性能の低下やデータベース破損につながる可能性があります。
tropic.hostのVPSでAudiobookshelfを運用する
個人ライブラリでは、最大の計算性能よりも、常時利用できること、十分なディスク容量、安定した接続が重要です。VPS上ならAudiobookshelfは24時間稼働し、自宅ネットワークの状態にかかわらず、スマートフォン、パソコン、タブレットからアクセスできます。
小規模なコレクションなら、tropic.hostの基本サーバーから始め、Dockerをインストールし、ドメインとHTTPSを設定して、ライブラリの成長に合わせてリソースを増やせます。プランを選ぶ際は、まず音声ファイルの容量を見積もり、新しい本やポッドキャスト用の余裕を確保してください。
事前に知っておきたい制限
Audiobookshelfは本のカタログを提供せず、DRM保護も解除しません。ユーザー自身が追加し、保存する権利を持つファイルを扱うためのサービスです。
モバイルアプリは活発に開発されており、公式には引き続きベータ版という位置付けです。そのため、WebインターフェースやPWAは有用な代替手段になります。電子書籍のサポートは基本的なものに限られ、大規模なコレクションを整然と取り込むには、フォルダー構造を守り、必要に応じてメタデータを手動で修正する必要があります。
オーディオブックに関しては、通常のクラウドフォルダーに欠けている機能、つまりチャプター、シリーズ、再生位置、オフラインダウンロード、プロフィール、ポッドキャスト管理を提供します。
まとめ
Audiobookshelfは、音声ファイルを複数の端末とユーザーで利用できる個人メディアライブラリに変えます。Docker Composeを使ったインストールは簡単ですが、安定して運用するには、整ったフォルダー構造、HTTPS、メディアファイルの個別バックアップが必要です。
FAQ
Audiobookshelfは無料ですか?
はい。サーバーと公式クライアントはオープンソースで公開されています。費用がかかるのは、使用する場合のハードウェア、VPS、ドメイン、追加ストレージだけです。
Audiobookshelfは無料のオーディオブックを提供しますか?
いいえ。自分のコレクション用のサーバー兼プレーヤーです。音声ファイルは合法的な方法で自分で入手し、ライブラリへ追加する必要があります。
インターネットなしで本を聴けますか?
はい。モバイルアプリでは、本を事前に端末へダウンロードできます。ダウンロード後は、再生のためにサーバーへ接続する必要はありません。
AudiobookshelfにはどれくらいのRAMが必要ですか?
小規模なライブラリと1〜2ユーザーなら、1 GBのRAMが妥当な開始点です。複数の利用者、大規模なスキャン、ファイル処理がある場合は、2〜4 GBを選ぶのが適切です。
Audiobookshelfは必ずVPSにインストールする必要がありますか?
いいえ。自宅サーバー、NAS、対応するパソコンでも動かせます。自宅ルーターを設定したり、自宅回線へ依存したりせず、異なるネットワークから24時間アクセスしたい場合はVPSが便利です。
