calibre 内容服务器

calibre菜单“内容服务器”允许您访问您的calibre书库,并直接在您喜爱的手机或平板电脑设备上的浏览器中阅读书籍。因此,您无需在手机上安装任何专用的图书阅读/管理应用程序。只需使用浏览器。服务器将您正在阅读的书籍下载并存储在离线缓存中,这样即使在没有互联网连接的情况下也可以阅读。

要启动服务器,请单击“连接/共享”按钮,然后选择“启动内容服务器”。您可能会收到来自计算机防火墙或防病毒程序的消息,询问是否可以允许访问“calible.exe”。单击“允许”或“确定”按钮。然后在电脑中打开浏览器(最好是Chrome或Firefox),输入以下地址:

http://127.0.0.1:8080

This will open a page in the browser showing you your calibre libraries, click on any one and browse the books in it. Click on a book, and it will show you all the metadata about the book, along with buttons to Read and Download the book. Click the Read button to start reading the book.

备注

上面使用的地址“http://127.0.0.1:8080”只能在运行calibre的计算机上工作。从其他计算机/手机/平板电脑等访问服务器。您将需要做更多的工作,如下一节所述。

从其他设备访问内容服务器

您通常需要两种类型的远程设备访问。第一种,更简单的是来自家庭网络。如果您在家庭网络上的计算机上运行calibre,并且您还将其他设备连接到了同一家庭网络,那么您应该能够轻松访问这些设备上的服务器。

从家庭网络上的设备访问服务器

按照上述方式启动服务器后,再次单击菜单“连接/共享”按钮。您应该看到的不是菜单“启动内容服务器”操作,而是菜单“停止内容服务器”动作。此操作的右侧将列出一个IP地址和端口号。这些看起来像是一堆用句点分隔的数字。例如:

Stop Content server [192.168.1.5, port 8080]

这些数字告诉您使用哪个地址连接到设备中的服务器。按照上面的示例,地址变为:

http://192.168.1.5:8080

地址的第一部分总是“http://”,下一部分是IP地址,它是逗号前的数字,最后我们有了端口号,它必须用冒号(“:”)添加到IP地址中。如果你幸运的话,这应该是你所需要的,你会在你的设备上查看calibre书库。如果没有,请继续阅读。

家庭网络连接故障排除

如果无法从设备访问服务器,请尝试以下步骤:

  1. 通过打开网址检查服务器是否正在运行``http://127.0.0.1:8080``在与服务器运行在同一台计算机上的浏览器中。

  2. 检查您的防火墙/防病毒是否允许连接到端口“8080”上的计算机和calibre程序。消除防火墙/防病毒作为问题根源的最简单方法是暂时关闭它们,然后尝试连接。在关闭防火墙之前,您应该先断开与互联网的连接,以确保计算机的安全。

  3. 请检查您的设备和计算机是否位于同一网络上。这意味着它们都应该连接到同一个无线路由器。特别地,两者都不应该使用蜂窝网络或ISP提供的直接WiFi连接。

  4. 如果您的网络设置不标准,可能是菜单:“连接/共享”菜单上显示的IP地址不正确。在这种情况下,你必须自己找出正确的IP地址。不幸的是,考虑到网络配置的无限多样性,不可能为您提供这样做的路线图。

  5. 如果您已经设置了用户名和密码,请先在没有设置用户名和密码的情况下进行尝试,看看是否会导致问题。一些电子墨水设备的浏览器不处理身份验证。您有时可以通过在URL中包含用户名和密码来解决此问题,例如:“http://username:password@192.168.1.2:8080”。

  6. 如果你陷入困境,你可以随时在“calibre用户论坛”_上寻求帮助。

从互联网上任何地方访问服务器

警告

在此之前,您应该在服务器中打开用户名/密码保护,否则世界上的任何人都可以访问您的书籍。转到菜单“首选项”->“共享”->“通过网络共享”,并启用菜单选项“访问内容服务器需要用户名和密码”。

虽然设置互联网访问的具体细节因网络配置和您使用的计算机类型而异,但基本模式如下。

  1. 找出要运行服务器的计算机的外部IP地址。您可以访问“我的IP地址是什么”网站<https://www.whatismyip.com/>`_在计算机上运行的浏览器中。

  2. 如果计算机位于路由器后面,请启用路由器上的端口转发,以将端口“8080”(或您选择在其上运行calibre内容服务器的任何端口)转发到计算机。

  3. 确保calibre服务器可以通过您计算机上的任何防火墙/防病毒程序。

  4. 现在,您应该能够使用第一步中找到的IP地址访问任何联网设备上的服务器。例如,如果您找到的IP地址为“123.123.123.123”,而您用于calibre服务器的端口为“8080”,则在您的设备上使用的地址变为:http://123.123.123.123:8080

  5. 或者,使用`no-ip<https://www.noip.com/free>`_这样的服务来设置一个易于记忆的地址,以代替您在第一步中找到的IP地址。

