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

新浪微博 QQ空间

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

更新记录列表:

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

跟原项目一样,我也基于仓库代码生成了镜像,推送到了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- 4票) Loading ... Loading ... | 这篇文章归档在:WEB网络, 建站技术, 数码硬件, 移动互联 | 标签: , , , , , . | 永久链接:链接 | 评论(23) |

23 条评论

  1. 1
    评论于 十二月 25, 2022 at 15:50:55 CST | 评论链接

    在线打开书籍报错

          File "/usr/local/lib/python3.9/dist-packages/tornado/iostream.py", line 356, in read_until_regex
            self._try_inline_read()
          File "/usr/local/lib/python3.9/dist-packages/tornado/iostream.py", line 842, in _try_inline_read
            pos = self._read_to_buffer_loop()
          File "/usr/local/lib/python3.9/dist-packages/tornado/iostream.py", line 755, in _read_to_buffer_loop
            if self._read_to_buffer() == 0:
          File "/usr/local/lib/python3.9/dist-packages/tornado/iostream.py", line 894, in _read_to_buffer
            raise StreamBufferFullError("Reached maximum read buffer size")
        tornado.iostream.StreamBufferFullError: Reached maximum read buffer size

     

    • 童燕群
      评论于 十二月 26, 2022 at 11:47:02 CST | 评论链接

      我看tornado的源码,只有上传时检查max_buffer_size,调用_read_to_buffer,所以这个应该是上传文件时的报错,而不是下载。你再检查一下下载的日志呢?

  2. 小鱼
    评论于 十二月 15, 2022 at 13:44:11 CST | 评论链接

    奇异书屋 | 奇异书屋
    这个如何修改?每次看到这个都好烦

    • 童燕群
      评论于 十二月 16, 2022 at 10:04:54 CST | 评论链接

      系统设置里面,基本信息里面,第一项。

  3. 匿名
    评论于 十二月 3, 2022 at 04:47:56 CST | 评论链接

    请问下如何更新,我安装后是v2.0.0-89版本很多东西没有

    • 童燕群
      评论于 十二月 3, 2022 at 21:28:32 CST | 评论链接

      保留原data目录,删除container,重新用新镜像创contaner即可:
      docker run -d –name calibre \
      -p 127.0.0.1:12579:80 \
      -v /your/data/dir:/data \
      -E TZ=”Asia/Shanghai” \
      shentar/talebook:latest

  4. 评论于 十一月 1, 2022 at 17:40:29 CST | 评论链接

    手机无法正常阅读,一直缓冲

  5. 匿名
    评论于 十月 16, 2022 at 10:42:54 CST | 评论链接

    感谢分享,请问这个版本可以保存多版本多格式吗,原版本不能保存多版本多格式,有些书名扫描有错误说已存在就不能保存了

    • 评论于 十月 17, 2022 at 10:04:10 CST | 评论链接

      也不行的,同一本书多种格式,应该是原生的Calibre的能力。对于同一本书上传时报已经存在的问题,我一般的做法是,先把已经存在的书改名字,然后上传新的,上传完成后,再把两本书都改成同样的名字。

      • 匿名
        评论于 十月 18, 2022 at 21:06:30 CST | 评论链接

        不能多种格式有点烦,我先试试改名上传书,之前试过原版删除导入记录结果不行

        • 匿名
          评论于 十月 18, 2022 at 21:08:26 CST | 评论链接

          突然发现github上原版作者给我提的建议添加了feacture标签,期待后面的改动

        • 评论于 十月 18, 2022 at 21:17:52 CST | 评论链接

          改名只是最终能保存两本书。我觉得想要一本书两种格式那种,还是要用calibre桌面工具来导入。也不一定就能在web上面呈现,没分析过这个点。

          • 匿名
            评论于 十月 20, 2022 at 15:41:19 CST | 评论链接

            先把书保存进去再说,有书是上中下三本,只能保存一本就比较难受。
            我有一本书有epub和mobi两种格式的,不知道是怎么保存进去的,试过nas停止docker运行,本地复制到文件夹,结果说文件夹不存在,应该是复制进去有权限限制

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

    感谢楼主分享 20220926 亲测有效

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

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

  8. 匿名
    评论于 六月 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应该做不了什么界面控制。所以跟你用网页浏览下载再导入到静读没有区别。我这里静读是没问题的。

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

          • 匿名
            评论于 十月 18, 2022 at 10:23:25 CST | 评论链接

            http://b.3ren.xyz:10086/opds/
            服务器日志在docker里找么

          • 评论于 十月 18, 2022 at 10:27:22 CST | 评论链接

            在docker的/data目录,如果你映射了这个目录,那么宿主机的目录里面能找到。

          • 匿名
            评论于 十月 19, 2022 at 09:07:30 CST | 评论链接

            有的,talerbook.log?

  9. 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>

返回顶部