インストールガイド · 4 min read · Oct 11, 2025

Ubuntu 22.04にCalibre Ebook Serverをインストールする方法

Calibreは無料でオープンソースの電子書籍管理ソフトウェアです。クロスプラットフォームのデスクトップアプリケーションとサーバーコンポーネントとして機能します。デスクトップコンポーネントは、単一のデバイス上で電子書籍ライブラリを管理できます。そして、サーバーコンポーネントを使用すると、

  • 世界中のどこからでも本にアクセスできます。
  • モバイルデバイスに本を簡単に転送できます。
  • 友人や家族と本を共有できます。
  • ウェブ上で直接電子書籍を読むことができます。

このチュートリアルでは、Ubuntu 22.04マシンにCalibreサーバーをインストールする方法を学びます。

前提条件

  • Ubuntu 22.04を実行しているサーバー。
  • sudo権限を持つ非rootユーザー。
  • 簡単なファイアウォール(UFW)が有効で実行中であること。
  • サーバーにポイントされた完全修飾ドメイン名。チュートリアルでは、ドメインcalibre.example.comを使用します。
  • すべてが更新されていること。 $ sudo apt update && sudo apt upgrade

ステップ1 - ファイアウォールの設定

パッケージをインストールする前の最初のステップは、HTTPおよびHTTPS接続を許可するためにファイアウォールを設定することです。

ファイアウォールの状態を確認します。

$ sudo ufw status

次のような出力が表示されるはずです。

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)

HTTPおよびHTTPSポートを許可します。

$ sudo ufw allow http
$ sudo ufw allow https

再度状態を確認して確認します。

$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443/tcp                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443/tcp (v6)               ALLOW       Anywhere (v6)

ステップ2 - Calibreサーバーのダウンロードとインストール

Ubuntu 22.04にはCalibreが付属していますが、最新バージョンを取得するために直接インストールする方が良いです。

最初のステップは、いくつかの依存関係をインストールすることです。

$ sudo apt install libopengl0 libxkbcommon-x11-0 libegl1 libfontconfig libgl1-mesa-glx

Calibreサーバーインストーラーをダウンロードします。

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

インストーラスクリプトを実行可能にします。

$ chmod +x ./linux-installer.sh

インストーラーを実行します。

$ sudo ./linux-installer.sh

インストーラーはデスクトップを期待しているため、いくつかの警告が表示されますが、無視しても安全です。

ステップ3 - Calibreライブラリを作成し、最初の本を追加する

次のステップは、Calibreライブラリを設定し、いくつかの本を追加することです。チュートリアルでは、アーサー・コナン・ドイルの『シャーロック・ホームズの冒険』をプロジェクト・グーテンベルクからダウンロードします。

$ wget http://www.gutenberg.org/ebooks/1661.kindle.noimages -O adventuresofsherlockholmes.mobi

常にサイトから本のKindleバージョンを取得してください。ここでは、Mobi形式がKindleでネイティブにサポートされているため、Kindleバージョンの名前をfilename.mobiに変更しています。また、Epubバージョンよりも優れたフォーマットオプションを提供します。

Calibreライブラリ用のディレクトリを作成します。

$ mkdir calibre-library

calibredbコマンドを使用して、ダウンロードした本をライブラリに追加します。コマンド自体でライブラリの場所を指定しました。

$ calibredb add adventuresofsherlockholmes.mobi --with-library calibre-library/
Added book ids: 1

次のようにして、複数の本を一度に追加できます。

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

ステップ4 - Calibreサーバーを起動する

本の準備が整ったので、Calibreサーバーを起動する時が来ました。

$ calibre-server calibre-library

コマンドcalibre-serverは、ライブラリの場所を引数として取ります。次のような出力が表示されるはずです。

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

これにより、Calibreサーバーがポート8080で公開されます。サーバーを表示するには、最初にポートを開く必要があります。次のコマンドを実行してポート8080を開きます。

