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

介绍

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

虽然Calibre可能更为以其桌面客户端而闻名,但它也可以作为一个强大的服务器,允许您从世界任何地方访问电子书(或与朋友分享您的收藏)。

该服务器包括一个简单而优雅的浏览器前端,允许您从图书馆搜索和下载书籍,它还具有内置的移动友好网站,使其易于直接下载到电子阅读器 - 即使那些只有最基本的Web功能。

例如,Calibre的浏览器与Kindle Touch一起工作,它可以直接下载书籍,即使设备只有电子墨水显示器和实验浏览器。

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

对于本教程,我们将涵盖:

  • 安装 Calibre * 创建电子书库或导入现有电子书库 * 使 Calibre服务器成为背景服务 * 自动将新书添加到图书馆

在本教程结束时,您将有一个小型的初始库,您可以轻松地添加新书!

前提条件

请确保您具备这些前提条件:

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

第1步:安装加密器

Calibre 可从 APT 软件存储库中获得,但根据其创作者建议,最好从他们的网站上提供的二进制文件中安装。

幸运的是,Calibre的创始人已经使这一点非常简单,只需在您的服务器上运行以下Python命令。在运行命令之前,请在Calibre官方网站(http://calibre-ebook.com/download_linux)进行双重检查,以便命令发生更改。

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

1sudo -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,我们将使用它在虚拟X显示服务器中运行calibredb – 以缓解在非显示环境中运行Calibre引起的问题。

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

更新您的包列表:

1sudo apt-get update

安装xvfb:

1sudo apt-get install xvfb

安装 ImageMagick:

1sudo apt-get install imagemagick

第3步:创建图书馆

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

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

  1. 直接添加电子书文件;我们将从 Project Gutenberg 2 获取一些; 导入现有的 Calibre 库; 如果您已经在运行 Calibre 的桌面版本,有用

获取书籍

首先,让我们为我们的 Calibre 库创建一个目录. 此示例将目录创建在用户的家庭目录中,尽管您可以将其放置在服务器上的任何地方。

1mkdir ~/calibre-library
2mkdir ~/calibre-library/toadd

我们已经创建了两个目录:第一个, ~/calibre-library’ 是 Calibre 将自动组织的目录,而我们将手动将书籍添加到添加`子目录中。

我们将从 Gutenberg 项目中获取一些书籍。 对于本教程,我们将下载简·奥斯汀的《骄傲与偏见》和查尔斯·迪肯斯的《圣诞卡罗尔》。

更改到添加目录以开始。

1cd ~/calibre-library/toadd

下载这两本电子书:

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

Calibre 依靠某些文件扩展来正确地添加书籍,因此wget命令中的-O标志指定了一个更友好的文件名。

将图书添加到 Calibre 数据库

现在我们需要通过我们之前安装的xvfb虚拟显示器将这些图书添加到Calibre数据库中,使用calibredb命令。

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

星座表示,Calibre将将添加到图书馆中),但你还应该看到确认这些书被添加到Calibre 数据库。

样品产量:

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

这就是我们需要的开始看到第一个结果。让我们测试服务器。

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

该命令不会产生任何输出,但只会出现在您的终端中。 此时此刻没事;我们稍后会仔细看看如何正确地解除它。

  • http://your_server_ip:8080 您的服务器

your_server_ip替换为您的Droplet的IP地址,您应该看到您的图书馆的主要页面,与下面的屏幕截图相似。

Calibre home page

如果你点击所有书籍链接,你应该看到我们先前添加的两本书,你可以点击获得按钮下方的任何一本书下载它。

Viewing Your Books

上传现有口径图书馆

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

双重检查当前库文件夹,查找名为 metadata.db 的文件. 如果这个文件存在,那么一切都应该工作,而无需任何额外的配置。

将您的整个图书馆文件夹上传到您的服务器。

然后运行这个命令:

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

您可以在服务器上添加更多的书籍,通过将书籍文件放置在添加目录中,正如本教程所解释的那样。

步骤4 - 使校准为背景服务

我们并不真正想让一个壳打开,其中运行的是calibre-server命令,只是为了保持服务器运行。

虽然我们可以在命令中添加 -demonize旗帜,但有更好的方法可以做到这一点:下面我们将看看将calibre-server变成一个服务是多么容易,以便它自动启动系统重新启动,这样我们就可以很容易地启动,停止或重新启动这个过程。

直到最近,实现这一点的方法是写复杂的脚本,并将其放入 /etc/init.d/ 目录. 目前建议的方法是使用更简单的 Upstart脚本,这是一个 .conf 文件放置在 /etc/init/ 目录。 我们将看看如何做到这一点:

如果服务器仍在运行,请在终端中按CTRL + C来阻止它。

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

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

创建 Upstart 脚本,确保取代红色标记的变量:

 1description "Calibre (ebook manager) content server"
 2
 3start on runlevel [2345]
 4stop on runlevel [^2345]
 5
 6respawn
 7
 8env USER='myusername'
 9env PASSWORD='mypassword'
10env LIBRARY_PATH='/home/user/calibre-library'
11env MAX_COVER='300x400'
12env PORT='80'
13
14script
15    exec /usr/bin/calibre-server --with-library $LIBRARY_PATH --auto-reload \
16                                 --max-cover $MAX_COVER --port $PORT \
17                                 --username $USER --password $PASSWORD
18end script

将其粘贴到文本编辑器中并保存(CTRL + X,然后是 Y,然后是 ENTER)。

  • 联合国 第一行只是帮助您(或其他人)了解脚本的功能的描述
  • 联合国 接下来的两行声明您想要您的脚本在哪个关卡开始并停止,因为Upstart允许命令规格,这样依赖对方的脚本就会以正确的顺序开始. 1级是所有基本服务,所以我们从2级开始, 到那时,我们就知道网络和我们需要的任何东西 都将启动和运行
  • `再生'意味着如果服务意外地停止,它将试图重新启动

接下来的行是所有变量,我们将其转移到calibre-server命令. 之前,我们只是使用最小限度的指定--with-library选项,但我们现在可以看到Calibre提供的灵活性有多大。

  • 从网络访问库的用户名和密码(请从提供的例子中更改这些)
  • 图书馆位置路径,如前
  • 书籍封面图像的最大图像大小(这有利于更快地装入页面)
  • 端口号码(这里我们将其改为 " 80 " ;如果您已经使用端口 80 来服务标准网页等,则将此改为其他内容。 )
  • 联合国 最后,在 " script " (称为 " stanza -- -- " )一节中,我们使用 " exec " 来管理主要命令,并在所有变量中传递。 `/usr/bin/口径服务器 ' 部分是可执行文件的路径

一旦您保存了脚本并关闭了编辑器,请启动服务器:

1sudo start calibre-server

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

1calibre-server start/running, process 7811

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

你应该看到一个 popup 表格,要求用户名和密码. 这些应该是你添加到 Upstart 脚本的人。 输入这些,你会像以前一样被带到你的电子书库。

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

1sudo service calibre-server stop
2sudo service calibre-server start
3sudo service calibre-server restart

这使得管理服务器比手动处理DAEMON流程和流程ID要容易得多!

该网站默认情况下有一个移动版本,它与小屏幕设备(如手机和电子阅读器)很好地工作,如果您从移动设备访问该网站,则应自动加载。

步骤5 — 创建一个Cron工作自动添加书籍

我们可以写一个简单的Cron工作来查看我们的新书的添加目录。

每10分钟,它将在`/home/user/classe-library/toadd/'目录中查找文件,将其中的任何文件添加到我们的Calibre数据库,然后取出原始文件。 (Calibre在将文件添加到我们的图书馆时会复制这些文件,这样一旦添加生效,我们不需要原件. ) 这意味着,如果您通过 scp, ssh等方式将图书文件从您的主机传输到此目录,或者直接将其下载到"toadd"目录中,那么它们会自动被添加到您的 Calibre 数据库中,并可以从您的图书馆下载!

要创建一个 cron 任务,执行:

1crontab -e

您可能需要对您喜爱的文本编辑器进行选择。

在文件的末尾,添加行:

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

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

你现在可以从世界任何地方访问你的电子书。

注: Calibre 中的搜索结果不按相关性进行排序,所以如果您输入一个常见术语,您通常会在您正在寻找的书之前找到无关的书籍。

结论

有一个或两件事要记住,运行和维护一个Calibre服务器. 我们将对这些做一个简要的看法,以完成。

版权

如果您只托管来自 Gutenberg 或类似网站的书籍(即,没有版权的书籍),那么没有什么可说的。 只要确保您遵循 Gutenberg 服务条款。 具体来说,如果您允许他人访问您的书籍收藏,请确保您阅读 Gutenberg 关于 [重发] 的条款(http://www.gutenberg.org/wiki/Gutenberg:The_Project_Gutenberg_License# Section_1._General_Terms_of_Use_and_Redistributing_Project_Gutenberg-tm_electronic_works)。

如果您正在托管商業購買的書籍,請記住,它們可能具有DRM(數位權利管理),因此只能在您的註冊裝置上讀取。

毫无疑问,你绝不应该在你的电子书服务器上托管盗版或非法书籍。

更新

Calibre 经常发布更新. 虽然这些都是错误修复和功能更新,但有些可能与安全有关。 因此,建议您跟上 更新.

如果发布重要更新,您应该手动更新服务器软件(再次,APT repos往往落后,因此不建议依靠它们进行更新)。

安全

即使您不发布您的 Droplet 的 IP 地址,也可能会通过扫描打开端口的脚本发现。由于 Calibre 登录功能不允许在多次错误尝试后自动锁定,因此可能发生暴力攻击。

  • 不要使用常见的用户名,如 ** admin ,** calibre** 或** ebooks** * 不要使用常见或短的密码,并且绝对不要使用您的用户名作为密码 * 考虑在非标准端口上运行Calibre,而不是端口 80。

我们希望您能从任何位置或设备享受访问您的电子书!

Published At
Categories with 技术
comments powered by Disqus