如何在 Ubuntu 20.04 上安装 Calibre 电子书服务器
本教程适用于这些操作系统版本
- Ubuntu 22.04(Jammy Jellyfish)
- Ubuntu 20.04(Focal Fossa)
在此页
- 先决条件
- 配置防火墙
- 下载并安装 calibre 服务器
- 创建图书馆并添加您的第一本书
- 运行 calibre 服务器
- 为 calibre 服务器创建服务
- 将用户身份验证添加到 calibre 服务器
- 自动将书籍添加到您的图书馆
- 安装 Nginx
- 安装 SSL
- 配置 Nginx 以使用 SSL 通过代理服务 Calibre
- 结论
Calibre 是一个免费的开源电子书管理器。它作为跨平台桌面应用程序与服务器组件一起发布,可用于管理您的电子书库。
将 calibre 设置为服务器可以让您从世界任何地方访问您的书籍,并可以与朋友和家人分享它们。您也可以将它们传输到您的移动设备以供日后阅读。 Calibre 服务器还允许您直接在网络上阅读电子书。
在本教程中,您将了解如何在基于 Ubuntu 20.04 的服务器上安装和使用 calibre 电子书服务器。
先决条件
-
An Ubuntu 20.04 based server with a user with sudo privileges.
-
Keep the server updated.
$ sudo apt update && sudo apt upgrade
配置防火墙
Ubuntu 20.04 默认带有简单防火墙(UFW)。如果不是,请先安装它。
$ sudo apt install ufw
启用 SSH 端口。
$ sudo ufw allow "OpenSSH"
启用防火墙。
$ sudo ufw enable
启用 calibre 服务器使用的端口 8080。
$ sudo ufw allow 8080
检查防火墙状态。
$ sudo ufw status
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
8080 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
8080 (v6) ALLOW Anywhere (v6)
下载并安装 calibre 服务器
Ubuntu 20.04 确实附带了 calibre,但最好直接从他们的站点安装它而不是获取最新版本。
首先,您需要安装一些依赖项。
$ sudo apt install libfontconfig libgl1-mesa-glx
下载 calibre 服务器安装程序。
$ wget https://download.calibre-ebook.com/linux-installer.sh
将安装程序脚本设置为可执行文件。
$ chmod +x ./linux-installer.sh
运行安装程序。
$ sudo ./linux-installer.sh
您会收到一些警告,因为安装程序需要桌面系统而不是无头服务器。忽略它们是安全的。
创建图书馆并添加您的第一本书
对于我们的教程,我们将从 Project Gutenberg 下载一本书作为示例。古腾堡计划是一个庞大的免费公共领域书籍库。
运行以下命令下载您的第一本书。本着最近万圣节的精神,让我们下载亨利·詹姆斯的恐怖故事“螺丝的转动”。
$ wget http://www.gutenberg.org/ebooks/209.kindle.noimages -O turnofthescrew.mobi
为您的 calibre 库创建一个目录。
$ mkdir calibre-library
使用 calibredb
命令将您刚下载的书添加到您的 calibre 图书馆。
$ calibredb add *.mobi --with-library calibre-library/
Added book ids: 1
现在是开始口径的时候了。
运行口径服务器
运行以下命令以启动 calibre 内容服务器。
$ calibre-server calibre-library
calibre-server
是用于启动服务器的命令,calibre-library
是我们刚刚创建的目录的名称,服务器将使用该目录加载界面。
您应该会看到类似的输出。
calibre server listening on 0.0.0.0:8080
OPDS feeds advertised via BonJour at: your_server_ip port: 8080
在浏览器中启动 URL http://
,您将看到默认的口径屏幕。

单击 calibre-library
,您将看到刚刚下载的书 The turn of the screw
。

您可以通过在命令行中按 Ctrl+C 来停止服务器。
Calibre 服务器默认使用端口 8080。您可以通过在启动期间修改命令来更改它。
$ calibre-server calibre-library --port 7530
然后,您可以通过在浏览器中启动 URL http://
来进行检查。
您还需要通过防火墙允许该端口。
$ sudo ufw allow 7530
为 calibre 服务器创建服务
您可能希望 calibre 即使在服务器重新启动后也能永远运行。为此,您需要为 calibre 创建一个服务,该服务将在启动时自动启动它。
创建文件 /etc/systemd/system/calibre-server.service
并使用 Nano 编辑器打开它进行编辑。
$ sudo nano /etc/systemd/system/calibre-server.service
粘贴以下代码。
## startup service
[Unit]
Description=calibre content 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
将 <username>
替换为 Ubuntu 服务器上的实际系统用户。
通过按 Ctrl+W 并在出现提示时输入 Y 来保存并关闭文件。
启用并启动 calibre 服务。
$ sudo systemctl enable calibre-server
$ sudo systemctl start calibre-server
您可以通过重新启动服务来检查。
$ sudo reboot
等待几分钟,然后在浏览器中打开 http://
以确保 calibre 正常工作。
向 calibre 服务器添加用户身份验证
现在,任何知道您的服务器 IP 的人都可以访问 calibre 服务器。我们可以通过向服务器添加用户身份验证来更改它。
首先,停止 calibre 服务器。
$ sudo systemctl stop calibre-server
启动 calibres 用户管理脚本。您可以指定存储用户数据库的路径。它以 SQLite 数据库的形式存储。
$ sudo calibre-server --userdb /home/<username>/.config/calibre/server-users.sqlite --manage-users
1) Add a new user
2) Edit an existing user
3) Remove a user
4) Cancel
What do you want to do? [1-4]: 1
Enter the username: howtoforge
Enter the new password for howtoforge:
Re-enter the new password for howtoforge, to verify:
User howtoforge added successfully!
输入 1 创建一个新用户并选择一个强密码。
接下来,我们需要编辑之前设置的口径服务。
打开服务文件。
$ sudo nano /etc/systemd/system/calibre-server.service
将 --enable-auth
标志添加到以 ExecStart
开头的行的末尾以启用用户身份验证。
. . .
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
下次启动该站点时,系统会要求您输入用户名和密码才能访问图书馆。