备注

为了获得最大的安全性,您还应该在内容服务器上启用HTTPS。您可以直接在服务器中执行此操作,方法是提供HTTPS证书的路径以在服务器的高级配置选项中使用,也可以按如下所述设置反向代理以使用现有的HTTPS设置。

服务器接口界面

服务器接口界面是主程序calibre接口的简化版本,针对触摸屏进行了优化。主屏幕显示您当前正在阅读的书籍,并允许您选择要浏览的calibre书库。高质量的服务器可以让你访问所有的calibre书库,而不是像以前那样只访问一个calibre书库。

书籍列表

服务器图书列表是一个简单的封面网格。点击封面可查看书籍的详细元数据,或阅读书籍。如果您喜欢更详细的列表,可以通过单击右上角的三个垂直点来更改默认视图。

Calibre的用户应该熟悉书目的排序和搜索。可以通过单击右上角区域中的图标来访问它们。他们的工作方式与主程序calibre完全相同。搜索页面甚至允许您通过点击作者/标签等来构建搜索查询。就像在主程序calibre中使用标签浏览器一样。

主程序的一个备受喜爱的功能是:“虚拟书库”也出现在服务器界面中。单击右上角的三个垂直点以选择虚拟书库。

电子书阅读人

You can read any book in your calibre library by simply tapping on it and then tapping the Read button. The book reader is very simple to operate. You can both tap and swipe to turn pages. Swiping up/down skips between chapters. Tapping the top quarter of the screen gets you the detailed controls and viewer preferences.

如果你让内容服务器继续运行,你甚至可以在多个设备上打开同一本书,它会记住你上次阅读的位置。如果没有,您可以通过点击上方四分之一区域并选择菜单:“同步”来强制同步。

浏览器支持

新版本的calibre服务器充分利用了高级HTML5和CSS 3功能。因此,它需要使用最新的浏览器。它已经在Android Chrome和iOS Safari以及桌面上的Chrome和Firefox上进行了测试。

服务器正在谨慎使用已经标准化或正在进行标准化上的功能。因此,如果它目前无法正常与您喜爱的浏览器使用,那么一旦该浏览器功能赶上,它很可能会满足你的使用。

如果您使用的是特别旧或受限的浏览器,或者您不喜欢运行Java脚本,您可以使用*手机*视图,只需在服务器地址后添加``/mobile``即可。

备注

在iOS上,苹果只允许使用一个浏览器引擎,因此Firefox、Chrome和Safari实际上都是同一个浏览器。新的服务器界面需要iOS 10.3.2或更新版本。在安卓系统上,该服务器已通过Chrome 58及更新版本的测试。

启用脱机支持

Browser makers have been trying to force people to use SSL by disabling advanced features in their browsers for plain HTTP connections. One such casualty is ApplicationCache, which was what was used in calibre for offline support. As a result now-a-days sadly, offline mode works only as long as you keep the browser tab open. In addition, in Firefox on Android, you will need to type about:config and create a preference called browser.tabs.useCache and set it to true.

仅从命令行管理用户帐户

Calibre程序在中有一个很好的分部设计在菜单“首选项”,允许您管理服务器的用户帐户。但是,如果您想运行独立服务器,但无法在同一台计算机/用户帐户上运行calibre主程序,您也可以仅使用命令行管理用户。

您可以使用独立的Calibre服务器程序的“–管理用户”选项来管理用户帐户。假设您希望将用户数据库存储在文件夹“/srv/calbre”中,然后通过运行以下命令来创建它:

calibre-server --userdb /srv/calibre/users.sqlite --manage-users

只需按照提示创建用户帐户、设置他们的权限等。完成后,您可以按以下方式运行服务器:

calibre-server --userdb /srv/calibre/users.sqlite --enable-auth

它将使用您在上一步中创建的用户帐户。

将calibre内容服务器集成到其他服务器中

在这里,我们将向您展示如何将calibre内容服务器集成到另一个服务器中。最常见的原因是使用SSL或将calibre库作为更大网站的一部分提供服务。基本技术是运行calibre服务器,并从主服务器为其设置反向代理。