$ sudo ufw allow 8080

ブラウザでURL http://:8080/を開くと、次の画面が表示されます。画面は、オペレーティングシステムのテーマの選択に応じて、暗いまたは明るいものとして表示されます。

Calibre Server Home

前のステップで追加した本を表示するには、calibre-libraryリンクをクリックします。

Calibre Server Library View

ターミナルでCtrl + Cキーを押してサーバーを閉じます。

Calibreサーバーを公開するために別のポートを使用することもできます。そのためには、次のコマンドを使用します。ポートがファイアウォールで開いていることを確認する必要があります。

$ calibre-server calibre-library --port 7654

ステップ5 - systemdサービスファイルを作成する

Calibreサーバープロセスを永続的にし、再起動後も生き残らせるために、systemdサービスファイルを作成する必要があります。

/etc/systemd/system/ディレクトリにcalibre-server.serviceというファイルを作成し、編集のために開きます。

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

次のコードを貼り付けます。

[Unit]
Description=Calibre Server
After=network.target

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

[Install]
WantedBy=multi-user.target

--enable-local-writeフラグは、サーバーにライブラリに新しい本を追加するための書き込みアクセスを与えます。これは、サーバーが実行中の間はcalibredbコマンドを使用して本を追加できないためです。

上記のコードのをLinuxシステムのユーザー名に置き換えます。Ctrl+Wを押してファイルを保存し、プロンプトが表示されたらYを入力して閉じます。

サービスファイルを有効にするために、サービスデーモンを再読み込みします。

$ sudo systemctl daemon-reload

Calibreサービスを有効にして起動します。

$ sudo systemctl enable calibre-server
$ sudo systemctl start calibre-server

サービスの状態を確認します。

$ sudo systemctl status calibre-server
? calibre-server.service - Calibre Server
     Loaded: loaded (/etc/systemd/system/calibre-server.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2022-07-25 07:23:42 UTC; 15s ago
   Main PID: 1877 (BonJour)
      Tasks: 13 (limit: 2241)
     Memory: 53.3M
        CPU: 762ms
     CGroup: /system.slice/calibre-server.service
             ??1877 /opt/calibre/bin/calibre-server /home//calibre-library --enable-local-write

Jul 25 07:23:42 calibre systemd[1]: Started Calibre Server.
Jul 25 07:23:42 calibre calibre-server[1877]: QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-'
Jul 25 07:23:42 calibre calibre-server[1877]: calibre server listening on 0.0.0.0:8080
Jul 25 07:23:43 calibre calibre-server[1877]: OPDS feeds advertised via BonJour at: 69.28.84.201 port: 8080

ステップ6 - ユーザー認証を有効にする

Calibreにユーザー認証を追加して、ライブラリが誰でも利用できないように保護できます。まず、Calibreサーバーを停止します。

$ sudo systemctl stop calibre-server

CalibreはSQLiteデータベースを使用してユーザー資格情報を保存します。ユーザーを追加するためにCalibreのユーザー管理スクリプトを起動します。

$ sudo calibre-server --manage-users

4つのオプションが表示され、選択を求められます。1を押して新しいユーザーを追加し、ユーザー名とパスワードを提供して新しいユーザーの追加を完了します。

1) Add a new user
2) Edit an existing user
3) Remove a user
4) Cancel

What do you want to do? [1-4]: (Press 1)
Enter the username: howtoforge
Enter the new password for howtoforge:
Re-enter the new password for howtoforge, to verify:
User howtoforge added successfully!

次に、認証を確認するためにサービスファイルを編集する必要があります。編集のためにファイルを開きます。

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

ユーザー認証を有効にするために、ExecStartで始まる行の最後に--enable-authフラグを追加します。

...
ExecStart=/opt/calibre/calibre-server "/home//calibre-library" --userdb "/home//.config/calibre/server-users.sqlite" --enable-local-write --enable-auth
...