自动将书籍添加到您的图书馆
我们可以设置一个可以被 calibre 服务器跟踪的监视文件夹,这样每当您向该文件夹添加新书时,它就会自动添加到 Calibre 图书馆。
创建一个监视文件夹并切换到它。
$ mkdir ~/watchbooks
$ cd ~/watchbooks
使用以下命令将新书下载到该文件夹。
$ wget http://www.gutenberg.org/ebooks/514.epub.noimages -o littlewomen.epub
接下来,打开 Crontab 编辑器。
$ crontab -e
在末尾添加以下行。
*/5 * * * * calibredb add /home/<username>/watchbooks/ -r --with-library http://localhost:8080#calibre-library --username calibreuser --password YourPassword && rm -r /home/<username>/watchbooks/*
此脚本会将目录 /home/
中的所有文件添加到 calibre 库中,并删除所有原始文件,因为它们不再需要。
cron 作业将每 5 分钟运行一次。等待几分钟并重新加载 calibre 服务器站点,以查看您刚刚添加的图书出现在图书馆中。
安装 Nginx
在此步骤中,我们将安装 Nginx 网络服务器以通过代理为 calibre 服务器提供服务。这样您就可以通过域名访问它,例如 calibre.yourdomain.com
。您也无需担心指定任何端口号。使用 Nginx 作为代理,我们可以通过 SSL 为网站提供服务。
运行以下命令来安装 Nginx。
$ sudo apt install nginx
打开端口 80 和 443 并关闭端口 8080,因为它不再需要。
$ sudo ufw allow "Nginx Full"
$ sudo ufw delete allow 8080
Nginx Full
是 ufw 防火墙的应用程序配置文件,它将自动打开端口 80 和 443。
$ sudo ufw status
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx Full ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx Full ALLOW Anywhere (v6)
安装 SSL
我们将使用 Let's Encrypt 服务安装 SSL。
为此,安装 Certbot。
$ sudo apt install certbot
停止 Nginx,因为它会干扰 Certbot 进程。
$ sudo systemctl stop nginx
生成证书。我们还需要创建一个 DHParams 证书。
$ export LDOMAIN="calibre.yourdomain.com"
$ export LEMAIL=""
$ sudo certbot certonly --standalone -d $LDOMAIN --preferred-challenges http --agree-tos -n -m $LEMAIL --keep-until-expiring
$ sudo systemctl start nginx
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
我们还需要设置一个 cron 作业来自动更新 SSL。要打开 crontab 编辑器,请运行以下命令
$ sudo crontab -e
上面的命令打开 Crontab 编辑器。
将以下行粘贴到底部。
25 2 * * * /usr/bin/certbot renew --quiet --pre-hook “systemctl stop nginx” --post-hook “systemctl start nginx”
上面的 cron 作业将在每天凌晨 2:25 运行 certbot。您可以将其更改为任何您想要的。
通过按 Ctrl + X 并在出现提示时输入 Y 来保存文件。
配置 Nginx 以使用 SSL 通过代理服务 Calibre
我们需要编辑 Nginx 配置文件来添加 SSL 配置。
运行以下命令为 Calibre 服务器添加配置文件。
$ sudo nano /etc/nginx/sites-available/calibre.conf
将以下代码粘贴到编辑器中。
server {
listen 80;
listen [::]:80;
server_name calibre.yourdomain.com;
# enforce https
return 301 https://$server_name:443$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name calibre.yourdomain.com;
location / {
proxy_pass http://127.0.0.1:8080;
}
# Use Mozilla's guidelines for SSL/TLS settings
# https://mozilla.github.io/server-side-tls/ssl-config-generator/
ssl_certificate /etc/letsencrypt/live/calibre.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/calibre.yourdomain.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m; # about 40000 sessions
ssl_session_tickets off;
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_prefer_server_ciphers off;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
}
按 Ctrl + X 关闭编辑器,并在提示保存文件时按 Y。
通过将此配置文件链接到 sites-enabled
目录来激活它。
$ sudo ln -s /etc/nginx/sites-available/calibre.conf /etc/nginx/sites-enabled/
测试 Nginx 配置。
$ sudo nginx -t
您应该看到以下输出,表明您的配置是正确的。
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
重新加载 Nginx 服务。
$ sudo systemctl reload nginx
您现在可以通过 URL https://calibre.yourdomain.com
启动站点。
结论
在本教程中,您学习了如何安装和运行 Calibre 电子书服务器,以及如何在 Nginx 上运行它以及用户身份验证和自动添加书籍的能力。如果您有任何问题,请在下面的评论中发表。