如果你家里有一台群晖或者可以安装docker的服务器,不妨跟我一起从零开始搭建一个电子书图书馆,这个图书馆使用了开源项目calibre-web,这个项目是基于calibre这个单机版图书馆做出来的,这也是为什么下面需要在相应目录下存放一个calibre的数据库文件的原因。
calibre-web的功能很强大主要有以下几大功能点:
1、无缝集成calibre单机版图书馆,只要将calibre的数据库文件和相应的图书复制进calibre-web指定目录,calibre的所有书籍就可以通过web端管理阅读推送了。
2、支持上传下载图书、建立编辑书架功能(上传的时候可从互联网获取完善书籍信息并保存)
3、在线阅读pdf、epub等格式,支持的电子书格式众多。
3、支持电子书格式在线转换,如pdf--->epub等等
4、支持图书推送到自己的kindle设备
5、支持在线注册用户,用户权限管理(如管理员可指定用户是否拥有上传、阅读、下载等权限)
下面就开始一步步来搭建calibre-web:
打开群晖docker
这里我们可以看到需要配置的完整内容,-p 代表端口映射是8083,-e代表环境变量配置 ,PUID\PGID是处理权限的,DOCKER_MODS是电子书转换功能需要配置的,OAUTHLIB_RELAX_TOKEN_SCOPE是谷歌登录所需的(当然如果要实现这个肯定要去google申请应用),-v表示目录挂载 需要挂载两个目录分别是/config /books
当我们分析了官方文档后就知道下载完成后启动容器需要配置哪些内容了,这个无论是群晖内的docker还是其他系统的docker,查看官网说明文档是最直接的,切记不要盲目去看别人博客中写的。
把官网要求加的环境变量全部加上,因为我们要使用全功能的容器,需要添加以下四个环境变量,如上图
PUID $(id -u) 这个写法是指用户的uid是当前用户,也就是哪个用户启动了这个容器,这个容器就使用哪个用户的权限,这个直接关系到挂载的文件夹是否可以读写,很重要。
PGID $(id -g) 这是指定当前用户组的id,保持这个写法即可
OAUTHLIB_RELAX_TOKEN_SCOPE 1 开启谷歌auth
DOCKER_MODS linuxserver/calibre-web:calibre 开启电子书格式转换的能力
补充:官方文档写的GUID\PGID 都填1000 这边不能按照官方的来,因为你不知道你系统的用户id是多少,如果要填写具体数据,就要开启ssh 在群晖中执行 id 用户名 来查看具体的GUID PGID,这里使用$(id -u) $(id -g)是一劳永逸的写法,实际上在读到这边的时候就是执行命令获取相应的id。
链接: https://pan.baidu.com/s/13Y-DSQGvezoQiNyLXZW6tg 提取码: cjmt
--来自百度网盘超级会员v5的分享 如下图
补充:为什么要这个数据库文件,因为calibre-web是基于calibre的,它并不负责图书库的创建,所以需要有一个数据仓库,metadata.db就是这个数据仓库,john schember是这个数据仓库中的一本指南书。如果你不使用我的这个空库文件,你也可以去电脑本地安装一个calibre软件,官方下载地址:https://calibre-ebook.com/download,下载安装会让你指定一个数据库存放目录,安装完成后就会自动生成这个数据库文件和第一本一本指南书,去这个目录下拿文件即可。
搭建完毕需要对calibre-web进行详细的配置,可以移步我的另一片博文:
大佬按你的方法安装完后,上传图书后点击获取元数据,然后点保存会网页假死,后来查了下说是获取元数据的时候应用了google的链接,不知道有没有解决方法
我能想到的是第一个方法1、: 你点击元数据后把google的两个不勾选,然后再试试
2、第二个方法,让整个网络环境可以访问谷歌,也就是在路由器上装科学插件。
DOCKER_MODS linuxserver/calibre-web:calibre 开启电子书格式转换的能力
大佬,我只要配置了这个参数 网页端就会打不开 不配置就可以正常打开 是什么原因?
你的cpu是x86还是arm啊。
x86的 英特尔的j4125
看具体的错误信息,点容器–>详情–>日志 看日志分析问题。
遇到了同样的问题,已解决供参考
关闭容器修改为DOCKER_MODS=linuxserver/calibre-web:calibre `#optional`
启动容器等30秒就可以了
docker hub怎么变成中文的
谷歌浏览器翻译
大哥,在群晖里安装了,也配置了,上传图书的时候会不成功,显示数据库错误:(sqlite3.OperationalError) attempt to write a readonly database [SQL: INSERT INTO authors (name, sort, link) VALUES (?, ?, ?)] [parameters: (‘未知’, ‘未知’, ”)] (Background on this error at: https://sqlalche.me/e/14/e3q8)。这个怎么破?
因为你没有权限,仔细看我的文章,有两个参数你配了吗?puid和pgid
配置了的啊,我再试试
你群晖是管理员账号登的吗?如果不行就打开群晖的ssh功能,用ssh登录群晖,然后输入 id 用户名 查看puid和pgid,这两个配置成具体数值。
是管理员账号登录 昨天装了为知笔记 和 transmission 都运行正常
最终是给Everyone访问文件夹的所有权限 才解决了问题 真是太扯了
嗯 理论上不需要给everyone权限的
请问怎么给everyone所有权限啊
也不知道是不是群晖设置的问题 换了另外一个版本的calibre也是这个问题
按照配置 显示无法保存到临时目录为什么啊 谢谢大大
大大你好 上传书籍显示无法保存到临时目录 怎么办啊
检查群晖的目录,检查docker映射的目录,检查web管理页中calibre数据库路径是不是/books
…一点儿没问题都没有 真是邪门儿了 就是上传不了
我也是这样,无法上传临时目录,不知道哪里出了问题,刚开始安装的时候是可以了,穿了四本书,突然又不行了,不知道是哪里出了问题!
你这问题我遇到了。填写正确的PGID和PUID也不行后来我安装以下方式填写就好了
PGID填写$(id -g)
PUID填写$(id -u)
一样的问题,找到解决方法了:
I just ran into this issue and was able to solve it in case you haven’t figured it out (running in Docker on Synology NAS).
I believe it’s an issue with the temp directory being on a different drive than the library/upload directory. (https://github.com/Technosoft2000/docker-calibre-web/issues/89)
I created two new directories in my calibre folder (docker/calibre/temp and docker/calibre/upload) and put the mount points as /tmp and /upload respectively. This allowed me to upload files to my calibre library from calibre-web.
Edit: only creating one of the above directories did not fix it.
https://www.reddit.com/r/Calibre/comments/odgkb1/error_when_uploading_via_calibreweb/
上传书籍报错,calibre(sqlite3.OperationalError) attempt to write a readonly database [SQL: INSERT INTO authors (name, sort, l
权限问题
格式转换失败,没有成功过
您好,我设置后报如下的错误,请问是哪方面出了问题
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File “/app/calibre-web/cps.py”, line 34, in
from cps import create_app
File “/app/calibre-web/cps/__init__.py”, line 94, in
ub.init_db(cli.settingspath)
—-此处省略很多类似上面的说明,最后面有
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) unable to open database file
(Background on this error at: https://sqlalche.me/e/14/e3q8)
麻烦您帮忙看看
数据库文件是不是没放,再检查检查
原来必须把数据库放在docker文件夹里面
是的
我的也是同样的问题,你的是咋解决的?我的数据库文件放到/books映射的文件里了,还是报错
请教一下,我在环境里面添加了DOCKER_MODS=linuxserver/calibre-web:calibre这个参数打开容器后,网页就打不开了,去掉这个参数,网页就能打开了,什么原因呢?
还有我的电子书转换格式总是失败,是不是就是因为没有这个参数呢?我看官方文档说的格式转换需要这个参数
你的机子芯片不是X86-64吗?
同样遇到这个问题 DS918+
一样也是添加环境DOCKER_MODS=linuxserver/calibre-web:calibre
以后网页打不开,去掉就可以,看了下日志下面这一条,不确定是不是需要梯子才行
[mod-init] Applying linuxserver/calibre-web:calibre files to container
设备是DS220+
关闭容器修改为DOCKER_MODS=linuxserver/calibre-web:calibre `#optional`
启动容器等30秒就可以了
大佬,我的DSM7,顺利安装,开启在线阅读,有个小问题,PDF无法下线阅读,提示以外的服务器响应,pdf.js Unexpected server response 204。
解决了,谢谢,IDM的锅,网上给了思路,打开时唤醒了IDM下载,关闭IDM不自动下载列表解决。
你好,安装完成,在线阅读PDF提示错误,然后弹出下载,是不支持PDF在线阅读吗(开启了在线阅读) ,我就安装其他calibre,验证可以正常打开PDF。是哪里配置问题吗,求助。
解决了,谢谢,IDM的锅,网上给了思路,打开时唤醒了IDM下载,关闭IDM不自动下载列表解决。
[mod-init] Curl/JQ was not found on this system for Docker mods installing
大佬,这是什么情况。
[mod-init] Curl/JQ was not found on this system for Docker mods installing
这是什么情况
同问
同问
安装完不能转换书籍,什么格式都不能成功转换
容器变量也配置了,转换工具路径也配置了
同样的问题,请作者关注一下。
同样的问题,同问。
大佬你好,想要请教一下:我因为误删了config下面的配置文件,因为没有开启垃圾箱,无法找回。然后删除重装容器也找不回被删除的文件,请问有什么办法找回配置文件嘛
按您的步骤,config里面配置文件被误删,重装也没有自动重新安装,请问有什么解决办法
重新运行个新的容器到别的目录,然后拷贝到原来的目录
群晖docker报错:
Curl/JQ was not found on this system for Docker mods installing
calibre-web 无法设置context-root,默认是/;然后和我其他的应用很多路径重复。比如calibre-web的login和其他系统的/login,重复。
nginx反向代理8083端口,用域名访问80端口后登录系统后怎么要再次登录,会话失效?
不明白你的问题描述,应该是反向代理设置的问题,你是否使用了重定向而不是转发?
大佬,按照你的说明一步步操作,最后IP:9000连网页都打不开啊?这是什么问题啊
为什么官网文档上写的是PUID,PGID,但博主配置的时候是GUID,PGID呢?
您好,我按照您的方法一步步成功配置好后,发现电子书格式转换总是失败,看日志里有如下错误:
[2022-11-25 16:03:15,501] INFO {cps.editbooks:318} converting: book id: 83 from: MOBI to: EPUB
[2022-11-25 16:03:15,519] INFO {cps.tasks.convert:142} Book id 83 – target format of .epub does not exist. Moving forward with convert.
[2022-11-25 16:03:16,421] INFO {cps.tasks.convert:188} ebook converter failed with error while converting book
[2022-11-25 16:03:16,421] ERROR {cps.tasks.convert:192} Calibre failed with error: ImportError: cannot import name ‘QBuffer’ from ‘qt.core’ (/app/calibre/lib/calibre-extensions/python-lib.bypy.frozen/qt/core.pyc)
[2022-11-25 16:10:51,099] ERROR {cps.db:796} Author not found to display name in right order
[2022-11-25 16:11:22,289] INFO {cps.editbooks:318} converting: book id: 87 from: PDF to: MOBI
[2022-11-25 16:11:22,832] INFO {cps.tasks.convert:142} Book id 87 – target format of .mobi does not exist. Moving forward with convert.
[2022-11-25 16:12:20,055] ERROR {cps.db:796} Author not found to display name in right order
[2022-11-25 16:12:34,783] INFO {cps.editbooks:318} converting: book id: 68 from: EPUB to: MOBI
[2022-11-25 16:12:48,551] ERROR {cps.db:796} Author not found to display name in right order
[2022-11-25 16:16:08,738] INFO {cps.tasks.convert:188} ebook converter failed with error while converting book
[2022-11-25 16:16:08,739] ERROR {cps.tasks.convert:192} Calibre failed with error: ImportError: cannot import name ‘QBuffer’ from ‘qt.core’ (/app/calibre/lib/calibre-extensions/python-lib.bypy.frozen/qt/core.pyc)
[2022-11-25 16:16:08,742] INFO {cps.tasks.convert:142} Book id 68 – target format of .mobi does not exist. Moving forward with convert.
[2022-11-25 16:16:11,155] INFO {cps.tasks.convert:188} ebook converter failed with error while converting book
[2022-11-25 16:16:11,156] ERROR {cps.tasks.convert:192} Calibre failed with error: ImportError: cannot import name ‘QBuffer’ from ‘qt.core’ (/app/calibre/lib/calibre-extensions/python-lib.bypy.frozen/qt/core.pyc)
[2022-11-25 16:17:05,846] ERROR {cps.db:796} Author not found to display name in right order
[2022-11-25 16:17:21,645] INFO {cps.editbooks:318} converting: book id: 72 from: EPUB to: MOBI
[2022-11-25 16:17:21,656] INFO {cps.tasks.convert:142} Book id 72 – target format of .mobi does not exist. Moving forward with convert.
[2022-11-25 16:17:25,951] INFO {cps.tasks.convert:188} ebook converter failed with error while converting book
[2022-11-25 16:17:25,952] ERROR {cps.tasks.convert:192} Calibre failed with error: ImportError: cannot import name ‘QBuffer’ from ‘qt.core’ (/app/calibre/lib/calibre-extensions/python-lib.bypy.frozen/qt/core.pyc)
———————-
请教,如何解决?
到底是GUID还是PUID,官方文档是PUID,是LZ写错了?
配置和LZ的一模一样?我这边怎么连网页都打不开
嗯 写错了,已更正
你容器启动了吗?检查你网络环境。
6.x版本的群晖内核是3.x的,跟新的6.x calibre-web不兼容。转换格式运行不了的。
需要做点修改。
https://github.com/linuxserver/docker-calibre-web/issues/197
在容器内运行
strip –remove-section=.note.ABI-tag /app/calibre/lib/libQt6Core.so.6
上传书籍时提示:”文件 xxx 无法保存到临时目录”
请问是什么情况
请教一下,中文目录和文件名拼音的问题这个版本是不是解决了啊~
没有
想请教一下大佬,按照您的步骤和评论区的补充意见设置完以后貌似服务能够启动,但很快报错说无法连接,报错信息如下:
———-
Traceback (most recent call last):
File “/usr/local/lib/python3.8/dist-packages/fake_useragent/utils.py”, line 64, in get
with contextlib.closing(urlopen(
File “/usr/lib/python3.8/urllib/request.py”, line 222, in urlopen
return opener.open(url, data, timeout)
File “/usr/lib/python3.8/urllib/request.py”, line 525, in open
response = self._open(req, data)
File “/usr/lib/python3.8/urllib/request.py”, line 542, in _open
result = self._call_chain(self.handle_open, protocol, protocol +
File “/usr/lib/python3.8/urllib/request.py”, line 502, in _call_chain
result = func(*args)
File “/usr/lib/python3.8/urllib/request.py”, line 1397, in https_open
return self.do_open(http.client.HTTPSConnection, req,
File “/usr/lib/python3.8/urllib/request.py”, line 1357, in do_open
raise URLError(err)
urllib.error.URLError:
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File “/app/calibre-web/cps.py”, line 34, in
from cps.about import about
File “/app/calibre-web/cps/about.py”, line 61, in
from scholarly import scholarly
File “/usr/local/lib/python3.8/dist-packages/scholarly/__init__.py”, line 4, in
scholarly = _Scholarly()
File “/usr/local/lib/python3.8/dist-packages/scholarly/_scholarly.py”, line 27, in __init__
self.__nav = Navigator()
File “/usr/local/lib/python3.8/dist-packages/scholarly/_navigator.py”, line 45, in __call__
cls._instances[cls] = super(Singleton, cls).__call__(*args,
File “/usr/local/lib/python3.8/dist-packages/scholarly/_navigator.py”, line 59, in __init__
self.pm = ProxyGenerator()
File “/usr/local/lib/python3.8/dist-packages/scholarly/_proxy_generator.py”, line 54, in __init__
self._new_session()
File “/usr/local/lib/python3.8/dist-packages/scholarly/_proxy_generator.py”, line 368, in _new_session
‘User-Agent’: UserAgent().random,
File “/usr/local/lib/python3.8/dist-packages/fake_useragent/fake.py”, line 69, in __init__
self.load()
File “/usr/local/lib/python3.8/dist-packages/fake_useragent/fake.py”, line 75, in load
self.data = load_cached(
File “/usr/local/lib/python3.8/dist-packages/fake_useragent/utils.py”, line 250, in load_cached
update(path, use_cache_server=use_cache_server, verify_ssl=verify_ssl)
File “/usr/local/lib/python3.8/dist-packages/fake_useragent/utils.py”, line 245, in update
write(path, load(use_cache_server=use_cache_server, verify_ssl=verify_ssl))
File “/usr/local/lib/python3.8/dist-packages/fake_useragent/utils.py”, line 187, in load
ret = json.loads(get(
File “/usr/local/lib/python3.8/dist-packages/fake_useragent/utils.py”, line 84, in get
raise FakeUserAgentError(‘Maximum amount of retries reached’)
———
机器是群晖DS920+,烦请大佬不吝赐教~
我nas上存了很多cbr和cbz的漫画,这个怎么导入到calibre里面?
安装calibre客户端,应该有批量导入,然后把导入的数据库和电子漫画一同拷贝到calibre-web目录
大佬您好,文件夹设置everyone权限,端口号8083,guid和puid也是对的,但是登录网址总是提示【拒绝了我们的连接请求。】 亲问下有可能是出了什么情况呢
牛哇