序章

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

  • 世界中のどこからでもあなたの本にアクセスできます
  • 書籍をモバイルデバイスに簡単に転送
  • 友達や家族と本を共有する

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

このチュートリアルでは、Ubuntu18.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

で上下にスクロールできます kj キーとヒット q 完了したらターミナルに戻ります。

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

  1. sudo sh linux-installer.sh

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

インストール後、必ず所有権を設定してください ~./config/ ユーザーとグループにファイルし、 root. これは、キャリバーが正しく機能するために重要です。

所有権を変更し、強調表示されたテキストを sudo ユーザーとグループ:

  1. sudo chown sammy:sammy ~/.config/

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

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

キャリバーの機能を調べるために、 .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ブラウザで口径のコンテンツサーバーにアクセスする前に、サーバーがポートでトラフィックを受け入れることができることを確認する必要があります 8080、これはcalibreのデフォルトポートです。 前提条件のセクションにあるサーバーの初期設定ガイドに従っている場合は、 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

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

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

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

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

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

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

  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 サーバーの起動時にフラグを立てます。 サーバーが稼働しているときは、 calibredb A ChristmasCarolの場合と同じように本を追加するコマンド。 代わりに、実行中のサーバーを介してこれを行う必要があります。これは、サーバーが新しいファイルをディスクに書き込むためのアクセス許可を必要とすることを意味します。 このフラグを使用すると、ローカルで要求を受信する限り、これを実行できます。

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

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

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

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

  1. sudo reboot

数分待ってから訪問 http://your_server_ip:8080 再度ローカルWebブラウザーで、calibreContentサーバーが自動的に起動することを確認します。

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

ステップ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

認証を有効にするには、 --enable-auth 行の終わりにフラグを立てる ExecStart. 次のようになります。

. . .
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 それがcalibreが実行されるデフォルトのポートであるため、ライブラリにアクセスしたとき。 次に、ポートでリクエストをリッスンするようにApache2を設定します 80 (HTTPトラフィックのデフォルトポート)、ローカルで実行されているcalibreサーバーへのプロキシリクエスト :8080、およびこれらをエンドユーザーに透過的に提供するため、ポート番号の指定について心配する必要はありません。 その後、ポート上のすべてのトラフィックを保護します 443 SSL証明書を使用します。

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

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

次に、サーバーがポートでのトラフィックを許可していることを確認します 80443. ポートを閉じる 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 ブラウザで、calibreContentサーバーがロードされていることを確認します。 Apacheがサイトにサービスを提供しています。

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

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

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

  1. sudo snap install --classic certbot

次に、Certbotを実行します。

  1. sudo certbot --apache

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

  • プロンプトが表示されたらメールアドレスを入力してください
  • 入る A プロンプトが表示されたら利用規約に同意する
  • 選ぶ Y また N メールアドレスをEFFと共有するように求められたら
  • 選ぶ 1 証明書が必要なドメインについてプロンプトが表示されたら(1つだけにする必要があります)

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

これで、次の場所でライブラリに安全にアクセスできます。 https://your_domain.

結論

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

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