開発者ドキュメント

Ubuntu14.04で口径の電子ブックサーバーを作成する方法

序章

Calibreは、無料のオープンソースの電子書籍マネージャーです。

Calibreはおそらくデスクトップクライアントでよく知られていますが、強力なサーバーとしても機能し、世界中のどこからでも電子書籍にアクセスできます(またはコレクションを友達と共有できます)。 あなたが読みたいときはいつでもあなたがあなたと同じ読書装置を持っていることに依存しないので、あなたの電子ブックをサーバー上に保つことは素晴らしいです。 また、旅行に行く場合は、電子書籍コレクションを持ち歩くことを心配する必要はありません。

サーバーには、ライブラリから本を検索してダウンロードできるシンプルでエレガントなブラウザフロントエンドが含まれています。 また、モバイル対応のサイトが組み込まれているため、最も基本的なWeb機能しかない電子書籍リーダーにも簡単に書籍をダウンロードできます。

たとえば、CalibreのブラウザはKindle Touchで動作します。これは、デバイスに電子インクディスプレイと実験的なブラウザしかない場合でも、本を直接ダウンロードできます。

このチュートリアルでは、Ubuntu 14.04サーバーにCalibreをインストール、セットアップ、および使用する方法を説明します。 また、 calibredbコマンドを使用して、サーバーから直接電子書籍データベースを作成、カスタマイズ、および保守する方法についても説明します。

このチュートリアルでは、以下について説明します。

このチュートリアルを終了すると、新しい本を簡単に追加できる小さな初期ライブラリができあがります。

前提条件

次の前提条件があることを確認してください。

このチュートリアルの例は、Ubuntu 14.04の新規インストールを実行するDropletについて示されていますが、他のオペレーティングシステムに簡単に適応できるはずです。

ステップ1—Calibreをインストールする

CalibreはAPTソフトウェアリポジトリから入手できますが、作成者のアドバイスに従って、Webサイトで提供されているバイナリからインストールすることをお勧めします。 Calibreは非常に頻繁に更新され、リポジトリのバージョンは遅れる傾向があります。

幸いなことに、Calibreの作成者は、これを非常に簡単に実行できるようにしています。 サーバーで次のPythonコマンドを実行するだけです。 コマンドを変更する場合は、コマンドを実行する前に、公式キャリバーサイトを再確認してください。

Calibreをインストールします(コマンド全体を取得するには、必ずスクロールしてください)。

sudo -v && wget -nv -O- https://raw.githubusercontent.com/kovidgoyal/calibre/master/setup/linux-installer.py | sudo python -c "import sys; main=lambda:sys.stderr.write('Download failed\n'); exec(sys.stdin.read()); main()"

デスクトップ統合の失敗に関する警告がいくつか表示されますが、Calibreをリモートサーバーにインストールしているため、これらは無視しても問題ありません。

ステップ2—依存関係のインストール

Calibreコマンドラインツールcalibredbは、書籍の追加やインポート、書籍のメタデータや表紙の取得など、Calibreライブラリのさまざまな操作に使用されます。

これらのコマンドのいくつかの使用方法については後で説明しますが、ここでは2つの依存関係をインストールするだけです。 1つ目はImageMagickで、これがないとcalibredbは実行されません。 2つ目はxvfbで、これを使用して仮想Xディスプレイサーバーでcalibredbを実行します。これは、非ディスプレイ環境でCalibreを実行することによって発生する問題を回避するためです。

これらをインストールするには、次のコマンドを実行するだけです。

パッケージリストを更新します。

sudo apt-get update

xvfbをインストールします。

sudo apt-get install xvfb

ImageMagickをインストールします。

sudo apt-get install imagemagick

ステップ3—ライブラリを作成する

これで、サーバーの実行を開始する準備がほぼ整いました。 ただし、提供する本をいくつか入手する必要があります。

あなたはすでにあなた自身の電子ブックライブラリを持っているかもしれないので、これを行う2つの方法を見ていきます。

  1. 電子書籍ファイルを直接追加します。 プロジェクトグーテンベルクからカップルを取得します
  2. 既存のCalibreライブラリをインポートします。 すでにデスクトップバージョンのCalibreを実行している場合に便利です

本を手に入れる

まず、Calibreライブラリのディレクトリを作成しましょう。 この例では、ユーザーのホームディレクトリにディレクトリを作成しますが、サーバー上のどこにでも配置できます。 次のコマンドを実行します。

mkdir ~/calibre-library
mkdir ~/calibre-library/toadd

2つのディレクトリを作成しました。1つ目は~/calibre-libraryで、Calibreが自動的に整理します。一方、toaddサブディレクトリに書籍を手動で追加します。 後で、このプロセスを自動化する方法についても見ていきます。

