自宅にある本を自炊して、PDFやEPUB形式で保存した本をスマートフォンやタブレットで読むとき、端末内に保存できる容量が限られたり、複数の端末にたくさんの本をコピーしたり、同期するのは大変です。EPUBやPDF形式で保存した自炊した本をサーバー上に保存して、ブラウザで読める「LibreReader」を使えば、自宅内で電子書籍サーバーとして使えて、サーバーが外部から接続できるのであれば、端末内に保存してなくても、外出先でも自炊した本を楽しむことができます。

LibreRead - A self-hosted ebook reader

https://libreread.org/

GitHubに記載があるとおり、LibreReadを動作させるには以下の要件を満たす必要があります。

◆前提要件

ハードウェア

・CPU 最近の性能のシングルコアCPUまたはデュアルコアCPU

・メモリ 1GB以上

・OS Dockerと互換性のある64bit Linux

ソフトウェア

・Debian 9

・Redis 3.2がインストールされていること

・ElasticSearch 5.0がインストールされていること(全文検索用)

上記の条件を満たす環境を用意するため、今回は、過去の記事を参考にGoogle Cloud Platformの無料トライアルを利用して、Debian 9のLinux環境を構築しました。スペックは、vCPU2個にメモリ約8GBで前提条件のスペックを大幅に超えています。



◆インストール

ソフトウェアの前提条件にあるデータベースの「Redis 3.2」と全文検索エンジンの「ElasticSearch 5.0」を先にインストールします。LibreReadのセットアップは最後に行います。

・Redisのインストール

まずは、以下のコマンドを実行し、Debian 9を最新の状態にします。

$ sudo apt-get update && sudo apt-get upgrade




次に、以下のコマンドを実行して「software-properties-common」をインストール。

$ sudo apt-get install software-properties-common




次に、以下のコマンドで「redis-server」をインストールして、「Redis」のインストールが完了。

$ sudo apt-get -y install redis-server




ElasticSearchのインストール

「ElasticSearch」はDebianで配布されているパッケージではないため、レポジトリの追加が必要なので、以下のコマンドを実行して、PGPキーをインポート。

$ wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -




次に、「apt-transport-https」をインストールします。以下のコマンドを実行。

$ sudo apt-get install apt-transport-https




以下のコマンドで、ElasticSearchのレポジトリを追加します。

$ echo "deb https://artifacts.elastic.co/packages/6.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-6.x.list




次に、以下のコマンドでElasticSearchをインストールします。

$ sudo apt-get update && sudo apt-get install elasticsearch




・LibreReadのインストール

以下のコマンドを実行して、「git-core」をインストールします。

$ sudo apt-get install -y git-core




次に、以下のコマンドを実行して、GitにあるLibreReadのリポジトリをクローンします。

$ sudo git clone https://github.com/LibreRead/install.git /var/libreread --depth 1




リポジトリをクローンしたディレクトリに移動して……

$ cd /var/libreread




以下のコマンドを実行し、セットアップします。

$ sudo sh install.sh




すると、「ドメイン名を入力してください」と表示されます。IPアドレスでの接続で使用するため、何でも構わないはずですが、Google Cloud Platformのドメイン「cloud.google.com」を指定。



次に、「SMTPサーバーを入力してください」と表示されるので、基本的にメールは使用しませんが、ここではGmailのSMTPサーバー「smtp.gmail.com」を指定します。



「SMTPサーバーのポート番号を入力してください」と表示されます。ここでは「587」を指定。



「メールアドレスを入力してください」と表示されるので、GmailのユーザーIDを入力します。



再度に「パスワードを入力してください」と表示されるので、先ほど入力したGmailのユーザーIDに紐付くパスワードを入力し、LibreReadのインストールが完了です。



最後に全文検索を有効にしてみます。以下のコマンドを実行。

$ sudo sh docker_es.sh




以上で「LibreRead」のインストールが完了です。

◆ファイアウオールの設定

次に、LibreReadでは「8080」ポートを使用しますが、Google Cloud Platformではデフォルトで有効になっていません。そこで、「Google Cloud Platform」のメニューボタンをクリックし、「VPCネットワーク」をクリック後、「ファイアウォール ルール」をクリックします。



上部にある「ファイアウォール ルールを作成」ボタンをクリックします。



名前はわかりやすく「libreread」と入力して……



