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
図にするほどでもないが、以下のような構成になる。
手順
プロジェクトディレクトリは ~/ebooks-server
とする。config
と docker-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にもユーザアカウント管理機能あって、それ使えばパスワード保護もできるんだけれど、Calibreの設定もネットワークの設定も何かとつらいので、このCloudflare使ったやり方のほうがいいかなと思う。
以上。
コメント