如何在 Ubuntu 14.04 上创建 calibre 电子书服务器

介绍

Calibre 是一个免费的开源电子书管理器。

尽管 Calibre 可能以其桌面客户端而闻名,但它也可以充当强大的服务器,让您可以从世界任何地方访问您的电子书(或与朋友分享您的收藏)。将您的电子书保存在服务器上非常棒,因为您无需依赖于在您想阅读时随身携带相同的阅读设备。如果您去旅行,您无需担心随身携带您的电子书收藏!

该服务器包括一个简单而优雅的浏览器前端,允许您从图书馆搜索和下载书籍。它还内置了一个适合移动设备的网站,可以很容易地将书籍直接下载到电子阅读器——即使是那些只有最基本的网络功能的人。

例如,Calibre 的浏览器与 Kindle Touch 配合使用,即使该设备只有电子墨水显示屏和实验性浏览器,它也可以直接下载书籍。

在本教程中,我们将了解如何在 Ubuntu 14.04 服务器上安装、设置和使用 Calibre。我们还将了解如何使用该calibredb命令直接从服务器创建、自定义和维护您的电子书数据库。

在本教程中,我们将介绍:

  • 安装口径
  • 创建电子书库,或导入现有的电子书库
  • 使 Calibre 服务器成为后台服务
  • 自动将新书添加到图书馆

在本教程结束时,您将拥有一个小的初始图书馆,您可以轻松地向其中添加新书!

先决条件

请确保您具备以下先决条件:

本教程中的示例是针对运行全新安装的 Ubuntu 14.04 的 Droplet 显示的,但它们应该很容易适应其他操作系统。

第 1 步 – 安装 Calibre

Calibre 可从 APT 软件存储库中获得,但正如其创建者所建议的那样,从其网站上提供的二进制文件安装要好得多。Calibre 更新非常频繁,repos 中的版本往往滞后。

幸运的是,Calibre 的创造者让这一切变得非常简单。只需在您的服务器上运行以下 Python 命令。在运行命令之前,请仔细检查官方 Calibre 站点,以防命令已更改。

安装 Calibre(确保滚动以获取整个命令):

sudo -v && wget -nv -O- https://raw.githubusercontent.com/kovidgoyal/calibre/master/setup/linux-installer.py | sudo python -c "import sys; main=lambda:sys.stderr.write('Download failed\n'); exec(sys.stdin.read()); main()"

您会注意到一些有关桌面集成失败的警告,但这些警告可以安全地忽略,因为您是在远程服务器上安装 Calibre。

第 2 步 – 安装依赖项

Calibre 命令行工具calibredb用于对 Calibre 库进行各种操作,例如添加或导入书籍,以及获取书籍的元数据和封面。

稍后我们将看看如何使用其中一些命令,但现在我们只安装两个依赖项。第一个是 ImageMagick,没有它就calibredb不会运行;第二个是xvfb我们将使用它calibredb在虚拟 X 显示服务器中运行 – 以避免在非显示环境中运行 Calibre 引起的问题。

要安装这些,只需运行以下命令。

更新您的包裹清单:

sudo apt-get update

安装xvfb

sudo apt-get install xvfb

安装 ImageMagick:

sudo apt-get install imagemagick

第 3 步 – 创建库

现在我们几乎准备好开始运行服务器了。然而,我们需要一些书籍来服务。

您可能已经拥有自己的电子书库,因此我们将研究两种方法。

  1. 直接添加电子书文件;我们会从古腾堡计划中挑选一对
  2. 导入现有的 Calibre 库;如果您已经在运行 Calibre 的桌面版本,则很有用

拿书

首先让我们为 Calibre 库创建一个目录。本示例在用户的主目录中创建目录,但您可以将其放置在服务器上的任何位置。运行以下命令:

mkdir ~/calibre-library
mkdir ~/calibre-library/toadd

我们创建了两个目录:第~/calibre-library一个是 Calibre 将自动组织的目录,而我们将手动将书籍添加到toadd子目录中。稍后,我们也会看看如何自动化这个过程。

我们将如何从古腾堡计划中获取一些书籍在本教程中,我们将下载简·奥斯汀的《傲慢与偏见》查尔斯·狄更斯的《圣诞颂歌》

切换到toadd目录以开始。

cd ~/calibre-library/toadd

下载两本电子书:

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

