実践 OPDS ガイド

自分の本棚をホストして Lectern で開く

ファイルは自分のハードウェアに置いたまま、Android から本棚を閲覧して Lectern に直接ダウンロードできます。電子書籍なら Calibre-Web、同期読書なら Storyteller が向きます。

短い答え

個人の電子書籍棚には Calibre-Web。DRM のない電子書籍とオーディオブックを EPUB 3 の同期読書本にするなら Storyteller。どちらも Lectern が閲覧できる OPDS カタログを公開します。

用途に合うサーバーを選ぶ

項目Calibre-WebStoryteller
得意電子書籍の管理と配布電子書籍、音声、同期読書
ライブラリmetadata.db を含む Calibre独自のデータ保存
LecternEPUB 版EPUB または同期 EPUB
負荷軽い位置合わせは高負荷になる場合あり

家庭内だけなら Calibre-Web から始めるのが簡単です。読むことと聴くことを同期したい場合は詳しい比較を確認してください。

始める前に

  • 閲覧中に稼働する PC、NAS、ホームサーバー。
  • Docker Compose と永続データフォルダー。
  • DRM のない EPUB。Lectern は音声のみの項目を隠します。
  • 192.168.1.50 などの LAN IP。

まず家庭の Wi-Fi で試します。外部からはプライベート VPN または正しく設定した HTTPS リバースプロキシを使い、暗号化されないログインを公開しないでください。

方法 A:Calibre-Web

/path/to/... を置き換え、PUID、PGID、タイムゾーンを調整します。本のフォルダーには metadata.db を含む Calibre ライブラリが必要です。

services:
        calibre-web:
          image: lscr.io/linuxserver/calibre-web:latest
          container_name: calibre-web
          environment:
            - PUID=1000
            - PGID=1000
            - TZ=Etc/UTC
          volumes:
            - /path/to/calibre-web/config:/config
            - /path/to/calibre/library:/books
          ports:
            - 8083:8083
          restart: unless-stopped
  1. compose.yaml として保存し、docker compose up -d を実行。
  2. http://SERVER-IP:8083 を開き、ライブラリを /books に設定。
  3. adminadmin123 で入り、すぐにパスワードを変更。
  4. Calibre で本を追加。自動取り込みには Calibre-Web Automated を利用。
  5. http://SERVER-IP:8083/opds をテスト。

最新情報は公式 LinuxServer リポジトリを参照してください。

方法 B:Storyteller

openssl rand -base64 32 で秘密鍵を作り、その値だけを STORYTELLER_SECRET_KEY.txt に保存します。

services:
        web:
          image: registry.gitlab.com/storyteller-platform/storyteller:latest
          volumes:
            - /path/to/storyteller/data:/data:rw
          environment:
            - STORYTELLER_SECRET_KEY_FILE=/run/secrets/secret_key
          ports:
            - "8001:8001"
          secrets:
            - secret_key
          restart: unless-stopped
      secrets:
        secret_key:
          file: ./STORYTELLER_SECRET_KEY.txt
  1. Compose を起動し http://SERVER-IP:8001 を開く。
  2. 管理者を作り、電子書籍、オーディオブック、または両方を追加。
  3. 両方ある場合は位置合わせを開始して完了を待つ。
  4. OPDS フィードは既定で有効なので、通常はログイン情報だけで済みます。無効なら設定 → OPDS で戻します。URL は /opds で終わります。
  5. Lectern では通常の Storyteller ユーザー名とパスワードを使う。

公式セルフホストガイドOPDS ドキュメントも確認してください。

Lectern に接続

  1. ライブラリを開く。プラスから無料・セルフホストの本を選択。
  2. Storyteller または Calibre-Web を選択。
  3. アドレスを入力。http://192.168.1.50:8083 または HTTPS ドメイン。
  4. ユーザー名とパスワードを入力。端末内に暗号化して保存されます。
  5. 接続。EPUB を通常の Lectern ライブラリへダウンロード。
空の Lectern ライブラリに表示された無料・セルフホストの本ボタン
空のライブラリでは、常設の操作を増やさずセルフホストへの入口を直接表示します。
Lectern の Storyteller 接続画面、サーバー、ユーザー名、パスワード欄
サーバーを選び、アドレスと認証情報を入力して接続します。

リバースプロキシのサブパスでは完全なフィード URL を入力します。その他のサーバーには別の OPDS フィードを使います。

よくある問題

接続できない

スマートフォンの localhost はスマートフォン自身です。LAN IP、Wi-Fi、ファイアウォールを確認します。

再ログインを求められる

同じ情報で Web に入れるか試します。OAuth のみの場合は OPDS 用ローカルユーザーが必要なことがあります。

カタログが空

フィードに EPUB が必要です。Lectern は音声のみの項目を表示しません。

HTTPS エラー

Android が信頼する証明書と完全な証明書チェーンを使用します。

セルフホスト OPDS のよくある質問

サーバーアドレスと完全な OPDS URL のどちら?

Storyteller と Calibre-Web はサーバーアドレスだけで十分です。サブパスや他のサーバーは完全な URL を使います。

インターネット経由でも使える?

信頼できる HTTPS またはプライベート VPN なら可能です。暗号化されないログインは公開しないでください。

Lectern は Storyteller の音声を再生する?

いいえ。EPUB と同期 EPUB を取り込み、音声のみの項目は隠します。

認証情報は Lectern の開発者に送られる?

いいえ。Android 端末に暗号化して保存され、設定したサーバーだけに送られます。

自分の本を、自分のサーバーで

一度接続して本を取得すれば、Lectern でオフライン読書を続けられます。

手に入れようGoogle Play