开源好用的电子书管理服务Talebook(Calibre网络版)安装使用指南

新浪微博 QQ空间

今天是世界读书日,介绍一款已经用过一段时间的在线电子书管理、阅读服务。Talebook是一个开源的Calibre WEB外壳,源项目地址是:Github项目,我为了方便自己开发,在自己的代码托管服务上放了一份源码,方便存放自己的开发过程代码。也经常将自己用稳定了的特性或者修改的Bug提交MR推送到原作者的项目中。我主要会根据自己的需要开发一些特性和修复我认为比较关键的bug。代码地址为:自用Talebook地址Docker镜像地址。增加了一个限制单个IP地址下载书籍的数量限制特性,用来防止爬虫大并发爬取书籍,导致站点不可用。另外还增加了一些统计信息和界面修改等,具体的差异点可以对比两个代码工程的获取。我也会持续跟进源项目的新特性,实时合并,也继续推送自己的修改到源项目。

更新记录列表:

  1. 支持限制单个IP地址下载数量;
  2. 支持随机推荐和最新书籍推荐手动刷新;
  3. 支持个人阅读、访问、下载和推送记录,也支持一键清除,优化历史记录页面;
  4. 新增“我的收藏”功能;
  5. 上传成功的图书即从upload目录删除,避免书籍被保存两份,浪费空间;
  6. 导入页面,在删除导入记录的同时,也删除上传到uploads目录的图书。

跟原项目一样,我也基于仓库代码生成了镜像,推送到了dockerhub有了Docker镜像,安装使用起来非常方便:

docker run -d --name calibre \
-p 127.0.0.1:12579:80 \
-v /media/c2/docker/calibre/data:/data \
-E TZ="Asia/Shanghai" \
shentar/talebook:latest

我这里将容器内的80端口映射到本机的内部随机端口,然后再在宿主机上面使用Nginx反向代理对外提供HTTPS服务。反向代理时,需要注意一些配置:

server {
    listen 6870 ssl http2;
    server_name book.codefine.site;
    index index.html index.htm index.php default.html default.htm default.php;
    root /any/local/path/;
    
    ssl_certificate ***********;
    ssl_certificate_key ***********;
    
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    
    client_max_body_size 500M; 
    
    location / {
        proxy_pass http://127.0.0.1:12579/;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Nginx-Proxy true;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $http_connection;
    }
 
    access_log on;
}

注意这些Header必须正确设置,否则可能无法正常打开主页。 剩下的就是从网页打开宿主机的6870端口即可访问,我的宿主机是有域名的因此,我的站点的地址就是:https://book.codefine.site:6870,首次打开时,会做一些必要的配置,如私人模式还是多用户模式。admin账号和密码设置等。完成后就可以愉快的使用talebook存取电子书籍了。 对于网络下载的各种电子书文件,元信息可能都不准确,因此需要从豆瓣等刮削元信息。开源社区有一个现成的刮削服务,douban-api-rs:源码地址为:https://github.com/cxfksword/douban-api-rs,这个也提供Docker的安装方式,不过作者并没有在Dockerhub上面放镜像。而是在Github自己的镜像服务上面托管镜像。如果是命令行安装,只需要执行如下命令即可:

docker run -d \
--name=douban-api-rs \
--restart=always \
-p 172.17.0.1:8080:80
ghcr.io/cxfksword/douban-api-rs:latest

如果是群晖等NAS服务,则需要自行配置新的镜像源才能拉去到该镜像。具体笔者没有使用过,需要自行探索。 然后到Talebook的高级配置项目中配置即可:

image

我这里之所以选择使用172.17.0.1作为监听地址,是因为这个地址是我的docker服务的网络的虚拟网关,宿主机也能访问这个IP地址。这样,在Talebook内部就能用这个地址与豆瓣刮削服务通信。上传电子书之后,只要设置正确的书籍名字即可进行全量元数据的抓取了。豆瓣网站不再提供书籍的标签(Tag)了,因此Talebook服务端做了从作者、标题和书籍摘要中匹配Tag的实现,准确率还行。 感谢Talebook作者贡献这么好的开源项目,并且多年来还在积极维护。这个项目也让我初步接触到Vue.js、Node.js、Python3 Tornado等生态,开发WEB项目,使用这些组件,效率极高。什么时候有精力可以把jAlbum的前端好好用这些写一下。

新浪微博 QQ空间

| 1 分2 分3 分4 分5 分 (5.00- 2票) Loading ... Loading ... | 这篇文章归档在:WEB网络, 建站技术, 数码硬件, 移动互联 | 标签: , , , , , . | 永久链接:链接 | 评论(7) |

7 条评论

  1. Panda
    评论于 九月 26, 2022 at 11:31:36 CST | 评论链接

    感谢楼主分享 20220926 亲测有效

  2. 匿名
    评论于 六月 23, 2022 at 10:13:42 CST | 评论链接

    还有一个,在用户管理界面可不可以增加一个添加账号功能

  3. 匿名
    评论于 六月 23, 2022 at 10:12:03 CST | 评论链接

    目前安装已经发现的问题:
    1.跟老版本一样,在imports文件夹下一次性放好多本书网址会直接无响应。(目前解决方案是在docker里新增了一个calibre,只用来自动添加书籍到library里)
    2.opds的问题,静读天下pro7.3-7.5版本打开会提示”org.apache.http.clientprotocolexception”,在librerareader里能正常使用。
    3.添加书籍过程中不会像calibre添加之后自动删除功能。

    • 童燕群
      评论于 六月 23, 2022 at 11:11:49 CST | 评论链接

      1、没办法解决,你这个做法就挺好的,建议两个docker不要同时工作,否则库会被弄坏。
      2、opds不稳定,看你这个报错是https的问题?
      3、在删除导入记录时自动删除书籍,上传的书籍也是成功后自动删除。
      4、没计划做这个,注册用户挺简单的。而且本身就不能公开访问,注册不是常操作。

      • 匿名
        评论于 六月 23, 2022 at 21:06:53 CST | 评论链接

        同样的地址,静读里就报错,librera里就正常使用,所以感觉更像是软件的问题。还有以后如果亚马逊退出中国,opds可以作为备选,关于opds界面可以有不同主题么?

        • 童燕群
          评论于 六月 24, 2022 at 23:58:27 CST | 评论链接

          OPDS只是给出一个索引,最终阅读时,还是下载书籍到本地的,因此OPDS应该做不了什么界面控制。所以跟你用网页浏览下载再导入到静读没有区别。我这里静读是没问题的。

          你可以发一下服务端的日志,或者直接发一下你的站点,我试一下。

  4. i
    评论于 六月 14, 2022 at 22:30:22 CST | 评论链接

    比原版的好用,谢谢

评论

邮箱地址不会被泄露, 标记为 * 的项目必填。

8 - 2 = *



You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <img alt="" src="" class=""> <pre class=""> <q cite=""> <s> <strike> <strong>

返回顶部