サーバのCalibreで自炊コミックの管理と閲覧

pdfだったりjpgだったりの自炊コミックが,大量にありどう管理するか悩んでいた. 単に作者名で検索するだけじゃなく,タグをつけて色々な軸で検索をしたいと思うが, ファイルシステムのツリー構造では限界がある. 同じ悩みは図書館の分類学にもあって,書籍管理系のソフトウェアが使えると踏んで 調べてみた.

結論としては,calibreとcalibre-webを併用する方向で落ち着いた.

書籍管理ソフトウェアの種類

ざっと調べて出てきた範囲では以下の種類がある.

クライアント型
ローカル端末内の書籍ファイルを取り込んで管理するソフトウェア.calibreなど.
インデックス型
書籍ファイルのインデックスを作成し書籍ファイルへのリンクを貼ってくれるもの.eBookshelf Generatorなど.NWマウントすればサーバ型のように利用ができる.
サーバ型
書籍管理機能をwebベースで提供してくれるソフトウェア.calibreはこちらの機能も提供している.Kindleなども加えても良いかも知れない.

要件

  • 必須要件
    • クライアントはiPhoneやiPad,PCなど.複数端末で表示したい
    • 数十GBのファイルを入れた,宅内の NAS (Linux server) の上で動作するサーバとしたい
    • 既存資産に合わせ,PDFとjpgに対応しているものが良い
    • 処理サーバ上で処理をして欲しい
  • 可能であれば満たしたい
    • 知名度の高いメンテされているソフトウェアが望ましい
    • docker で動作するものが望ましい.コンテナが提供されてなければBuildしても良い

選定

自動的に,サーバ型となる.それも自鯖上で動作するもの.
かつてクライアント版calibreをwindowsでもlinuxでも使っていたことがあり, 実績・機能の両面から,dockerでローカルHDDのデータをNWを介さずに取り込める calibreを選定した. いずれも認証機能を供えており,どちらか一方でも利用可能.

calibre on docker

  • XのUIとWeb UIがある
  • データ領域をアタッチしてインポート可能
  • 日本語入力のためにlinuxのIME設定が必要で面倒くさい
  • イメージが大きいし,X Window Systemを動作させるので動作も重い
  • Web UIでは書籍データをキャッシュして閲覧となり,次回アクセス時もキャッシュが残っている(キャッシュは認証なしでも読めるので,困る人もいるかも)

書籍のインポートは,NAS内の電子ファイルをインポートすれば良いのでNWを利用しなく てよいのは大変良い. 私はdocker containerにインポート用の領域をマウントして,直接インポートすること にした.

calibre-web on docker

  • Web UIのみで取り込みも閲覧も提供する
  • 取り込みがNW越しとなってしまうため,NW負荷がかかる.子供達がオンライン対戦を している時やリモートワークの裏で処理を走らせるには向いていない.
  • Web UIであるので,クライアントマシンの日本語入力環境を使えるため日本語入力は容易
  • 閲覧はその都度DLするため,閲覧時にNW負荷がかかる

設定

まずパスワードを作成する.こんな感じのシェルの出力をコピペすれば良い.

echo -n password | openssl md5

以下のような出力が出るので,5f4dcc3b5aa765d61d8327deb882cf99 の部分がmd5で ハッシングされたパスワードになる.

(stdin)= 5f4dcc3b5aa765d61d8327deb882cf99

上のような出力を使って,以下のように設定すると動作する.

version: "3"

services:
    calibre:
        image: linuxserver/calibre
        environment:
            - PUID=1000
            - PGID=1000
            - TZ=Asia/Tokyo
            - GUAC_USER=GUI_USER_NAME  # X Window Systemの認証ユーザ
            - GUAC_PASS=GUI_USER_PASSWORD_BY_MD5  # X Window Systemの認証パスワード.md5でハッシングしたものを使う
        volumes:
            - /path/to/calibredir:/config   # 書籍データを入れるディレクトリは初期設定で指定する
            - /path/to/digitalbooks:/import # 例えば取り込みたいデータを適当な場所にアタッチして取り込む
        ports:
            - '8080-8081:8080-8081'
        restart: unless-stopped

    calibre-web:
        image: linuxserver/calibre-web
        environment:
            - PUID=1000
            - PGID=1000
            - TZ=Asia/Tokyo
            - DOCKER_MODS=linuxserver/calibre-web:calibre # いらんかも.多分取り込み時の変換機能
        volumes:
            - /path/to/calibre-web-dir:/config
            - /path/to/calibredir/Calibreライブラリ:/books  # calibreの初期設定で指定するディレクトリ名をアタッチする
        ports:
            - '8083:8083'
        restart: unless-stopped

使い方

dockerの使い方は各自で調べること.

動作させるホストのIPアドレスを仮で 192.168.1.10 とすると,

http://192.168.1.10:8080/ で X Window System のログイン画面へ接続できる.接続できるようになるまでに,Xの起動を待たなけれならず,数分はかかる.
http://192.168.1.10:8083/ で calibre-web の初期設定画面へ接続できる.こちらも1分くらいはかかる.

http://192.168.1.10:8081/ でアクセスできるcalibreのweb uiはこの時点ではまだ,接続できない.下の設定でコンテンツサーバを起動してからアクセス可能となる.

calibreの初期設定

上で設定した GUI 用のID/PWで接続する.

すると,初期設定ではこういう画面になる. コンテンツサーバの起動は,後で設定すればいいので,今は起動しなくても良い.

calibreのコンテンツサーバ(web ui)の設定

設定が完了すると,こういう画面になる.
右上の「設定」から設定画面に入れる.
なおその2つ左の「接続/共有」を押すと,コンテンツサーバの起動や停止のメニューが 出てくるので,次回以降はここから制御すれば良い.

設定画面では色々設定できるが,最低限の設定としてコンテンツサーバの設定だけ紹介 する.
「ネット共有」から設定する.

「ユーザ名とパスワードを要求する」は設定を推奨する.ユーザアカウントのタブ(次 の画像)でユーザを設定する.
その下の設定からサーバーを起動することで,コンテンツサーバを起動することもできる.

Web UIからアクセスを許可するユーザのアカウントはここから追加する.

calibre-webの設定

初回アクセス時は,この画面に接続することになる.
Location of Calibre database は,docker-compose.ymlに記載したライブラリを アタッチするディレクトリ名を指定する.
ちなみに,Enable uploadingをオンにしておくと,calibre-webからもインポートできる ようになる. お好みで.

左下の「Submit」を押すと,その右に「Login」というボタンが出てくる.

ログイン画面はこんな感じで,初期のユーザ名・パスワードは「admin」「admin123」. 変更はログイン後にユーザ設定から行なう.(ユーザ名も変更できる)

comments powered by Disqus