Ubuntu14.04で口径の電子ブックサーバーを作成する方法
序章
Calibreは、無料のオープンソースの電子書籍マネージャーです。
Calibreはおそらくデスクトップクライアントでよく知られていますが、強力なサーバーとしても機能し、世界中のどこからでも電子書籍にアクセスできます(またはコレクションを友達と共有できます)。 あなたが読みたいときはいつでもあなたがあなたと同じ読書装置を持っていることに依存しないので、あなたの電子ブックをサーバー上に保つことは素晴らしいです。 また、旅行に行く場合は、電子書籍コレクションを持ち歩くことを心配する必要はありません。
サーバーには、ライブラリから本を検索してダウンロードできるシンプルでエレガントなブラウザフロントエンドが含まれています。 また、モバイル対応のサイトが組み込まれているため、最も基本的なWeb機能しかない電子書籍リーダーにも簡単に書籍をダウンロードできます。
たとえば、CalibreのブラウザはKindle Touchで動作します。これは、デバイスに電子インクディスプレイと実験的なブラウザしかない場合でも、本を直接ダウンロードできます。
このチュートリアルでは、Ubuntu 14.04サーバーにCalibreをインストール、セットアップ、および使用する方法を説明します。 また、 calibredbコマンドを使用して、サーバーから直接電子書籍データベースを作成、カスタマイズ、および保守する方法についても説明します。
このチュートリアルでは、以下について説明します。
- Calibreのインストール
- 電子書籍ライブラリを作成するか、既存のライブラリをインポートします
- Calibreサーバーをバックグラウンドサービスにする
- ライブラリに新しい本を自動的に追加する
このチュートリアルを終了すると、新しい本を簡単に追加できる小さな初期ライブラリができあがります。
前提条件
次の前提条件があることを確認してください。
- Ubuntu14.04ドロップレット
- sudoユーザー
このチュートリアルの例は、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つの方法を見ていきます。
- 電子書籍ファイルを直接追加します。 プロジェクトグーテンベルクからカップルを取得します
- 既存の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ブラウザーを開き、次の場所に移動します。
http://your_server_ip:8080
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の順に)。 以下で、各行の機能を確認します。
- 最初の行は、あなた(または他の人)がスクリプトの機能を理解するのに役立つ説明にすぎません
- 次の2行は、スクリプトを開始および停止するレベルを示しています。これは、Upstartにより、相互に依存するスクリプトが正しい順序で開始されるように順序を指定できるためです。 レベル1はすべての重要なサービスを対象としているため、レベル2から開始します。この時点で、ネットワークやその他の必要なものがすべて稼働していることがわかります。
respawn
は、サービスが予期せず停止した場合、再起動を試みることを意味します
次の行は、calibre-server
コマンドに渡すすべての変数です。 以前は、--with-library
オプションを指定する最小限のオプションを使用していましたが、Calibreが提供する柔軟性を確認できます。 上記で指定しました:
- Webからライブラリにアクセスするためのユーザー名とパスワード(提供されている例からこれらを変更してください)
- 以前と同様に、ライブラリの場所のパス
- 本の表紙画像の最大画像サイズ(これは、ページの読み込みを速くするのに役立ちます)
- ポート番号(ここでは
80
に変更しました。すでにポート80を使用して標準のWebページなどを提供している場合は、これを別の番号に変更してください) - 最後に、
script
セクション(スタンザと呼ばれます)で、exec
を使用してメインコマンドを実行し、すべての変数を渡します。/usr/bin/calibre-server
の部分は、実行可能ファイルへのパスです
スクリプトを保存してエディターを閉じたら、サーバーを起動します。
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のログイン機能では、何度も誤った試行を行った後の自動ロックアウトが許可されていないため、ブルートフォース攻撃の可能性があります。 これを軽減するには、次のことを強くお勧めします。
- admin 、 calibre 、ebooksなどの一般的なユーザー名は使用しないでください
- 一般的なパスワードや短いパスワードは使用しないでください。また、ユーザー名をパスワードとして使用しないでください。
- ポート80ではなく、非標準ポートでCalibreを実行することを検討してください
これでチュートリアルは終了です。 どこからでも、どのデバイスからでも電子書籍にアクセスできることを願っています。