Calibre 在某种程度上依赖于文件扩展名来正确添加书籍,因此命令中-O标志wget指定了更友好的文件名。如果您从 Gutenberg 下载了不同的格式(例如.epub),那么您需要相应地更改文件扩展名。

将书籍添加到 Calibre 的数据库

现在我们需要calibredb通过xvfb我们之前安装虚拟显示器使用命令将这些书籍添加到 Calibre 数据库中为此,请运行:

xvfb-run calibredb add ~/calibre-library/toadd/* --library-path ~/calibre-library

星号表示 Calibre 会将在toadd目录中找到的所有书籍添加到目录中的图书馆中calibre-library您可能会看到关于找不到封面的错误(我们选择下载.mobi没有图像文件),但您还应该看到书籍已添加到 Calibre 数据库的确认信息。

示例输出:

Failed to read MOBI cover
Backing up metadata
Added book ids: 1, 2
Notifying calibre of the change

这就是我们开始看到第一个结果所需的全部内容。让我们测试一下服务器。跑步:

calibre-server --with-library ~/calibre-library

该命令不会产生任何输出,但只会出现在您的终端中。这暂时没问题;稍后我们将研究如何正确地对其进行守护。现在打开一个网络浏览器并导航到:

  • http://your_server_ip:8080

替换your_server_ip为您的 Droplet 的 IP 地址。您应该会看到库的主页,类似于下面的屏幕截图。

口径主页

如果您单击所有书籍链接,您应该会看到我们之前添加的两本书。您可以单击任一本书下方的“获取”按钮进行下载。

查看您的书籍

上传现有的 Calibre 库

如果您已经在运行 Calibre 的桌面版本并且已经设置了您的库,您可以轻松地将其导入您的服务器。

仔细检查您当前的库文件夹中是否有名为metadata.db. 如果此文件存在,那么一切都应该可以正常工作,无需任何额外配置。

将整个库文件夹上传到您的服务器。

然后,运行此命令:

calibre-server --with-library /path/to/calibre-library

这会将您现有的整个库添加到服务器。您可以通过将书籍文件放在toadd目录中来在服务器上向其中添加更多书籍,如本教程中所述。

第 4 步 – 使 Calibre 成为后台服务

我们真的不想为了保持calibre-server服务器运行而让 shell 打开并在其中运行命令。

虽然我们可以将--daemonize标志添加到命令中,但还有更好的方法来做到这一点。下面我们将看看calibre-server将服务变成一个服务是多么容易,这样它会在系统重启时自动启动,这样我们就可以很容易地启动、停止或重新启动进程。

直到最近,实现这一点的方法是编写复杂的脚本并将它们放在/etc/init.d/目录中。目前推荐的方法是使用简单得多的Upstart脚本,它是.conf放置在/etc/init/目录中的文件。我们将看看如何做到这一点:

如果服务器仍在运行,请点击CTRL + C终端以停止它。

现在创建一个新的配置文件:

sudo nano /etc/init/calibre-server.conf

创建 Upstart 脚本,确保替换标记为红色的变量

description "Calibre (ebook manager) content server"

start on runlevel [2345]
stop on runlevel [^2345]

respawn

env USER='myusername'
env PASSWORD='mypassword'
env LIBRARY_PATH='/home/user/calibre-library'
env MAX_COVER='300x400'
env PORT='80'

script
    exec /usr/bin/calibre-server --with-library $LIBRARY_PATH --auto-reload \
                                 --max-cover $MAX_COVER --port $PORT \
                                 --username $USER --password $PASSWORD
end script

将其粘贴到您的文本编辑器中并保存。(CTRL + X,然后是 Y,然后是 ENTER)。我们将看看下面每一行的作用:

  • 第一行只是帮助您(或其他人)了解脚本功能的说明
  • 接下来的两行说明您希望脚本在哪个级别开始和停止,因为 Upstart 允许指定顺序,以便相互依赖的脚本将以正确的顺序启动。级别 1 适用于所有基本服务,因此我们将从级别 2 开始,到那时我们知道网络和我们需要的任何其他东西都将启动并运行
  • respawn 意味着如果服务意外停止,它将尝试重新启动

下一行是我们传递给calibre-server命令的所有变量之前,我们只使用了指定--with-library选项的最小值,但现在我们可以看到 Calibre 提供了多少灵活性。上面,我们已经指定:

  • 从网络访问图书馆的用户名和密码(请从提供的示例中更改这些)
  • 库位置路径,和以前一样
  • 书籍封面图像的最大图像大小(这有助于加快页面加载速度)
  • 端口号(这里我们已将其更改为80;如果您已经使用端口 80 来提供标准网页等,请将更改为其他内容)
  • 最后,在该script部分(称为stanza)中,我们使用 运行主命令exec,并传入我们的所有变量。/usr/bin/calibre-server部分是可执行文件的路径

保存脚本并关闭编辑器后,启动服务器:

sudo start calibre-server

这次你应该看到这个输出,但有一个不同的进程号:

calibre-server start/running, process 7811

现在使用浏览器导航到您服务器的 IP 地址或域名。

您应该会看到一个弹出表单,要求输入用户名和密码。这些应该是您添加到 Upstart 脚本中的那些。输入这些,您将像以前一样被带到您的电子书库。

现在可以使用以下命令轻松停止、启动和重新启动服务器:

sudo service calibre-server stop
sudo service calibre-server start
sudo service calibre-server restart

这使得管理服务器比手动处理守护进程和进程 ID 容易得多!

默认情况下,该网站有一个移动版本,可以很好地与小屏幕设备(如手机和电子阅读器)配合使用。如果您从移动设备访问该站点,这应该会自动加载。

步骤 5 — 创建 Cron 作业以自动添加书籍

我们可以编写一个简单的 cron 作业来查看我们的toadd新书目录。

每 10 分钟它会在目录中查找文件,将其中的任何文件添加到我们的 Calibre 数据库中,然后删除原始文件。(Calibre 在将文件添加到我们的图书馆时会制作这些文件的副本,因此一旦添加生效,我们就不需要原件。)这意味着,如果您通过 scp、ssh 等方式将书籍文件从您的主机,或者直接将它们下载到目录中,然后它们会自动添加到您的 Calibre 数据库中,并可以从您的库中下载!/home/user/calibre-library/toadd/toadd

要创建 cron 作业,请执行:

crontab -e

您可能需要选择首选的文本编辑器。

在文件末尾添加以下行:

*/10 * * * * xvfb-run calibredb add /home/user/calibre-library/toadd/ -r --with-library /home/user/calibre-library && rm /home/user/calibre-server/toadd/*

命令的第一部分 ( */10 * * * *) 表示该命令应每十分钟运行一次。第二部分与我们之前手动运行的命令相同。它将toadd文件夹中的所有书籍添加到数据库中,然后删除原始文件。