Ctrl+Wを押してファイルを保存し、プロンプトが表示されたらYを入力して閉じます。

サービスデーモンを再読み込みし、サービスを起動します。

$ sudo systemctl daemon-reload
$ sudo systemctl start calibre-server

ライブラリのURLを開くと、アクセスを許可する前にユーザー名とパスワードを求められます。資格情報を入力し、Sign inボタンを押してライブラリにアクセスします。

Calibre Server Authentication Prompt

ステップ7 - 自動的に本をライブラリに追加する

Calibreは、Cronジョブを使用してライブラリに本を自動的に追加することを許可します。これは、定期的に新しい本のためにディレクトリを監視し、それらをライブラリに追加することによって行われます。これは、ディレクトリにアップロードするだけで、手動の介入なしにライブラリにすぐに表示されるため、最も迅速な方法です。

最初のステップは、監視ディレクトリを作成することです。

$ mkdir ~/calibre-watch
$ cd ~/calibre-watch

プロジェクト・グーテンベルクからこのディレクトリにレオ・トルストイの本戦争と平和をダウンロードします。

$ wget https://www.gutenberg.org/ebooks/2600.kindle.images -O warandpeace.mobi

今回は画像付きのバージョンをダウンロードしています。これは本によって異なります。プロジェクト・グーテンベルクでは、一部の本には画像バージョンが利用可能であり、一部にはありません。Calibreはどちらの形式でもうまく機能します。

Crontabエディタを開きます。

$ crontab -e

これが初めてのCrontabの使用であれば、エディタを選択するように求められます。

no crontab for  - using an empty one

Select an editor.  To change later, run 'select-editor'.
  1. /bin/nano        <---- easiest
  2. /usr/bin/vim.basic
  3. /usr/bin/vim.tiny
  4. /bin/ed

Choose 1-4 [1]:

操作が最も簡単なNanoエディタを選択するために1を入力します。

ファイルの下部に次のコマンドを追加します。

*/5 * * * * calibredb add /home//calibre-watch/ -r --with-library http://localhost:8080#calibre-library --username mycalibreuser --password StrongPassword! && rm -r /home//calibre-watch/*

このスクリプトは、ディレクトリ/home//calibre-watch内のすべてのファイルをCalibreライブラリに追加し、元のファイルはもはや必要ないため削除します。上記のジョブは5分ごとに実行されます。をLinuxシステムのユーザー名に置き換え、適切な場所にCalibreの資格情報を追加します。

Ctrl+Wを押してファイルを保存し、プロンプトが表示されたらYを入力して閉じます。数分待ってからCalibreサーバーサイトを再読み込みして、追加した本がライブラリに表示されるのを確認します。

ステップ8 - Nginxをインストールする

Ubuntu 22.04には古いバージョンのNginxが付属しています。最新バージョンをインストールするには、公式のNginxリポジトリをダウンロードする必要があります。

Nginxの署名キーをインポートします。

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Nginxの安定版リポジトリを追加します。

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list

システムリポジトリを更新します。

$ sudo apt update

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

$ sudo apt install nginx

インストールを確認します。

$ nginx -v
nginx version: nginx/1.22.0

ステップ9 - SSLをインストールする

現在、CalibreはIPアドレス経由のHTTPポートで公開されています。これをより安全にするために、SSL証明書を使用して専用ドメイン経由でのアクセスを有効にします。

CalibreのSSL証明書を生成するためにCertbotをインストールする必要があります。Ubuntuのリポジトリを使用してCertbotをインストールするか、Snapdツールを使用して最新バージョンを取得できます。Snapdバージョンを使用します。

Ubuntu 22.04にはデフォルトでSnapdがインストールされています。次のコマンドを実行して、Snapdのバージョンが最新であることを確認します。

$ sudo snap install core

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

$ sudo snap install --classic certbot