反向代理是指普通服务器接受传入请求并将其传递到calibre服务器上。然后,它从calibre服务器读取响应并将其转发给客户端。这意味着您可以简单地正常运行calibre服务器,而无需尝试将其与主服务器紧密集成。

使用完整的虚拟主机

最简单的配置是将一个完整的虚拟主机专用于calibre服务器。在这种情况下,将calibre服务器运行为:

calibre-server

现在在主服务器中设置虚拟主机,例如nginx::

http {
    client_max_body_size 64M;  # needed to upload large books
}

server {
    listen [::]:80;
    server_name myserver.example.com;

    location / {
        proxy_pass http://127.0.0.1:8080;
    }
}

或者,对于Apache:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

<VirtualHost *:80>
    ServerName myserver.example.com
    AllowEncodedSlashes On
    ProxyPreserveHost On
    ProxyPass "/"  "http://localhost:8080/"
</VirtualHost>

使用URL前缀

如果你不想把一个完整的虚拟主机专用于calibre,你可以让它使用URL前缀。启动calibre服务器,如下所示:

calibre-server --url-prefix /calibre --port 8080

这里的关键参数是“–url前缀/calibre”。这将导致内容服务器为所有前缀为“/calibre”的URL提供服务。要查看此操作,请访问“http://localhost:8080/calibre”在您的浏览器中。您应该可以看到普通的内容服务器网站,但现在它将在“/calibre”下运行。

对于nginx,所需的配置是:

http {
    client_max_body_size 64M;  # needed to upload large books
}

proxy_set_header X-Forwarded-For $remote_addr;
location /calibre/ {
    proxy_buffering off;
    proxy_pass http://127.0.0.1:8080$request_uri;
}
location /calibre {
    # we need a trailing slash for the Application Cache to work
    rewrite /calibre /calibre/ permanent;
}

对于Apache,首先在Apache中启用代理模块,方法是将以下内容添加到文件“httpd.conf”:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

启用代理模块的确切技术会因Apache的安装而异。启用代理模块后,将以下规则添加到文件:“httpd.conf”(或者,如果您正在使用虚拟主机,则添加到相关虚拟主机的conf文件中):

AllowEncodedSlashes On
RewriteEngine on
RewriteRule ^/calibre/(.*) http://127.0.0.1:8080/calibre/$1 [proxy]
RedirectMatch permanent ^/calibre$ /calibre/

仅此而已,您现在就可以访问主服务器中“/calibre”URL下的calibre内容服务器。上述规则将“/calibre”下的所有请求传递给运行在端口8080上的calibre服务器,并且由于上面的“–url前缀”选项,calible服务器透明地处理这些请求。

备注

当使用反向代理时,您应该通过使用“–listen on 127.0.0.1”告诉calibre内容服务器只在本地服务器上侦听。这样,服务器将只侦听来自同一台计算机的连接,即来自反向代理的连接。

备注

如果您已经为主服务器设置了SSL,您应该告诉calibre服务器使用基本身份验证,而不是摘要身份验证,因为这会更快。要执行此操作,请将“–auth-mode=basic”选项传递给“calibre服务器”。

在现代Linux系统上为calibre服务器创建服务

You can easily create a service to run calibre at boot on a modern (systemd) based Linux system. Just create the file /etc/systemd/system/calibre-server.service with the contents shown below:

[Unit]
Description=calibre Content server
After=network.target

[Service]
Type=simple
User=mylinuxuser
Group=mylinuxgroup
ExecStart=/opt/calibre/calibre-server "/path/to/calibre library folder"

[Install]
WantedBy=multi-user.target

将“mylinxuser”和“mylinuxgroup”更改为您希望服务器以何种用户和组的身份运行。这应该是拥有calibre书库文件夹中文件的同一用户和组。请注意,以root用户身份运行服务器通常不是一个好主意。同时更改Calibre书库文件夹的路径以适合您的系统。如果需要,可以添加多个库。请参阅“calibre服务器”命令的帮助。

现在运行:

sudo systemctl start calibre-server

来启动服务器。使用以下命令检查其状态:

sudo systemctl status calibre-server

要使其在引导时启动,请运行::

sudo systemctl enable calibre-server

备注

calibre服务器确实不需要运行X服务器,但它确实需要安装X库,因为它使用的某些组件会与它们链接。

备注

calibre服务器还支持systemd套接字激活,因此如果需要,您也可以使用它。