就是这样。您现在可以从世界任何地方访问您的电子书。

注意: Calibre 中的搜索结果不按相关性排序,因此如果您输入一个常用术语,您通常会在您要查找的书籍之前找到不相关的书籍。但是,您可以指定仅按标题或作者进行搜索,这很有帮助,并且浏览选项(例如,按作者的字母顺序浏览)也得到了很好的实现。

结论

关于运行和维护 Calibre 服务器,需要记住一两件事。我们将简要介绍一下这些以结束。

如果您只托管来自 Gutenberg 或类似网站的书籍(即不受版权保护的书籍),那就没什么好说的了。只要确保您遵守古腾堡服务条款。具体来说,如果您向其他人提供您的藏书访问权限,请务必阅读 Gutenberg 的 TOS 中关于重新分发的部分

如果您托管商业购买的图书,请记住它们可能具有 DRM(数字版权管理),因此只能从您的注册设备读取。

不用说,您永远不应该在您的电子书服务器上托管盗版或非法书籍。

更新

Calibre 非常频繁地推送更新。尽管其中大部分是错误修复和功能更新,但有些可能与安全有关。因此建议您跟上更新

如果发布了重要更新,您应该手动更新服务器软件。(同样,APT 存储库往往滞后,因此不建议依赖它们进行更新)。

安全

即使您不发布 Droplet 的 IP 地址,它也可能被脚本扫描开放端口发现。由于 Calibre 登录功能不允许在多次错误尝试后自动锁定,因此存在暴力攻击的可能性。为了减轻这种情况,强烈建议您:

  • 不要使用常见的用户名,例如admincalibreebooks
  • 不要使用通用或短密码,绝对不要使用您的用户名作为密码
  • 考虑在非标准端口而不是端口 80 上运行 Calibre

我们的教程到此结束。我们希望您喜欢从任何位置或设备访问您的电子书!

觉得文章有用?

点个广告表达一下你的爱意吧 !😁