次のコマンドを使用して、Certbotコマンドが/usr/binディレクトリにシンボリックリンクを作成することで実行できるようにします。

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

次のコマンドを実行してSSL証明書を生成します。

$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d calibre.example.com

上記のコマンドは、サーバーの/etc/letsencrypt/live/calibre.example.comディレクトリに証明書をダウンロードします。

Diffie-Hellmanグループ証明書を生成します。

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

/etc/letsencrypt/renewal/calibre.example.com.confファイルを編集のために開きます。

$ sudo nano /etc/letsencrypt/renewal/calibre.example.com.conf

ファイルの下部に次のコードを貼り付けます。

pre_hook = systemctl stop nginx
post_hook = systemctl start nginx

Ctrl + Xを押してファイルを保存し、プロンプトが表示されたらYを入力します。

Certbotのスタンドアロンオプションを使用してSSL証明書を生成しました。証明書を作成するために独自のWebサーバーを実行するため、更新中はNginxをシャットオフする必要があります。pre_hookおよびpost_hookコマンドは、更新の前後に自動的にNginxサーバーをシャットダウンおよび再起動するため、手動の介入は必要ありません。

SSL更新が正常に機能しているかどうかを確認するために、プロセスのドライランを実行します。

$ sudo certbot renew --dry-run

エラーが表示されなければ、すべて設定完了です。証明書は自動的に更新されます。

ステップ10 - Nginxを設定する

/etc/nginx/nginx.confファイルを編集のために開きます。

$ sudo nano /etc/nginx/nginx.conf

include /etc/nginx/conf.d/*.conf;の前に次の行を追加します。

server_names_hash_bucket_size  64;

Ctrl + Xを押してファイルを保存し、プロンプトが表示されたらYを入力します。

/etc/nginx/conf.d/calibre.confというファイルを作成し、編集のために開きます。

$ sudo nano /etc/nginx/conf.d/calibre.conf

次のコードを貼り付けます。calibre.example.comをあなたのドメイン名に置き換えます。client_max_body_size変数の値を50MBに設定しました。必要に応じて変更できます。

server {

    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    http2_push_preload on; # Enable HTTP/2 Server Push
    
    # Enable TLSv1.3's 0-RTT. Use $ssl_early_data when reverse proxying to
    # prevent replay attacks.
    #
    # @see: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_early_data
    ssl_early_data on;

    server_name calibre.example.com;

    client_max_body_size 50M;

    access_log  /var/log/nginx/calibre.access.log;
    error_log   /var/log/nginx/calibre.error.log;

    ssl_certificate      /etc/letsencrypt/live/calibre.example.com/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/calibre.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/calibre.example.com/chain.pem;
    
    ssl_session_timeout  5m;
    ssl_session_cache shared:MozSSL:10m;
    ssl_session_tickets off;
    
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;        
    }
}
# enforce HTTPS
server {
    listen 80;
    listen [::]:80;
    server_name  calibre.example.com;
    return 301   https://$host$request_uri;
}

Ctrl + Xを押してファイルを保存し、プロンプトが表示されたらYを入力します。

Nginxの設定を確認します。

$ sudo nginx -t

設定ファイルを有効にするためにNginxサーバーを再起動します。

$ sudo systemctl restart nginx

ブラウザでhttps://calibre.example.comにアクセスしてCalibreにアクセスします。Cronを介して追加された本もライブラリに表示されていることがわかります。

Calibre Library Refresh

結論

これで、Nginxを使用してUbuntu 22.04マシンにCalibre Serverをインストールするチュートリアルが完了しました。また、基本認証を有効にし、新しい本を自動的に追加するサポートを追加するようにCalibreを設定しました。Calibre Serverには多くのコマンドラインツールが付属しています。それらについて詳しく知りたい場合は、Calibreのドキュメントを訪問してください。質問がある場合は、下のコメントに投稿してください。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。