溜め込みから脱却し、読書を楽しもう:KavitaとDockerで構築するプロ仕様の漫画ライブラリ

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

デジタル溜め込みの混沌

デジタルデータの溜め込みは簡単ですが、それを整理するのは至難の業です。多くの人がここで挫折します。

NASのフォルダに数千のPDFやEPUBを無造作に放り込んで、特定の漫画の12巻を探したり、スマホでどこまで読んだか思い出せなかったりする苦労は、誰もが経験することでしょう。PlexやJellyfinは動画の管理には優れていますが、書籍は二の次になりがちです。私は数ヶ月間の試行錯誤の末、ようやくプロ仕様のライブラリと感じられる環境に辿り着きました。

3大ツール:エンジンを選ぶ

セルフホストの読書環境において、主にCalibre-Web、Komga、Kavitaの3つが候補に挙がります。選択を誤ると、後に数時間の移行作業を強いられることになります。

  • Calibre-Web: 司書の選択。詳細なメタデータ管理や伝統的な電子書籍には無敵です。しかし、コミックリーダーは2005年の遺物のようで、モバイル環境でのUIは動作が重いです。
  • Komga: .CBZや.CBRファイルに特化した強力なツール。漫画には非常に洗練されていますが、500MBの技術系PDFや複雑なEPUB小説を読み込ませようとすると動作が不安定になることがあります。
  • Kavita: これが「スイートスポット」です。漫画、コミック、電子書籍をすべて平等に扱います。軽量で、膨大なコレクションでもラグがなく、WebリーダーはKindleやComixologyの有料アプリのようにクリーンです。

Kavita:実用的なパフォーマンス

イメージを取得する前に、Kavitaが日常的なワークロードをどのように処理するかを説明します。完璧ではありませんが、理想に非常に近いです。

優れた点

  • 爆速のレスポンス: スピードは単なる宣伝文句ではありません。10,000アイテムを超えるライブラリでも、検索結果は200ms以内に表示されます。開発段階から大規模なスケールを想定して設計されています。
  • 幅広いフォーマット対応: 外部プラグインなしでEPUB、PDF、CBZ、CBR、ZIPファイルをそのまま読み込めます。
  • OPDSの強み: これが最大の魅力です。Panels(iOS)やMoon+ Reader(Android)などのアプリを直接サーバーに接続できます。自宅のタブレットと移動中のスマホの間で、読書進捗が自動的に同期されます。
  • きめ細かなアクセス管理: 1つのサーバーで別々のアカウントを作成できます。「技術マニュアル」ライブラリは自分用にし、「コミック」ライブラリは家族と共有するといった使い分けが可能です。

妥協点(トレードオフ)

  • 命名規則の厳格さ: Kavitaは厳格です。「Untitled_Scan_v2.zip」のようなファイル名では正しく認識されません。Library/シリーズ名/巻数.cbzのような綺麗なフォルダ構造が必要です。
  • メタデータの手作業: ComicInfo.xmlは読み込みますが、Plexが映画のカバー画像を収集するように、Webから積極的にデータを取得しないことがあります。多少の手動調整が必要になる場合があります。

理想的なホームラボのスペック

過剰なリソースは必要ありません。Kavitaは驚くほど効率的です。私はRaspberry Pi 4で快適に動作させていますが、専用のLinux VMであればよりスムーズです。

最小要件:

  • CPU: 2コア(初期のライブラリスキャン時には多い方が助かります)。
  • RAM: 2GB(高画質な4KスキャンのPDFを読むなら不可欠です)。
  • OS: Dockerが動作する任意のLinuxディストリビューション。Windows版Dockerはファイル権限のバグに悩まされる可能性があるため、可能な限り避けてください。

デプロイ:Docker Composeによる方法

長いコマンドを覚える必要はありません。Docker Composeを使えば、セットアップの再現性が高まり、バックアップも容易になります。権限管理が優れているLinuxServer.ioのイメージを使用することをお勧めします。

1. ワークスペースの準備

ディレクトリを作成します。設定ファイルとメディアファイルを分けて管理するのが、セルフホストの黄金律です。

mkdir -p ~/homelab/kavita/config
mkdir -p ~/homelab/kavita/manga
mkdir -p ~/homelab/kavita/books

2. 設定

~/homelab/kavitaフォルダにdocker-compose.ymlを作成します。ターミナルでid $USERを実行し、UIDとGID(通常は1000)を確認してください。

version: "3.8"
services:
  kavita:
    image: lscr.io/linuxserver/kavita:latest
    container_name: kavita
    environment:
      - PUID=1000 
      - PGID=1000
      - TZ=Asia/Tokyo
    volumes:
      - ./config:/config
      - /home/user/media/manga:/data/manga
      - /home/user/media/books:/data/books
    ports:
      - 5000:5000
    restart: unless-stopped

3. 起動

コンテナを起動します:

docker-compose up -d

エンジンが正常に動作しているか確認するには、ライブログをチェックします:

docker logs -f kavita

セットアップと最適化

ブラウザでhttp://[サーバーのIPアドレス]:5000にアクセスします。最初のタスクは管理者アカウントの作成です。これらの認証情報を紛失するとDocker内部でのリセットは面倒なので、忘れないようにしてください。

最初のライブラリを追加する

「設定 > ライブラリ」に移動します。フォルダを追加する際、**タイプ**の選択が重要です。漫画フォルダを「書籍(Book)」としてラベル付けすると、期待する「右から左」へのページめくり設定が表示されません。また、「メタデータをファイルに保存する」チェックボックスをオンにすることをお勧めします。これにより、将来サーバーを移行しても、カスタムカバーやタグを引き継ぐことができます。

最高のリーダー表示設定

タブレットで最高の体験を得るには、ユーザー設定へ移動しましょう。**読書方向**を「右から左(Right to Left)」に設定し、「見開き(Double Page)」モードを使用します。iPad Proでは、本物の単行本を手に持っているのとほぼ同じ感覚になります。

セキュリティ:外出先での読書

ポート5000をインターネットに公開するのはトラブルの元です。絶対にやめましょう。代わりに**Tailscale**を使用します。これはプライベートで暗号化されたメッシュVPNを作成します。スマホとサーバーにインストールすれば、世界中のどこからでも内部IPを使用してKavitaにアクセスできます。セキュリティの黄金律であり、セットアップは2分程度で完了します。

メンテナンスとアップデート

コンテナは「設定して終わり」ではありません。月に一回程度、イメージを更新して最新のセキュリティパッチや機能を取り入れましょう。Composeを使用していれば、この作業は数秒で終わります:

docker-compose pull
docker-compose up -d

Kavitaは私のメディア消費スタイルを完全に変えました。散らかったファイルの山を、もっと読みたくなるような洗練された美しいライブラリに変えてくれます。

Share: