開発者ドキュメント

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

著者はCOVID-19救済基金を選択し、 Write forDOnationsプログラムの一環として寄付を受け取りました。

序章

calibreは、クロスプラットフォームのデスクトップアプリケーションでよく知られている無料のオープンソースの電子書籍マネージャーです。 Calibreを使用して、単一のデバイスで電子書籍ライブラリを管理できますが、アプリケーションには強力なサーバーコンポーネントも含まれています。 電子書籍サーバーを設定すると、次のことが可能になります。

caliber Contentサーバーには、書籍を提供するためのバックエンドと、ライブラリを検索したり、個々のタイトルをダウンロードしたり、Webブラウザから直接書籍を読んだりするための基本的なフロントエンドが含まれています。 このサーバーは、KindleやKoboなどの多くのe-inkリーダーに同梱されている基本的なブラウザーなど、さまざまなデバイスで動作する基本的なモバイルインターフェイスも提供します。

このチュートリアルでは、Ubuntu20.04でキャリバーコンテンツサーバーをセットアップして使用します。 具体的には、キャリバーサーバーをダウンロードしてインストールし、サーバーの再起動時に自動的に起動するようにキャリバーをサービスとして構成し、コマンドラインツールを使用してライブラリに書籍を追加します。 また、特定のディレクトリからライブラリに新しい本を自動的に追加するcronジョブを設定し、サーバーに認証を追加して自分だけがアクセスできるようにし、無料のSSL/TLS証明書を追加してライブラリにサービスを提供するオプションもあります。セキュリティを強化するためのHTTPS。

警告:すべてのクリエイティブコンテンツと同様に、他者が作成した素材に関連する著作権ライセンスを尊重することが重要です。 このチュートリアルでは、 ProjectGutenbergから合法的にダウンロードされたパブリックドメインの書籍を使用しています。この書籍には60,000冊以上の無料の電子書籍があります。

前提条件

ステップ1— CalibreContentServerのダウンロードとインストール

キャリバーはUbuntuのソフトウェアリポジトリに存在しますが、そのバージョンは最新リリースよりも遅れていることがよくあります。 したがって、公式の口径のドキュメントでは、代わりに、サイトでホストされているバイナリからインストールすることを推奨しています。

まず、いくつかの必要な依存関係をインストールします。

  1. sudo apt update && sudo apt install -y libfontconfig libgl1-mesa-glx

次に、キャリバーサーバーをダウンロードしてインストールします。

  1. wget https://download.calibre-ebook.com/linux-installer.sh

スクリプトの内容を調べます。

  1. less linux-installer.sh

kおよびjキーを使用して上下にスクロールし、qを押して終了したらターミナルに戻ることができます。

次に、スクリプトを実行してcalibreをインストールします。

  1. sudo sh linux-installer.sh

caliberはデスクトップ環境を想定していますが、ヘッドレスサーバー上にデスクトップ環境が見つからないため、デスクトップ統合の失敗に関する警告が表示されます。 コマンドラインツールとWebインターフェイスを介してキャリバーを完全に制御するため、これらを無視しても安全です。

calibreをインストールしたので、その機能の調査を開始できます。

ステップ2—ライブラリを作成して最初の本を追加する

Calibreの機能を調べるために、.epubまたは.mobiの電子書籍をダウンロードしてみましょう。 例として、 ProjectGutenbergのCharlesDickensによるAChristmasCarolを使用します。 Project Gutenbergは、無料のパブリックドメインの文献の大規模なリポジトリを維持しており、電子書籍の優れたリソースです。

次のコマンドを実行して、この本をサーバーにダウンロードします。

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

次に、calibreが電子書籍ライブラリとして使用できるディレクトリを作成します。

  1. mkdir calibre-library

そして、calibredbコマンドを使用して、ダウンロードしたばかりの本を新しいライブラリに追加します。

  1. calibredb add *.mobi --with-library calibre-library/

次の出力が表示されます。

Output
Added book ids: 1

ライブラリに本を追加すると、口径を開始してアプリケーションを探索できるようになります。

ステップ3— CalibreContentServerを実行してライブラリを表示する

Calibreをインストールし、本をダウンロードすると、アプリケーションのユーザーインターフェイスを探索する準備が整います。 ただし、Webブラウザでcalibre Contentサーバーにアクセスする前に、サーバーがcalibreのデフォルトポートであるポート8080でトラフィックを受け入れることができることを確認する必要があります。 前提条件のセクションにあるサーバーの初期設定ガイドに従った場合は、ufwまたはUncomplicatedFirewallを有効にしました。 ここで、ポート8080がファイアウォールを通過できるようにする必要があります。

次のコマンドを使用して、ポート8080を開きます。

  1. sudo ufw allow 8080

ufwのステータスをチェックして、ポートが開いていることを確認します。

  1. sudo ufw status

次のような出力が表示されます。

Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 8080 ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 8080 (v6) ALLOW Anywhere (v6)

次に、次のコマンドを実行して、キャリバーコンテンツサーバーを起動します。

  1. calibre-server calibre-library

calibre-serverはサーバーを起動するために使用されるコマンドであり、calibre-libraryは以前に作成し、calibreにライブラリとして使用するように指示したディレクトリの名前です。

次のような出力が表示されます。

calibre server listening on 0.0.0.0:8080
OPDS feeds advertised via BonJour at: your_server_ip port: 8080

ローカルマシンからyour_server_ip:8080(サーバーのIPアドレスに置き換えてください)にアクセスすると、デフォルトの口径画面が表示されます。 calibre-library をクリックすると、前の手順で追加した本が表示されます。

Ctrl+Cを押して、開始した手動サーバープロセスを停止します。

キャリバーコンテンツサーバーを実行するこの方法はうまく機能しますが、サーバーへのSSH接続を閉じた後でも、ライブラリを常に機能させたい場合があります。 サーバーを再起動した後でも常に実行されるように、キャリバーコンテンツサーバーをサービスに変えましょう。

ステップ4—口径のコンテンツサーバー用のサービスを作成する

キャリバーコンテンツサーバーの使いやすさを向上させるために、手動サーバープロセスを起動時に開始するサービスに置き換えましょう。

まず、ディレクトリ/etc/sytemd/system/calibre-server.serviceというファイルを作成します。

  1. sudo nano /etc/systemd/system/calibre-server.service

次に、次の構成を追加します。これにより、起動時にcalibreContentサーバーが起動します。 強調表示されたテキストをユーザーとグループに置き換えてください。

calibre-server.service
## startup service
[Unit]
Description=calibre content server
After=network.target

[Service]
Type=simple
User=sammy
Group=sammy
ExecStart=/opt/calibre/calibre-server /home/sammy/calibre-library --enable-local-write

[Install]
WantedBy=multi-user.target

ここでは、サーバーの起動時に--enable-local-writeフラグを使用するようにサービスに指示します。 サーバーが稼働しているときは、 A Christmas Carol で直接行ったように、calibredbコマンドを使用して本を追加することはできません。 代わりに、後で説明するように、実行中のサーバーを介してこれを実行する必要があります。これは、サーバーが新しいファイルをディスクに書き込むためのアクセス許可を必要とすることを意味します。 このフラグを使用すると、ローカルで要求を受信する限り、これを実行できます。

ファイルを保存して閉じます。

次に、サービスを有効にして開始します。

  1. sudo systemctl enable calibre-server
  2. sudo systemctl start calibre-server

サーバーを再起動します。

  1. sudo reboot

数分待ってから、ローカルWebブラウザでhttp://your_server_ip:8080に再度アクセスして、口径のコンテンツサーバーが自動的に起動することを確認します。

次に、アプリケーションに認証を追加しましょう。

ステップ5—(オプション)ユーザー認証を口径のコンテンツサーバーに追加する

これで、どのデバイスからでもアクセスできる、完全に機能する口径のコンテンツサーバーができました。 ただし、現在、サーバーのIPアドレスを知っている人なら誰でも電子書籍にアクセスできます。 あなたはこれを望まないかもしれません。 代わりに、ユーザー名とパスワードを使用して訪問者に認証を強制できるように、calibreの組み込みユーザー管理システムを構成しましょう。

まず、SSHでサーバーに戻り、キャリバーを停止します。 これにより、calibreのデータベースを直接操作できるようになります。

  1. sudo systemctl stop calibre-server

次に、calibreのユーザー管理スクリプトを開始します。

  1. calibre-server --manage-users

プロンプトが表示されたら、新しいユーザーを追加することを選択します。 次に、ユーザー名と強力なパスワードを選択します。 次のような最終的な出力メッセージが表示されます。

Output
User mycalibreuser added successfully!

次に、サービスに1つの小さな編集を加える必要があります。

calibre-server.serviceを再度開きます:

  1. sudo nano /etc/systemd/system/calibre-server.service

認証を有効にするには、ExecStartで始まる行の終わりに--enable-authフラグを追加します。 次のようになります。

. . .
ExecStart=/opt/calibre/calibre-server /home/sammy/calibre-library --enable-local-write --enable-auth
. . .

ファイルを保存して閉じます。

サービスデーモンを更新してサービスファイルを再スキャンし、次のコマンドでキャリバーサーバーを再起動します。

  1. sudo systemctl daemon-reload
  2. sudo systemctl start calibre-server

ライブラリに再度アクセスすると、ライブラリへのアクセスを許可する前に、ユーザー名とパスワードの入力を求められるようになりました。

Calibreコンテンツサーバーに機能を追加する方法は他にもあります。 次のステップでは、ダウンロードした本をキャリバーライブラリに自動的に追加するcronジョブを追加します。

ステップ6—(オプション)本をキャリバーライブラリに自動的に追加する

