群晖搭建Calibre电子图书馆填坑记录

作者:值友

自从将NAS升级到DS220+以来,比较着迷群晖的docker。虽然电子书库对我来说用处不是很大,但也忍不住折腾了一番。最后导入藏书的时候才发现,原来像收破烂一样,收了很多书,真正读的不过1,2成。最近看过一些整理笔记或者知识管理的博文,里面提到知识应当不断整理,才能转化为自己的知识。这些收藏在角落里的应当果断地断舍离。这是题外话了。

本文主要还是记录一些折腾心得,希望可以帮到需要的人,节省一些时间和精力。网络上其实有很多已经实践了的文章,可作参考:

- 打造基于 NAS 的个人随身数字书库 - 少数派

- skylake架构DIY NAS 篇二:打造属于自己的私人云书库_NAS存储_什么值得买

- 拍娃党之文件管理:NAS篇二]Calibre-web电子书库解决方案 - 简书

Calibre是一个电子书管理软件,请看“calibre - 电子书管理”。然后,有热心网友,将其web化,提供了基于Bootstrap框架的web客户端,即“janeczku/calibre-web”。再然后,docker镜像也就应运而生,于是群晖结合docker又具备了新的可玩性。Calibre-web的docker镜像主要有两个:

- technosoft2000/calibre-web - Docker Image | Docker Hub

- linuxserver/calibre-web - Docker Image | Docker Hub

在群晖的docker中都可以安装,两款docker的主要区别在于后者不包含电子书格式转换模块,而前者则是包含了转换模块。可以将电子书转换成不同格式,例如:PDF,EPUB,AZW3,MOBI等等。

我最终选择了technosoft2000/calibre-web,倒不是因为电子书转换功能。而是因为linuxserver/calibre-web过于精简。该docker中vi工具都没有,也缺少calibredb工具。对于我这种需要批量导入已有图书的就不太友好了。后文有针对批量导入的一些个人的经验分享。

后续章节罗列一些我遇到的问题和解决的方法。

数据库

第一次打开Calibre界面时,需要选择数据库地址。一开始选择的linuxserver/calibre-web镜像,怎么都没法进入主界面。参考Calibre-web部署后一些细节问题答疑 - 知乎

1. 其他文章提到部署时需要metadata.db文件,不然在进入网页配置时会无法进行下一步。

答:technosoft2000/calibre-web这个镜像倒是会自动去创建metadata.db文件,不需要像其他镜像那样需要用户先用PC版calibre来创建metadata.db然后复制进群晖相关文件夹。但更容易遇到另一个问题,我在问题2里说。

2. 最初运行technosoft2000/calibre-web镜像数分钟后,calibre-web会自动停止运行。并且在日志里查看会提示缺少“`***.py`”文件。

答:虽然technosoft2000/calibre-web会自动下载运行所需的文件,但因为它本身服务器和国内连接不畅的原因,很容易出现下载失败的情况,然后就会有类似提示。需要等待其他时间段尝试让其自动下载文件,或者改善网络。

我是使用technosoft2000/calibre-web镜像,直接可以生成metadata.db,并直接进入界面。如果是用linuxserver/calibre-web镜像可能要动点其他的小心思。比如用PC端Calibre生成好metadta.db文件,再拷过来。为了省事儿,可以直接上technosoft2000/calibre-web,各种定制性还是令人省心不少。

支持豆瓣

豆瓣已经在2020年8月无情地关闭了书籍元数据下载功能(俗称刮削)。网上搜到的大多是无效的解答,例如:“calibre-web 获取元数据 豆瓣API失效解决办法_瑞哥的博客-CSDN博客_calibre 元数据”。

最新(2021年9月)亲测可用的办法是使用这个docker镜像服务:fugary/simple-boot-douban-api: Simple douban book api。具体方法也很简单,在群晖上下载好docker,并启动,然后再修改代码,重启Calibre-web docker镜像即可:

vi /calibre-web/app/cps/static/js/get_meta.js

# 找到 var douban = ""; 替换成自己的NAS_IP地址

var douban = ":8085";

成功示例:

广告Mouser 贸泽电子(中国)×

另外值得一提的是,calibre-web集成的Google books搜索,在客户端(非NAS端)科学上网的情况下,就可以获取数据。针对日常刮削场景多一个选择总归是好的。

广告如何把 pdf 格式的文档完美转换成 word?×批量导入

可以参考这一篇“威联通折腾篇十九:Calibre-web | Verne in GitHub”。其实就是会用这个命令就可以了:

calibredb add --library-path=/books -r /path/to/your/book_dir_you_want_to_add

calibredb还有很多其他功能,看帮助文档就好了,简单易学:

Usage: calibredb command [options] [arguments]

calibredb is the command line interface to the calibre books database.

command is one of:

  list

  add

  remove

  add_format

  remove_format

  show_metadata

  set_metadata

SSL setting

如果需要通过https访问calibre-web网页,建议通过群晖反向代理设置。只要配置好证书,就可以访问。不要轻易碰下面的配置。

广告如何将pdf文件转换成 word文件?×

如果一定需要,请参考[SSL setting · Issue #98 · Technosoft2000/docker-calibre-web · GitHub]。

我就是误配置,导致页面显示ERR_EMPTY_RESPONSE。最后需要将书库中的这几个文件删除,才能打开网页。

app.db

gdrive.db

具体原因不详。

总结

建议选择technosoft2000/calibre-web镜像

建议使用fugary/simple-boot-douban-api取代豆瓣API刮削