Skip to main content

私人书库搭建教程——Calibre-Web

简述

本文主要介绍利用Calibre-Web在Nas上搭建私有书库。其中基于Docker创建。威联通中的Docker可以直接使用Container Station。其中Container Station可以直接在APP Center中搜索安装。

安装

在Container Station创建页面的搜索框中输入Calibre,就可以看到有非常多的结果。nas-calibre-1.png

众多的镜像中,可以随便选择自己喜欢的,本文以最热门的一个linuxserver/calibre-web为例。点击【安装】。然后选择镜像版本,直接用 latest即可。点击下一步。 calibre版本选择.png

在新的弹窗中,其中的名称、CPU限制以及内存限制,可以根据自己的喜好选择。其他参数保留默认的即可。然后点开高级设置。 3.png

在环境变量里面,如果在后续需要用到在线的格式转换功能,需要新增一个变量,如果不需要,跳过即可。点击右上角的新增按钮,然后名称输入DOCKER_MODS,值里面输入linuxserver/calibre-web:calibre4.png

然后在网络里面,如果需要实现端口转发的话,则在主机里面填入实例的默认端口(49153),如果不需要则直接跳过即可。 5.png

接着,可以设置一下共享文件夹。所谓的共享文件夹,就是Docker能够直接读取Docker外的文件。比如,在File Station里面准备用一个名称为Books的文件夹保存所有书籍文件,那么,就新增一个挂载路径。 6.png 在上图中,红色框内的 挂载本机共享文件夹是Nas里面的基本文件,而挂载路径则是docker里面的文件路径,这里可以随便填,因为后面直接设置为该路径即可。

在上述设置完成后,点击创建。然后最后确认一遍刚刚的所有配置,没有问题的话,点击确认。耐心等待几分钟后,如果没有意外的话。整个docker就创建成功了。 7.png

可以在Container Station左侧最后一个菜单里面找到所有在运行的Docker实例。然后找到刚刚创建的Docker,直接点击名称右边的链接符号即可打开对应的站点。或者点击Docker名称,进去详情页面查看对应的访问地址。 8.png

至此,整个安装已完成。

配置

数据库配置

在浏览器的新标签也打开了Calibre-Web的网页,网页需要登录,默认的登录账号为admin,默认的密码是admin1239.png

登录成功后,首先需要设置数据库,直接输入刚刚配置的挂载路径。然后,点击Save。如果没有问题,整个网站已经完全可以用了。

需要注意的是,数据库文件夹里面需要包含 metadata.db 这个文件,如果没有的话,可以从别的地方下载,或者通过 电脑的 calibre 软件新建一个书库,然后将该书库上传到对应的文件路径里面。这也就是说,可以完全在电脑上面,通过calibre软件,新建书库后,导入了所有的书籍,然后再将整个书库的文件夹上传到nas。

10.png

设置界面语言

默认的界面为英文,喜欢英文的可以保留,如果不喜欢英文的话,首先可以先更改成中文显示。点击右上角的用户名,打开用户配置页面。 11.png

配置邮箱服务

邮箱服务可以支持直接将书籍发送到某个邮箱里面,比如Kindle的邮箱,这样可以直接在别的设备里面打开或者阅读书籍。 12.png

这里所有的邮箱基本都支持SMTP服务。具体可以根据自己的使用邮箱决定。这里以126邮箱为例。

  • SMTP主机名:smtp.126.com
  • 端口:25
  • 用户名:这里填入自己的126邮箱账号,比如xxxx@126.com
  • 密码,使用邮箱设置里面的SMTP密码 13.png

然后保存即可。可以点击测试发送邮件,查看配置是否成功。测试的邮件,将会发送到 当前登录账号所配置的邮箱里面。

配置在线转换格式

此功能,需要在docker安装的时候配置DOCKER_MODS。如果没有配置,则无法配置此功能。首先进入基本配置的页面。 14.png

然后在扩展程序配置里面的Calibre 电子书转换器路径输入/usr/bin/ebook-convert。在KEpubify 电子书转换器路径中输入/usr/bin/kepubify。然后保存。 15.png

配置豆瓣API获取元数据

系统自带的google等的API由于众所众知的原因,无法获取元数据,并且会导致系统卡死。 要解决这个问题,可以有两种方案:

  1. 考虑梯子
  2. 直接删除原有的元数据provider。

使用豆瓣API的provider比较简单。 首先在https://github.com/fugary/calibre-web-douban-api中下载calibre-web版本对应的API文件,然后进入容器的终端,输入/bin/bash,直接进入docker里面的系统的命令行界面

然后进入到目录/app/calibre-web/cps/metadata_provider目录下,新建一个xxx.py文件,将上面下载的.py文件的内容复制新建的文件中,然后重启docker即可。

问题

在线阅读无法显示图片

进入docker的终端机,弹窗中输入 /usr/sh,然后编辑 /app/calibre-web/cps/web.py文件,在对应代码中增加以下代码。

resp.headers['Content-Security-Policy'] = "default-src 'self'" + ''.join([' '+host for host in config.config_trustedhosts.strip().split(',')]) + " 'unsafe-inline' 'unsafe-eval'; font-src 'self' data:; img-src 'self' data:"
    if request.endpoint == "editbook.edit_book" or config.config_use_google_drive:
        resp.headers['Content-Security-Policy'] += " *"
    elif request.endpoint == "web.read_book": # 这里为新增的代码 
        resp.headers['Content-Security-Policy'] += " blob:;style-src-elem 'self' blob: 'unsafe-inline';"  # 这里为新增的代码
    resp.headers['X-Content-Type-Options'] = 'nosniff'
    resp.headers['X-Frame-Options'] = 'SAMEORIGIN'
    resp.headers['X-XSS-Protection'] = '1; mode=block'

此处主要解决的是图片跨域问题