特定のディレクトリを監視し、見つかった本をキャリバーライブラリに追加するcronジョブを設定すると便利な場合があります。 このようにして、本をこのフォルダにダウンロードまたはアップロードでき、それらはcalibreWebインターフェイスを介して自動的に利用可能になります。

ホームディレクトリにbooks-to-addというフォルダを作成し、次の場所に移動します。

  1. mkdir ~/books-to-add
  2. cd ~/books-to-add

このディレクトリに新しい本をダウンロードします。 次のコマンドを使用して、ProjectGutenbergからAlice inWonderlandをダウンロードします。

  1. wget https://www.gutenberg.org/ebooks/11.epub.images -o alice.epub

次に、crontabを開きます。

  1. crontab -e

ここでは、このディレクトリ内のすべてのファイルをcalibreに追加してから削除するスクリプトを設定します(本をcalibreに追加すると、ライブラリディレクトリにファイルのコピーが作成されるため、追加された元のファイルを削除できます)。

次のコンテンツを追加します。

/ var / spool / cron / crontabs / your_username
*/5 * * * * calibredb add /home/sammy/books-to-add/ -r --with-library http://localhost:8080#calibre-library --username mycalibreuser --password StrongPassword! && rm -r /home/sammy/books-to-add/*

ファイルを保存して閉じます。

これは5分ごとに実行されるため、新しい本がWebインターフェイスに表示されるまで長く待つ必要はありません。 数分待ってから、ローカルWebブラウザにライブラリをリロードします。 新しい本がAChristmasCarolの横に表示されます。

ステップ7—(オプション)Apache2をインストールし、HTTPS経由でライブラリを提供する

ライブラリにアクセスするにはユーザー名とパスワードが必要ですが、HTTP経由でライブラリを提供し、認証するたびにユーザー名とパスワードを暗号化せずに送信するため、実際には安全ではありません。 より安全なオプションは、すべてのトラフィックがHTTPSを使用して暗号化されるようにすることです。 ドメイン名を所有している場合は、これをサーバーにポイントし、Let’sEncryptを使用して無料のSSL証明書をインストールできます。 (ebooks.your_domainのようなサブドメインを使用することもできます。)

Apache2のインストールと設定

WebサーバーApache2をcalibreのリバースプロキシとして使用します。 以前は、ライブラリにアクセスしたときにポート番号:8080を追加する必要がありました。これは、キャリバーが実行されるデフォルトのポートであるためです。 次に、ポート80(HTTPトラフィックのデフォルトポート)でリクエストをリッスンし、:8080でローカルに実行されているcalibreサーバーにリクエストをプロキシし、これらを最後まで処理するようにApache2を設定します。ユーザーは透過的に使用できるため、ポート番号の指定について心配する必要はありません。 次に、SSL証明書を使用してポート443のすべてのトラフィックを保護します。

Apache2をインストールし、次のコマンドで必要なプロキシモジュールを有効にします。

  1. sudo apt install -y apache2
  2. sudo a2enmod proxy proxy_http

次に、サーバーがポート80および443でトラフィックを許可していることを確認します。 ポート8080も閉じます。

  1. sudo ufw allow 'Apache Full'
  2. sudo ufw delete allow 8080

次に、/etc/apache2/sites-available/your_domain.confでファイルを作成して開きます。

  1. sudo nano /etc/apache2/sites-available/your_domain.conf

次の構成を追加します。これにより、ドメインがキャリバーサーバーにリンクされます。

/etc/apache2/sites-available/your_domain.conf
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

<VirtualHost *:80>
    ServerName your_domain
    AllowEncodedSlashes On
    ProxyPreserveHost On
    ProxyPass "/"  "http://localhost:8080/"
</VirtualHost>

最後に、この新しいサイト構成を有効にします。

  1. sudo a2ensite your_domain.conf
  2. systemctl reload apache2

ブラウザでhttp://your_domainにアクセスして、キャリバーコンテンツサーバーがロードされていることを確認します。 Apacheがサイトにサービスを提供しています。

CertbotのインストールとSSL証明書の構成

最後のステップとして、Certbotを使用してすべてのトラフィックを保護しましょう。

まず、Certbotをインストールします。

  1. sudo snap install --classic certbot

次に、Certbotを実行します。

  1. sudo certbot --apache

Certbotプログラムは、証明書をインストールするための一連のプロンプトを表示します。

完了すると、おめでとうメッセージが表示されます。

これで、https://yourdomainでライブラリに安全にアクセスできます。

結論

このチュートリアルでは、口径の電子ブックサーバーをセットアップします。 サーバーの起動時に起動するようにサービスに変換し、新しい本を自動的に検索してライブラリに追加するcronジョブを追加し、認証とSSL証明書を設定してセキュリティを確保しました。

プロジェクトを拡張するには、個人のライブラリまたは Project Gutenberg StandardEbooksなどから本を追加できます。 コンテンツライブラリに関連する著作権法を常に尊重することを忘れないでください。

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