介绍
Calibre是一个免费的开源电子书管理器。
虽然Calibre可能更为以其桌面客户端而闻名,但它也可以作为一个强大的服务器,允许您从世界任何地方访问电子书(或与朋友分享您的收藏)。
该服务器包括一个简单而优雅的浏览器前端,允许您从图书馆搜索和下载书籍,它还具有内置的移动友好网站,使其易于直接下载到电子阅读器 - 即使那些只有最基本的Web功能。
例如,Calibre的浏览器与Kindle Touch一起工作,它可以直接下载书籍,即使设备只有电子墨水显示器和实验浏览器。
在本教程中,我们将看看如何在Ubuntu 14.04服务器上安装,设置和使用Calibre,我们还将看看如何使用 calibredb
命令来创建,定制和维护您的电子书数据库,直接从服务器。
对于本教程,我们将涵盖:
- 安装 Calibre * 创建电子书库或导入现有电子书库 * 使 Calibre服务器成为背景服务 * 自动将新书添加到图书馆
在本教程结束时,您将有一个小型的初始库,您可以轻松地添加新书!
前提条件
请确保您具备这些前提条件:
- Ubuntu 14.04 Droplet * 一个 sudo 用户
本教程中的示例显示了运行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步:创建图书馆
现在我们几乎准备好开始运行服务器,但是我们需要一些书籍来服务。
您可能已经拥有自己的电子书库,所以我们将研究两种方法。
- 直接添加电子书文件;我们将从 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 的桌面版本,并且已经设置了库,您可以轻松地将其导入到服务器。
双重检查当前库文件夹,查找名为 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。
我们希望您能从任何位置或设备享受访问您的电子书!