下にスクロールして、「ターゲットタグ」欄に「tcp-libreread-8080」とします。「ソースIPの範囲」はどこからでもアクセス可能なように「0.0.0.0/0」、「プロトコルとポート」に「tcp:8080」を入力して、「作成」ボタンをクリック。



ファイアウオールのルールに「libreread」が追加されました。



次に、作成した「ファイアウォール ルール」をサーバーに適用します。。左上のメニューボタンをクリックし、「Compute Engine」をクリック後、「VMインスタンス」をクリックします。



サーバー名をクリックして……



右上にある「編集」ボタンをクリック。



「VM インスタンスの詳細」画面の中央あたりまでスクロールして、「ネットワーク タグ」に「tcp-libreread-8080」を入力します。



そのまま下にスクロールして、「保存」をクリック。



ブラウザで「http://サーバーのIPアドレス:8080/」にアクセスすると、「LibreRead」の画面が開きます。



◆LibreReadを実際に使ってみる

・IDの登録

「http://サーバーのIPアドレス:8080/」にアクセスし、右上にある「Sign up」をクリック。



登録画面が表示されるので、「Full name」にユーザー名、「Email」に登録するメールアドレス、「Password」にパスワードを入力して、「Submit」をクリックしたら、登録が完了。



登録完了後は、もう一度「http://サーバーのIPアドレス:8080/」にアクセスし、「Email」に登録したメールアドレス、「Password」にパスワードを入力後、「Submit」をクリックすると……



LibreReadの画面が表示されます。



・本の追加

LibreReadに本を追加するには、「Add new books」をクリック。



ファイル形式はPDFとEPUB形式が選べますが、ここでは「未来への暴言」のPDFファイルをクリックし、「開く」をクリックします。



アップロードが完了したら、「アップロード成功」とのダイアログが表示されるので、「OK」をクリックしたら……



下の方にスクロールすると、先ほどアップロードした本の表紙が表示されます。



ちなみに、表紙が登録されていないEPUB形式の書籍ファイルをアップロードした場合は、画像が表示されないので、何の本かがわかりづらくなります。



・コレクション機能を使う

LibreReadには本のコレクション機能もあります。使うには「Collections」をクリック。



「Add new collection」をクリックします。



コレクションの設定画面が開くので、「Enter collection title」に「マイコレクション」、「Enter description」に「お気に入りの本」と入力し、コレクションに追加する本として2冊すべてにチェックを付けて、「Submit」をクリックします。



すると、新しいコレクションにマイコレクションが追加されましたが、画像が消えてしまいました。コレクション画面では表紙画像も反映されないようです。



・本を読む

LibreReadに追加した本を実際に開いてみます。まず、PDFファイルの「GIGAZINE 未来への暴言」をクリック。



LibreReader内に実装されているPDFリーダーでファイルが開きます。通常のPDFリーダーと同様に下にスクロールすることでも本を読めますが、ここで、右上にある全画面ボタンをクリックすると……



1ページを画面内におさまるように、縮小表示させることができます。ここで、キーボードの「右キー」を押すと……



次のページを表示することができ、「左キー」を押すと……



前のページに戻ることができます。



次に、EPUB形式のファイルをクリックして、開きます。



本は左にスクロールすることで読めますが、左開きの本を意識しているせいか、ページめくりは右矢印のボタンで行う仕様となっていて、文庫本のように右開きの本にはやや操作しづらいです。



このEPUB形式の「人間失格」には表紙が登録されていないので、表紙を登録してみます。右上にある「Edit Metadata」をクリックして……



テキストボックスには本に対する付加情報を登録することができるので、タイトルの「人間失格」と入力します。次に「Change image」をクリックして……



「人間失格」の表紙に設定する画像を指定し、「開く」ボタンをクリック。



「Save changes」をクリックすると……



表紙のなかったEPUB形式の「人間失格」に画像が設定されていて……



コレクションでも画像が反映されました。



・全文検索機能を使ってみる

検索フォームに「恥の多い」と入力すると、登録されている本から全文検索され、「人間失格」の本がヒットしました。登録している本の数にもよるとは思いますが、入力してから2秒ほどでレスポンスがあり、高速です。



次に「GIGAZINE 未来への暴言」内にある言葉「フリー」で検索しましたが、こちらは何も表示されませんでした。テキストとして保存している本でないと、全文検索はできませんでした。



なお、「LibreRead」はスマートフォンのウェブブラウザからでも同様の操作方法で利用できます。