如何在 Ubuntu 22.04 上安装 Calibre 电子书服务器如何在 Ubuntu 22.04 上安装 Calibre 电子书服务器如何在 Ubuntu 22.04 上安装 Calibre 电子书服务器如何在 Ubuntu 22.04 上安装 Calibre 电子书服务器
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Ubuntu 22.04 上安装 Calibre 电子书服务器

本教程适用于这些操作系统版本

  • Ubuntu 22.04(Jammy Jellyfish)
  • Ubuntu 20.04(Focal Fossa)

在此页

  1. 先决条件
  2. 第 1 步 - 配置防火墙
  3. 第 2 步 - 下载并安装 Calibre 服务器
  4. 第 3 步 - 创建 Calibre 图书馆并添加您的第一本书
  5. 第 4 步 - 启动 Calibre 服务器
  6. 第 5 步 - 创建 systemd 服务文件
  7. 第 6 步 - 启用用户身份验证
  8. 第 7 步 - 自动将书籍添加到图书馆
  9. 第 8 步 - 安装 Nginx
  10. 第 9 步 - 安装 SSL
  11. 第 10 步 - 配置 Nginx
  12. 结论

Calibre 是一个免费的开源电子书管理器。它作为一个跨平台的桌面应用程序和一个服务器组件一起工作。桌面组件可以在单个设备上管理您的电子书库。服务器组件允许您:

  • 从世界任何地方访问您的图书。
  • 轻松将您的图书传输到移动设备。
  • 与您的朋友和家人分享书籍。
  • 直接在网络上阅读电子书。

在本教程中,您将学习在 Ubuntu 22.04 机器上安装 Calibre 服务器。

先决条件

  • A server running Ubuntu 22.04.

  • A non-root user with sudo privileges.

  • The Uncomplicated Firewall(UFW) is enabled and running.

  • A Fully Qualified domain name pointed to the server. For our tutorial, we will be using the domain calibre.example.com.

  • Everything is updated.

    $ 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 版本。在这里,我们将 Kindle 版本重命名为 filename.mobi,因为 Kindle 本身支持 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

这会在端口 8080 上暴露 Calibre 服务器。要查看服务器,您需要先打开该端口。运行以下命令打开8080端口。

$ sudo ufw allow 8080

在浏览器中打开 URL http://:8080/,您将看到以下屏幕。根据您选择的操作系统主题,屏幕将显示为深色或浅色。

单击 calibre-library 链接以查看您在上一步中添加的图书。

在终端上按 Ctrl + C 键关闭服务器。

您可以使用不同的端口来公开 Calibre 服务器。为此,请使用以下命令。您需要确保该端口在防火墙中打开。

$ calibre-server calibre-library --port 7654

第 5 步 - 创建 systemd 服务文件

要使 Calibre 服务器进程持久化并在重启后仍然存在,您需要为其创建一个 systemd 服务文件。

在目录 /etc/sytemd/system/ 中创建一个名为 calibre-server.service 的文件并打开它进行编辑。

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

将以下代码粘贴到其中。

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

[Service]
Type=simple
User=<username>
Group=<username>
ExecStart=/opt/calibre/calibre-server /home/<username>/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/<username>/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-<username>'
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 数据库来存储用户凭证。启动 Calibres 用户管理脚本以添加用户。

$ sudo calibre-server --manage-users

您将获得四个选项并要求您做出选择。按 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/<username>/calibre-library" --userdb "/home/<username>/.config/calibre/server-users.sqlite" --enable-local-write --enable-auth
...

通过按 Ctrl+W 并在出现提示时输入 Y 来保存并关闭文件。

重新加载服务守护进程并启动服务。

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

如果您打开库 URL,系统将提示您输入用户名和密码,然后才能访问它。输入您的凭据并按登录按钮访问库。

第 7 步 - 自动将书籍添加到图书馆

Calibre 允许您使用 Cron 作业自动将书籍添加到图书馆。它通过定期查看目录中的新书并将它们添加到图书馆来实现。这是添加书籍的最快方式,您只需将它们上传到目录,它们就会很快出现在图书馆中,无需任何人工干预。

第一步是创建一个监视目录。

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

将 Leo Tolstoy 的书战争与和平 从 Project Gutenberg 下载到此目录。

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

如果您注意到,这次我们正在下载一个有图像的版本。关于古腾堡计划的书因书而异。有些有可用的图像版本,有些则没有。 Calibre 可以很好地处理任何一种格式。

打开 Crontab 编辑器。

$ crontab -e

如果这是您第一次使用 Crontab,您将被要求选择一个编辑器。

no crontab for <username> - 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]:

输入 1 选择 Nano 编辑器,因为它是最容易操作的。

在文件底部添加以下命令。

*/5 * * * * calibredb add /home/<username>/calibre-watch/ -r --with-library http://localhost:8080#calibre-library --username mycalibreuser --password StrongPassword! && rm -r /home/<username>/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 证书通过专用域启用访问。

我们需要安装 Certbot 来为 Calibre 生成 SSL 证书。您可以使用 Ubuntu 存储库安装 Certbot,也可以使用 Snapd 工具获取最新版本。我们将使用 Snapd 版本。

Ubuntu 22.04 默认安装了 Snapd。运行以下命令以确保您的 Snapd 版本是最新的。

$ sudo snap install core

安装 Certbot。

$ sudo snap install --classic certbot

使用以下命令确保可以通过创建指向 /usr/bin 目录的符号链接来运行 Certbot 命令。

$ 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  -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 添加的书在图书馆也有。

结论

我们关于使用 Nginx 在 Ubuntu 22.04 机器上安装 Calibre Server 的教程到此结束。我们还配置了 Calibre 以启用基本身份验证并添加对自动添加新书的支持。 Calibre Server 附带了许多命令行工具。要了解有关它们的更多信息,您可以访问 Calibre 文档。如果您有任何问题,请在下面的评论中发表。

©2015-2025 艾丽卡 support@alaica.com