ProjectGutenbergから本を入手する方法。 このチュートリアルでは、ジェーン・オースティンの高慢と偏見とチャールズ・ディケンズのクリスマスキャロルをダウンロードします。

toaddディレクトリに移動して開始します。

cd ~/calibre-library/toadd

2つの電子ブックをダウンロードします。

wget http://www.gutenberg.org/ebooks/1342.kindle.noimages -O pride.mobi
wget http://www.gutenberg.org/ebooks/46.kindle.noimages -O christmascarol.mobi

Calibreは、書籍を正しく追加するためにファイル拡張子にいくらか依存しているため、wgetコマンドの-Oフラグはよりわかりやすいファイル名を指定します。 グーテンベルクから別の形式(.epubなど)をダウンロードした場合は、それに応じてファイル拡張子を変更する必要があります。

Calibreのデータベースへの書籍の追加

次に、前にインストールしたxvfb仮想ディスプレイからcalibredbコマンドを使用して、これらの書籍をCalibreデータベースに追加する必要があります。 これを行うには、次を実行します。

xvfb-run calibredb add ~/calibre-library/toadd/* --library-path ~/calibre-library

アスタリスクは、Calibreがtoaddディレクトリにあるすべての書籍をライブラリのcalibre-libraryディレクトリに追加することを意味します。 表紙が見つからないというエラーが表示される場合がありますが(画像なしで.mobiファイルをダウンロードすることを選択しました)、書籍がCalibreデータベースに追加されたことの確認も表示されます。

サンプル出力:

Failed to read MOBI cover
Backing up metadata
Added book ids: 1, 2
Notifying calibre of the change

最初の結果を見始めるために必要なのはこれだけです。 サーバーをテストしてみましょう。 走る:

calibre-server --with-library ~/calibre-library

このコマンドは出力を生成しませんが、端末でハングしているように見えます。 今のところこれで問題ありません。 後で適切にデーモン化する方法を見ていきます。 次に、Webブラウザーを開き、次の場所に移動します。

your_server_ipをDropletのIPアドレスに置き換えます。 以下のスクリーンショットのように、ライブラリのメインページが表示されます。

すべての本リンクをクリックすると、前に追加した2冊の本が表示されます。 どちらかの本の下にあるGetボタンをクリックして、ダウンロードすることができます。

既存のCalibreライブラリのアップロード

すでにデスクトップバージョンのCalibreを実行していて、ライブラリがすでにセットアップされている場合は、それをサーバーに簡単にインポートできます。

現在のライブラリフォルダでmetadata.dbというファイルを再確認してください。 このファイルが存在する場合は、追加の構成なしですべてが機能するはずです。

ライブラリフォルダ全体をサーバーにアップロードします。

次に、次のコマンドを実行します。

calibre-server --with-library /path/to/calibre-library

これにより、既存のライブラリ全体がサーバーに追加されます。 このチュートリアルで説明されているように、ブックファイルをtoaddディレクトリに配置することで、サーバー上にさらにブックを追加できます。

ステップ4—Calibreをバックグラウンドサービスにする

サーバーを実行し続けるためだけに、calibre-serverコマンドを実行しているシェルを開いたままにしておく必要はありません。

コマンドに--daemonizeフラグを追加することもできますが、それを行うにはもっと良い方法があります。 以下では、calibre-serverをサービスにして、システムの再起動時に自動的に開始し、プロセスを非常に簡単に開始、停止、または再開できるようにすることがいかに簡単であるかを見ていきます。

最近まで、これを実現する方法は、複雑なスクリプトを記述して/etc/init.d/ディレクトリに配置することでした。 現在推奨されている方法は、/etc/init/ディレクトリに配置された.confファイルであるはるかに単純なUpstartスクリプトを使用することです。 これを行う方法を見ていきます。

サーバーがまだ稼働している場合は、端末のCTRL + Cを押してサーバーを停止します。

次に、新しい構成ファイルを作成します。

sudo nano /etc/init/calibre-server.conf

red でマークされた変数を必ず置き換えて、Upstartスクリプトを作成します。

description "Calibre (ebook manager) content server"

start on runlevel [2345]
stop on runlevel [^2345]

respawn

env USER='myusername'
env PASSWORD='mypassword'
env LIBRARY_PATH='/home/user/calibre-library'
env MAX_COVER='300x400'
env PORT='80'

script
    exec /usr/bin/calibre-server --with-library $LIBRARY_PATH --auto-reload \
                                 --max-cover $MAX_COVER --port $PORT \
                                 --username $USER --password $PASSWORD
end script

これをテキストエディタに貼り付けて保存します。 (CTRL + X、Y、Enterの順に)。 以下で、各行の機能を確認します。

次の行は、calibre-serverコマンドに渡すすべての変数です。 以前は、--with-libraryオプションを指定する最小限のオプションを使用していましたが、Calibreが提供する柔軟性を確認できます。 上記で指定しました:

スクリプトを保存してエディターを閉じたら、サーバーを起動します。

sudo start calibre-server

今回はこの出力が表示されますが、プロセス番号は異なります。

calibre-server start/running, process 7811

次に、ブラウザを使用してサーバーのIPアドレスまたはドメイン名に移動します。

ユーザー名とパスワードを尋ねるポップアップフォームが表示されます。 これらは、Upstartスクリプトに追加したものである必要があります。 これらを入力すると、以前と同じように電子書籍ライブラリに移動します。

これで、次のコマンドを使用して、サーバーを簡単に停止、開始、および再起動できます。

sudo service calibre-server stop
sudo service calibre-server start
sudo service calibre-server restart

これにより、デーモンプロセスとプロセスIDを手動で処理するよりも、サーバーの管理がはるかに簡単になります。

このサイトにはデフォルトで、電話や電子書籍リーダーなどの小さな画面のデバイスでうまく機能するモバイルバージョンがあります。 モバイルデバイスからサイトにアクセスすると、これは自動的に読み込まれます。

ステップ5—本を自動的に追加するためのcronジョブの作成

簡単なcronジョブを記述して、toaddディレクトリで新しい本を探すことができます。

10分ごとに、/home/user/calibre-library/toadd/ディレクトリ内のファイルを検索し、そこにあるファイルをCalibreデータベースに追加してから、元のファイルを削除します。 (Calibreは、ファイルをライブラリに追加するときにファイルのコピーを作成するため、追加が有効になると元のファイルは必要ありません。)これは、scp、sshなどを介してブックファイルを転送する場合を意味します。 メインマシンからこのディレクトリに移動するか、toaddディレクトリに直接ダウンロードすると、Calibreデータベースに自動的に追加され、ライブラリからダウンロードできるようになります。

cronジョブを作成するには、次を実行します。

crontab -e

好みのテキストエディタについて選択する必要があるかもしれません。

ファイルの最後に次の行を追加します。

*/10 * * * * xvfb-run calibredb add /home/user/calibre-library/toadd/ -r --with-library /home/user/calibre-library && rm /home/user/calibre-server/toadd/*

コマンドの最初の部分(*/10 * * * *)は、コマンドを10分ごとに実行する必要があることを意味します。 2番目の部分は、前に手動で実行したコマンドと同じです。 toaddフォルダーからすべての本をデータベースに追加してから、元のファイルを削除します。

