如何在Ubuntu 14.04创建一个电子书的Calibre服务器

Calibre是一个自由和开源的电子书经理。 服务器包括一个简单而优雅的浏览器的前端,使您可以搜索并从资料库中下载图书。它还内置了一个移动友好的网站,因此很容易下载的书籍直接到电子阅读器 - 即使是那些只有最基本的网络功能。

介绍

Caliber是一个免费和开源的电子书经理。 虽然Calibre可能更适合其桌面客户端,但它也可以作为一个强大的服务器,允许您从世界上任何地方访问您的电子书(或与朋友分享您的收藏)。将您的电子书保存在服务器上非常好,因为您不需要依赖于随时阅读的阅读设备。如果你去旅行,你不需要担心带你的电子书收藏与你! 服务器包括一个简单而优雅的浏览器前端,允许您从图书馆搜索和下载图书。它还内置了适合移动设备的网站,因此可以轻松地将书籍直接下载到电子阅读器,甚至只有最基本的网络功能。 例如,Calibre的浏览器支持Kindle Touch,即使设备只有电子墨水显示屏和实验性浏览器,Kindle Touch也可以直接下载图书。 在本教程中,我们将讨论如何在Ubuntu 14.04服务器上安装,设置和使用Calibre。 我们还将看看如何使用calibredb命令来创建,定制,并从服务器右侧维护你的电子书数据库。 在本教程中,我们将介绍:
  • 安装机芯
  • 创建电子书库或导入现有库
  • 使Calibre服务器成为后台服务
  • 自动将新书添加到库中
在本教程结束时,您将有一个小的初始库,您可以轻松地添加新书!

先决条件

请确保您具有以下先决条件: 本教程中的示例显示了运行全新安装的Ubuntu 14.04的Droplet,但它们应该很容易适应其他操作系统。

第1步 - 安装口径

Calibre可从APT软件存储库获得,但是根据其创建者的建议,最好从其网站上提供的二进制文件进行安装。口径更新非常频繁,并且版本在repos中往往滞后。 幸运的是,Calibre的创作者已经做到这一点很简单。只需在服务器上运行以下Python命令即可。运行命令之前,请仔细检查官方口径网站的情况下,命令已被更改。 安装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步 - 安装依赖关系

该口径命令行工具calibredb用于对你的Calibre库的各种操作,比如添加或进口书籍,获取元数据,并涵盖书籍。 我们稍后会看看如何使用这些命令,但现在我们只安装两个依赖项。首先是ImageMagick的,没有它calibredb将无法运行; 第二是xvfb ,我们将使用它来运行calibredb在虚拟X显示服务器-为了回避引起的非显示环境中运行口径的问题。 要安装这些命令只需运行以下命令。 更新您的包列表:
sudo apt-get update
安装xvfb
sudo apt-get install xvfb
安装ImageMagick:
sudo apt-get install imagemagick

第3步 - 创建库

现在我们几乎准备好开始运行服务器了。然而,我们需要得到一些书服务。 你可能已经有自己的电子书库,所以我们将看看这两种方法。
  1. 直接添加电子书文件;我们将从Gutenberg项目中找一对夫妇
  2. 导入现有的Calibre库;如果您已经运行桌面版Calibre,则非常有用

得到书

首先让我们为我们的Calibre库制作一个目录。此示例在用户的主目录中创建目录,但可以将其放在服务器上的任何位置。运行以下命令:
mkdir ~/calibre-library
mkdir ~/calibre-library/toadd
我们创建两个目录:第一, ~/calibre-library是一个口径会自动组织起来,而我们手动添加书籍到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
口径有点依赖于文件扩展名正确添加图书,所以-Owget命令指定一个更友好的文件名。 如果你下载了古腾堡一个不同的格式(如.epub ),那么您需要相应地更改文件扩展名。

将书籍添加到Caliber的数据库

现在,我们需要使用到这些书籍添加到数据库的Calibre calibredb通过命令xvfb前面安装的虚拟显示。为此,请运行:
xvfb-run calibredb add ~/calibre-library/toadd/* --library-path ~/calibre-library
星号意味着口径将增加中发现的所有书籍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
该命令不会产生任何输出,但只是似乎挂在您的终端。这是很好的;我们稍后将会正确地对其进行守护进程。现在打开Web浏览器并导航到:
  • http:// your_server_ip :8080
替换your_server_ip与Droplet的IP地址。您应该看到您的图书馆的主页,看起来类似于下面的屏幕截图。 口径主页 如果您单击所有图书链接,你应该看到我们先前添加的两本书。 您可以获取按钮或者点击下面的书下载。 查看您的书籍

上传现有的Calibre Library

如果您已经运行桌面版Calibre并且已经设置了库,您可以轻松地将其导入到服务器。 仔细检查您的当前库文件夹中一个名为metadata.db 。如果这个文件存在,那么一切都应该工作,没有任何额外的配置。 将整个库文件夹上传到您的服务器。 然后,运行以下命令:
calibre-server --with-library /path/to/calibre-library
这将将现有库全部添加到服务器。您可以通过将书文件中的它在服务器上添加更多的书toadd目录,如本教程解释。

第4步 - 使口径成为后台服务

我们真的不希望保持一个外壳,开calibre-server命令在其中运行,只是为了保持服务器运行。 虽然我们可以在添加--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部分(称为 )我们需要运行的主要命令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分钟,将查找在文件中/home/ user /calibre-library/toadd/目录中,有添加任何文件到我们的数据库机芯,然后删除原始文件。 (Calibre将文件的副本添加到我们的库,所以我们不需要原件,一旦添加生效)。这意味着如果你通过scp,ssh等文件传输到这个目录从你的主要机器,或者只是下载它们直接进入toadd目录,然后他们会自动被添加到您的Calibre数据库和从资料库中下载可用! 要创建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服务器,需要记住一两点。我们将简要地看看这些,以完成。 如果你只是托管来自古腾堡的书籍或类似的网站(即,版权的书籍),那么很少说。只要确保你遵循Gutenberg服务条款。特别是,如果你给访问您的藏书给其他人,请务必阅读古腾堡的TOS的有关部分的再分配 。 如果您托管商业购买的图书,请记住,他们可能会有DRM(数字版权管理),因此只能从您注册的设备读取。 不用说,你不应该在你的电子书服务器上托管盗版或非法图书。

更新

Calibre频繁推送更新。虽然大多数是错误修复和功能更新,一些可能是与安全。因此,建议您跟上更新 。 如果发布了重要更新,则应手动更新服务器软件。 (再次,APT回购往往滞后,因此不建议依靠它们进行更新)。

安全

即使您不发布您的Droplet的IP地址,它也可能由脚本扫描打开的端口。因为Calibre登录功能不允许在多次不正确的尝试后自动锁定,所以存在强力攻击的可能性。为了减少这种情况,强烈建议您:
  • 不要使用常用的用户名,如管理口径 ,或电子书
  • 不要使用通用或简短的密码,绝对不要使用您的用户名作为密码
  • 考虑在非标准端口而不是端口80上运行Calibre
这使我们的教程结束。我们希望您喜欢从任何位置或设备访问您的电子书!