Calibreで特定の本棚を公開するだけのコンテンツサーバをコンテナ化

pdfとかpptの資料管理としてCalibreを使っていて、コンテンツサーバを起動することでWebブラウザから本棚にアクセスできる。で、これを使って資料を共有すると便利だなと思ったのだが、普通にやるとプライベートの電子書籍を管理している本棚まで全部丸見えになってしまって困る。calibre-serverをCLIで起動すると特定の本棚のみ公開することも可能だが、calibre-serverは複数起動できないため、フツーにGUIアプリケーションとしてつかっているCalibreとは別に独立して動かす必要がある。

ということで、コンテンツサーバをやるだけのインスタンスをDockerで作る記事

目次

環境

本記事は以下の環境で確認しました。

  • M2 Pro Mac mini
  • macOS 14.4.1
  • Docker Desktop 4.29.0
  • Calibre 7.10

図にするほどでもないが、以下のような構成になる。

graph LR calibre(Calibre GUI) docker(Calibre Docker) ebooks(公開したいライブラリ) calibre --> ebooks docker --> ebooks

手順

プロジェクトディレクトリは ~/ebooks-server とする。configdocker-compose.yml を用意するよ。

.
├── config/
└── docker-compose.yml

Calibreの設定ファイルの準備

Calibreの設定ファイルを準備する。Calibreの元ソースからコピってくるのが楽。どこにあるかはChatGPTさん曰く以下。

  • Macの場合~/Library/Preferences/calibre
  • Windowsの場合%appdata%\calibre
  • Linuxの場合
    ~/.config/calibre

僕が確認したのはMacだけ。Macでしか使ってないので。Macの場合は以下のようにコピーするとよい。

mkdir config
cp -r ~/Library/Preferences/calibre/* config/

docker-compose.ymlの作成

ファイルは以下。

services:
  calibre:
    image: linuxserver/calibre
    container_name: calibre-server
    ports:
      - 8081:8081
    volumes:
      - 設定ファイルのパス:/config
      - 共有したいライブラリのパス:/books
    command: /usr/bin/calibre-server --port 8081 /books
    restart: unless-stopped

設定ファイルのパスは上で作った configです。ライブラリのパスは共有したいライブラリのフォルダをそのまま指定。ポートはなんとなくデフォルトの8080からずらして8081にしたけど別になんでもいい。ホストマシン側の公開ポートは空いていればなんでもいい。

docker compose up -dで起動。停止したい時は docker compose down

動作確認

http://localhost:8081 にアクセスして確認。共有したい本棚だけ見えたらOK。

本棚に更新があった時はめんどくさいけどコンテナ再起動する運用。ここはなんかもうちょっとどうにかしたい気もする。

複数の本棚

いっぱい増やせばいいよ。

services:
  calibre-1:
    image: linuxserver/calibre
    container_name: calibre-server-1
    ports:
      - 8081:8081
    volumes:
      - 設定ファイルのパス:/config
      - 共有したいライブラリのパス-1:/books  # 公開したいパス
    command: /usr/bin/calibre-server --port 8081 /books
    restart: unless-stopped

  calibre-2:  # 名前を変える
    image: linuxserver/calibre
    container_name: calibre-server-2  # ここも買える
    ports:
      - 8082:8081  # ポート被らないようにする
    volumes:
      - 設定ファイルのパス:/config
      - 共有したいライブラリのパス:/books  # 公開したいパス
    command: /usr/bin/calibre-server --port 8081 /books
    restart: unless-stopped

http://localhost:8081とhttp://localhost:8082でそれぞれ公開した本棚にアクセスできればOK。

応用: インターネットに公開

以下の記事と組み合わせることで、簡単にログイン認証を入れてネット公開できる。

あわせて読みたい
Calibreの本棚(コンテンツサーバ)に外部からアクセスする環境を整えるメモ(Cloudflare Tunnel利用) Calibreのコンテンツサーバ機能はとても便利だ。Webブラウザから蔵書を検索できるのは利便性が高い。できればインターネット上からアクセスできると、外で本をダウンロ...

Calibreにもユーザアカウント管理機能あって、それ使えばパスワード保護もできるんだけれど、Calibreの設定もネットワークの設定も何かとつらいので、このCloudflare使ったやり方のほうがいいかなと思う。

以上。

本サイトはUXを悪くするevilなGoogle広告を消しました。応援してくださる方は おすすめガジェット を見ていってください!
よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次