それです。 これで、世界中のどこからでも電子書籍にアクセスできます。

注: Calibreの検索結果は関連性で並べ替えられていないため、一般的な用語を入力すると、探している本の前に無関係な本が見つかることがよくあります。 ただし、タイトルまたは作成者のみで検索するように指定できます。これは非常に役立ちます。また、参照オプション(たとえば、作成者のアルファベット順に参照)も非常によく実装されています。

結論

Calibreサーバーの実行と保守について覚えておくべきことが1つまたは2つあります。 最後に、これらについて簡単に説明します。

グーテンベルクまたは同様のサイトからの本(つまり、著作権のない本)のみをホストしている場合は、言うことはほとんどありません。 グーテンベルクの利用規約に必ず従ってください。 具体的には、自分の本のコレクションへのアクセスを他の人に許可する場合は、再配布に関するグーテンベルクのTOSのセクションを必ず読んでください。

商業的に購入した本をホストしている場合は、おそらくDRM(デジタル著作権管理)が適用されているため、登録済みのデバイスからのみ読み取ることができることに注意してください。

言うまでもなく、電子書籍サーバーで海賊版や違法な本をホストしてはいけません。

更新

Calibreは更新を非常に頻繁にプッシュします。 これらのほとんどはバグ修正と機能の更新ですが、一部はセキュリティに関係している可能性があります。 したがって、アップデートについていくことをお勧めします。

重要な更新が公開されている場合は、サーバーソフトウェアを手動で更新する必要があります。 (繰り返しになりますが、APTリポジトリは遅れる傾向があるため、更新のためにそれらに依存することはお勧めしません)。

安全

ドロップレットのIPアドレスを公開していなくても、開いているポートをスキャンするスクリプトによって検出される可能性があります。 Calibreのログイン機能では、何度も誤った試行を行った後の自動ロックアウトが許可されていないため、ブルートフォース攻撃の可能性があります。 これを軽減するには、次のことを強くお勧めします。

これでチュートリアルは終了です。 どこからでも、どのデバイスからでも電子書籍にアクセスできることを願っています。

モバイルバージョンを終了