作者选择了 COVID-19 救援基金作为 Write for Donations计划的一部分,接受捐款。
介绍
calibre是一个免费的和开源的电子书管理器它是众所周知的跨平台桌面应用程序. 你可以使用电子书库在一个设备上管理电子书库,但该应用程序还包括一个强大的服务器组件。设置电子书服务器允许你:
- 从世界任何地方获取您的书籍 * 轻松将您的书籍传输到移动设备 * 与您的朋友和家人共享书籍
大小的内容服务器包括为服务您的书籍的后端和通过您的图书馆搜索的基本前端,下载单个标题,甚至通过Web浏览器直接阅读您的书籍。
在此教程中,您将在Ubuntu 18.04上设置并使用口径内容服务器. 具体来说,您会下载并安装口径服务器,将口径配置为服务,以便在服务器重现时自动启动,并使用命令行工具向库中添加书籍. 您还将遇到设置 cron 任务选项, 从特定目录中自动向您的库中添加新书, 在服务器中添加认证, 只有您才能访问它, 并添加一个免费的 SSL/ TLS 证书, 在 HTTPS 上为您的库服务以获取额外的安全性 .
<$>[警告] 警告: 与所有创意内容一样,重要的是尊重与他人创建的材料相关的版权许可证。本教程使用从 Gutenberg 项目,拥有超过 60,000 个免费电子书的公共领域的书籍。
前提条件
- 运行 Ubuntu 18.04 的服务器,有一个sudo 用户和一个防火墙. [您可以遵循我们的初始服务器设置指南以获取指令] (https://andsky.com/tech/tutorials/initial-server-setup-with-ubuntu-18-04).
- 第7步包括用SSL证书保护您口径内容服务器的选项。 如果您愿意,您将需要一个带有可用A记录的域名. 如果您正在使用 [数字海洋] (https://www.digitalocean.com/products/droplets/), 您可以遵循我们关于 [如何从普通域注册员中指向数字海洋命名员] (https://andsky.com/tech/tutorials/how-to-point-to-digitalocean-nameservers-from-common-domain-registrars) 的指南来获取指示 。 .
步骤 1 —下载和安装口径内容服务器
尽管Ubuntu的软件存储库中存在,但版本往往落后于最新的版本,因此,官方文件建议您将其安装在其网站上托管的二进制。
首先,安装一些必要的依赖:
1sudo apt update && sudo apt install -y libfontconfig libgl1-mesa-glx
现在下载并安装加密服务器。
1wget https://download.calibre-ebook.com/linux-installer.sh
检查脚本的内容:
1less linux-installer.sh
您可以用k
和j
键向上滚动,然后按q
,完成后返回终端。
现在运行脚本来安装加密器:
1sudo sh linux-installer.sh
calibre 预期桌面环境,但它不会在无头的服务器上找到一个,所以你会看到一些关于桌面集成失败的警告. 忽略这些是安全的,因为我们将通过它的命令行工具和 Web 界面完全控制 calibre。
安装后,请确保将 ~./config/
文件的所有权设置为您的用户和组,而不是为 root
。
更改所有权,以您的sudo
用户和组代替突出文本:
1sudo chown sammy:sammy ~/.config/
现在我们已经安装了口径,我们可以开始探索其功能。
步骤 2 —创建图书馆并添加您的第一本书
要探索的功能,让我们下载一个 .epub
或 .mobi
电子书. 我们将使用 A Christmas Carol 由Charles Dickens 从 Project Gutenberg作为一个例子。
运行以下命令将本书下载到您的服务器:
1wget http://www.gutenberg.org/ebooks/46.kindle.noimages -O christmascarol.mobi
现在,创建一个卡利伯可以作为您的电子书库使用的目录:
1mkdir calibre-library
并使用calibredb
命令将您刚刚下载的书添加到新库中:
1calibredb add *.mobi --with-library calibre-library/
您将看到以下结果:
1[secondary_label Output]
2Added book ids: 1
随着书籍添加到您的库,您现在可以开始校准并探索应用程序。
步骤 3 —运行口径内容服务器并查看您的库
由于安装了口径并下载了一本书,我们准备探索应用程序的用户界面。 但在访问网络浏览器中的口径内容服务器之前,我们需要确保我们的服务器能够接受"8080"端口的流量,而"8080"端口是口径的默认端口. 如果您遵循了先决条件部分的初始服务器设置指南,则启用了 )。 你现在需要允许 " 8080 " 口通过防火墙.
使用以下命令打开端口 8080
:
1sudo ufw allow 8080
检查ufw
状态以确保端口打开:
1sudo ufw status
你会看到这样的输出:
1[secondary_label Output]
2Status: active
3
4To Action From
5-- ------ ----
6OpenSSH ALLOW Anywhere
78080 ALLOW Anywhere
8OpenSSH (v6) ALLOW Anywhere (v6)
98080 (v6) ALLOW Anywhere (v6)
现在运行以下命令来启动口径内容服务器:
1calibre-server calibre-library
calibre-server
是启动我们的服务器的命令,而calibre-library
是我们之前创建的目录的名称,并告诉我们使用calibre作为我们的库。
你会看到这样的输出:
1calibre server listening on 0.0.0.0:8080
2OPDS feeds advertised via BonJour at: your_server_ip port: 8080
从您的本地计算机,访问 your_server_ip:8080
(取代您的服务器的IP地址)在一个网页浏览器中,你会看到默认校准屏幕. 点击 calibre-library ,你会看到你在上一步中添加的书籍。
点击Ctrl+C
,停止您启动的手动服务器流程。
运行 Kaliber 内容服务器的这种方法运行得很好,但您可能希望您的库在关闭 SSH 连接到您的服务器后,始终工作,即使在重新启动您的服务器后,让我们将 Kaliber 内容服务器转化为服务。
步骤 4 —为口径内容服务器创建服务
为了提高口径内容服务器的可用性,让我们将我们的手动服务器流程替换为在启动时启动的服务。
首先,在目录 /etc/sytemd/system/
中创建一个名为 calibre-server.service
的文件:
1sudo nano /etc/systemd/system/calibre-server.service
现在添加以下配置,这将启动启动时的大小内容服务器. 请确保用您的用户和组更换突出的文本:
1[label calibre-server.service]
2## startup service
3[Unit]
4Description=calibre content server
5After=network.target
6
7[Service]
8Type=simple
9User=sammy
10Group=sammy
11ExecStart=/opt/calibre/calibre-server /home/sammy/calibre-library --enable-local-write
12
13[Install]
14WantedBy=multi-user.target
在这里,我们告诉我们的服务在启动服务器时使用启用本地写字
旗帜。当服务器运行时,您不能使用calibredb
命令添加书籍,就像我们在圣诞节卡罗尔
上一样。
保存并关闭文件。
现在启用服务并启动它:
1sudo systemctl enable calibre-server
2sudo systemctl start calibre-server
重新启动您的服务器:
1sudo reboot
等待几分钟,然后在本地网页浏览器中再次访问http://your_server_ip:8080
,以确保大小内容服务器自动启动。
现在让我们为我们的应用程序添加一些身份验证。
步骤 5 — (可选) 将用户身份验证添加到口径内容服务器
您现在有一个功能齐全的内容服务器,您可以从任何设备访问。 但是,目前,任何知道您的服务器的IP地址的人都可以访问您的电子书。 您可能不希望这样做。
首先,SSH 返回您的服务器并停止。这将使我们能够直接操纵的数据库:
1sudo systemctl stop calibre-server
现在开始使用 calibre 的用户管理脚本:
1calibre-server --manage-users
当被提示时,选择添加新用户,然后选择用户名和强有力的密码,您将看到这样的最终输出消息:
1[secondary_label Output]
2User mycalibreuser added successfully!
现在我们需要为我们的服务做一个小编辑。
重新打开calibre-server.service
:
1sudo nano /etc/systemd/system/calibre-server.service
要启用身份验证,请将--enable-auth
标志添加到开始于ExecStart
的行末尾。
1. . .
2ExecStart=/opt/calibre/calibre-server /home/sammy/calibre-library --enable-local-write --enable-auth
3. . .
保存并关闭文件。
更新服务戴蒙以恢复服务文件,并使用以下方式重新启动加密服务器:
1sudo systemctl daemon-reload
2sudo systemctl start calibre-server
如果您再次访问库,它现在应该提示您提供用户名和密码,然后允许您访问它。
在下一步中,我们将添加一个 cron 任务来自动将下载的书籍添加到我们的 calibre 库。
步骤 6 — (可选) 自动将书籍添加到您的校准库
设置一个 cron 工作可以帮助监视特定目录,并将其找到的任何书籍添加到您的校准图书馆。这样,您可以下载或上传到此文件夹的书籍,它们将自动通过校准 Web 接口可用。
在您的主目录中创建一个名为添加书籍
的文件夹,并导航:
1mkdir ~/books-to-add
2cd ~/books-to-add
下载一本新书到此目录. 使用以下命令从 Gutenberg 项目下载 Alice in Wonderland:
1wget https://www.gutenberg.org/ebooks/11.epub.images -o alice.epub
现在打开你的Crontab:
1crontab -e
在这里,我们将设置一个脚本来添加该目录中的所有文件来校准,然后删除它们(将书籍添加到校准创建了库目录中的文件的副本,因此我们可以在添加后删除原始文件)。
添加以下内容:
1[label /var/spool/cron/crontabs/your_username]
2*/5 * * * * calibredb add /home/sammy/books-to-add/ -r --with-library http://localhost:8080#calibre-library --username mycalibreuser --password StrongPassword! && rm -r /home/sammy/books-to-add/*
保存并关闭文件。
这将每5分钟运行,所以你不必等待你的新书在网页界面上出现很长时间。等待几分钟,然后在本地网页浏览器中重新加载图书馆。
步骤 7 — (可选) 安装Apache2并通过HTTPS服务您的库
您需要一个用户名和密码来访问您的库,但它并不真正安全,因为您正在通过 HTTP 服务它,每次您验证时都会发送您的用户名和密码不加密。 一个更安全的选择是确保所有流量都通过 HTTPS 加密。 如果您拥有域名,您可以将其指向您的服务器,并使用 Let's Encrypt 安装免费的 SSL 证书。 (您也可以使用类似「ebooks.your_domain」这样的子域。
安装和配置Apache2
我们将使用webserver Apache2作为口径的倒置代用. 以前,我们访问图书馆时,不得不附加 ":8080 " 的端口号,因为这是口径运行的默认端口。 我们现在将设置Apache2来听取"80"(HTTP流量的默认端口)上的请求,代理在":8080"上向本地运行的口径服务器请求,并透明地向终端用户提供这些请求,以便他们不必担心指定端口号码. 然后,我们将以SSL证书确保 " 443 " 港的所有交通安全.
安装Apache2并使用以下命令启用我们需要的代理模块:
1sudo apt install -y apache2
2sudo a2enmod proxy proxy_http
现在,请确保您的服务器允许在端口80
和443
上的流量。
1sudo ufw allow 'Apache Full'
2sudo ufw delete allow 8080
接下来,创建并在 /etc/apache2/sites-available/your_domain.conf
打开一个文件:
1sudo nano /etc/apache2/sites-available/your_domain.conf
添加以下配置,将您的域链接到口径服务器:
1[label /etc/apache2/sites-available/your_domain.conf]
2LoadModule proxy_module modules/mod_proxy.so
3LoadModule proxy_http_module modules/mod_proxy_http.so
4
5<VirtualHost *:80>
6 ServerName your_domain
7 AllowEncodedSlashes On
8 ProxyPreserveHost On
9 ProxyPass "/" "http://localhost:8080/"
10</VirtualHost>
最后,启用此新网站配置:
1sudo a2ensite your_domain.conf
2systemctl reload apache2
在浏览器中访问http://your_domain
,以验证内容服务器加载。
安装 Certbot 并配置 SSL 证书
作为最后一步, 让我们使用Certbot保护我们的所有流量。
首先,安装Certbot:
1sudo snap install --classic certbot
现在运行Certbot:
1sudo certbot --apache
Certbot 程序将带您通过一系列提示来安装证书。
- 提示时输入您的电子邮件地址 * 提示时输入)
完成后,你会看到一个祝贺消息。
您现在可以安全地访问您的库在https://your_domain`。
结论
在本教程中,您将其转化为服务,以便在您的服务器启动时启动,添加 cron 工作来自动找到并将新书添加到您的库,并设置身份验证和 SSL 证书来保护它。
要扩展该项目,您可以从您的个人图书馆或从 Gutenberg 项目, 标准电子书,或其他地方添加更多的书籍。