
⚠️重要提示:各位用户,由于我几乎没有时间维护此项目,现决定停止维护,并建议您切换到维护更完善的镜像 linuxserver/calibre-web。同时,感谢 https://github.com/OzzieIsaacs 及其团队长期致力于 https://github.com/janeczku/calibre-web 的开发,不断改进并添加新功能 👍
https://github.com/janeczku/calibre-web 是一个Web应用,提供简洁的界面用于浏览、阅读和下载电子书,需使用现有Calibre数据库。
!https://raw.githubusercontent.com/janeczku/docker-calibre-web/master/screenshot.png
Calibre Web 包含以下功能:
如需了解更多信息,请访问 Calibre Web 项目网站:https://github.com/janeczku/calibre-web%E3%80%82
如对原始 Calibre 电子书管理工具感兴趣,请访问其项目网站:[***]
2021-10-22 - v1.6.0 - v1.6.1
requirements.txt 和 optional-requirements.txt 中的依赖项 - 解决 calibre-web AttributeError: 'NoneType' object has no attribute 'exempt' #109 问题 - 感谢 @wanoo 提交的相关PR历史变更记录详见 完整更新日志。
/books/gdrive.db 创建gdrive.db符号链接,便于外部访问(如备份)/books/app.db 创建app.db符号链接,便于外部访问(如备份)glibc,因此需要来自ArchLinux的额外包/books 的主机卷/目录必须对其他用户具有_读-写-执行_权限,否则Calibre-Web配置无法完成 :-|/books 卷(如 /volume1/books),这会导致目录权限问题。建议在 /volume1/books 下创建子目录 calibre,然后将 /volume1/books/calibre 映射为 /books 卷http://主机名:<HTTP端口>,例如 http://主机名:8083\books默认管理员登录信息:
成功登录后,请修改默认密码并设置电子邮件地址。
要访问OPDS目录订阅源,请将电子书阅读器指向 http://主机名:<HTTP端口>/opds
在 管理员 -> 基本配置 -> 电子书转换器 中设置所需转换器:
/calibre-web/app/vendor/kindlegen,在 关于 中会显示 kindlegen Amazon kindlegen(Linux) V2.9 build 1028-0897292/opt/calibre/ebook-convert,在 关于 中会显示 Calibre converter ebook-convert (calibre 3.30.0)-v /volume1/docker/apps/calibre-web/app:/calibre-web/app),启动时会出现以下问题[INFO] 检出最新的Calibre-Web版本... [INFO] 自动更新已激活,尝试拉取Calibre-Web的最新源码... [INFO] ... 当前git状态为 fatal: not a git repository (or any parent up to mount point /calibre-web) Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set). [INFO] ... 拉取源码 fatal: not a git repository (or any parent up to mount point /calibre-web) Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set). [INFO] ... 更新后的git状态为 fatal: not a git repository (or any parent up to mount point /calibre-web) Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).
解决方法:在创建和启动容器前,删除 -v /volume1/docker/apps/calibre-web/app:/calibre-web/app 路径下的旧文件。
创建容器:
docker create --name=calibre-web --restart=always \ -v <你的Calibre书籍文件夹>:/books \ [-v <你的Calibre Web应用文件夹>:/calibre-web/app] \ [-v <你的Calibre Web kindlegen文件夹>:/calibre-web/kindlegen`] [-v <你的Calibre Web配置文件夹>:/calibre-web/config \] [-e USE_CONFIG_DIR=true \] [-e APP_REPO=https://github.com/janeczku/calibre-web.git \] [-e APP_BRANCH=master \] [-e SET_CONTAINER_TIMEZONE=true \] [-e CONTAINER_TIMEZONE=<容器时区值> \] [-e PGID=<组ID (gid)> -e PUID=<用户ID (uid)> \] -p <HTTP端口>:8083 \ technosoft2000/calibre-web
示例:
docker create --name=calibre-web --restart=always \ -v /volume1/books/calibre:/books \ -v /etc/localtime:/etc/localtime:ro \ -e PGID=65539 -e PUID=1029 \ -p 8083:8083 \ technosoft2000/calibre-web
或
docker create --name=calibre-web --restart=always \ -v /volume1/books/calibre:/books \ -v /volume1/docker/apps/calibre-web/config:/calibre-web/config \ -e USE_CONFIG_DIR=true \ -e SET_CONTAINER_TIMEZONE=true \ -e CONTAINER_TIMEZONE=Europe/Vienna \ -e PGID=65539 -e PUID=1029 \ -p 8083:8083 \ technosoft2000/calibre-web
启动容器:
docker start calibre-web
参数分为两部分,用冒号分隔。左侧描述主机,右侧描述容器。例如端口定义格式为 -p 外部端口:内部端口,表示将容器内部端口映射到主机外部端口。如 -p 8080:80 表示将容器内的80端口映射到主机的8080端口,通过 [***] 可访问容器内80端口的服务。
-p 8083 - Web用户界面的HTTP端口-v /books - 本地路径,包含Calibre书籍及存储书籍元信息的 metadata.db 文件-v /calibre-web/app - Calibre Web应用文件的本地路径;如需使用Google Drive,请设置此卷-v /calibre-web/kindlegen - Calibre Web kindlegen应用的本地路径-v /etc/localhost - 用于时间同步 - 可选-v /calibre-web/config - Calibre Web配置文件(如 app.db 和 gdrive.db)的本地路径;重要:必须将环境变量 USE_CONFIG_DIR 设置为 true - 可选-e USE_CONFIG_DIR=true - 激活专用配置目录,否则使用默认的 books 目录 - 可选-e APP_REPO - Calibre Web的GitHub仓库地址;默认使用 https://github.com/janeczku/calibre-web.git - 可选-e APP_BRANCH - 要使用的Calibre Web GitHub仓库分支,默认为 master - 可选-e SET_CONTAINER_TIMEZONE - 设为 true 以使用指定的 CONTAINER_TIMEZONE - 可选-e CONTAINER_TIMEZONE - 容器时区,可在 /usr/share/zoneinfo/ 目录下找到 - 可选-e PGID - 组ID - 详见下文说明 - 可选-e PUID - 用户ID - 详见下文说明 - 可选对于Synology NAS等无法映射 /etc/localtime 进行时间同步的情况,可将 SET_CONTAINER_TIMEZONE 设置为 true,并通过 CONTAINER_TIMEZONE 指定时区。可用时区可在 /usr/share/zoneinfo/ 目录下找到。
示例:
UTC - 未设置时的默认值Europe/BerlinEurope/ViennaAmerica/New_York容器运行后,可通过命令 docker exec -it <容器名> tree /usr/share/zoneinfo 查看所有可用时区。
详见 可能的时区值。
不要使用 localtime 作为值,否则会导致:failed to access '/etc/localtime': Too many levels of symbolic links
容器默认的区域设置环境变量如下:
# - LANG, LANGUAGE, LC_ALL: 语言相关设置(默认:en_US.UTF-8) LANG="en_US.UTF-8" LANGUAGE="en_US.UTF-8" LC_ALL="en_US.UTF-8"
如需设置其他区域,可在创建容器时通过 -e LANG、-e LANGUAGE、-e LC_ALL 指定环境变量。支持的区域值详见 可用区域,例如设置 de_DE 需使用 de_DE.UTF-8,示例:-e LANG=de_DE.UTF-8。
查看容器内当前区域设置:
root@NAS:~# docker exec -it calibre-web bash bash-4.4# echo $LANG $LANGUAGE $LC_ALL en_US.UTF-8 en_US.UTF-8 C
在容器内执行 ebook-convert 工具时,输出语言会根据当前区域设置变化:
bash-4.4# ebook-convert Usage: ebook-convert input_file output_file [options] Convert an e-book from one format to another. ...
切换到 de_DE.UTF-8 后的输出:
bash-4.4# export LANG=de_DE.UTF-8; LANGUAGE=de_DE.UTF-8; LC_ALL=de_DE.UTF-8 bash-4.4# echo $LANG $LANGUAGE $LC_ALL de_DE.UTF-8 de_DE.UTF-8 de_DE.UTF-8 bash-4.4# ebook-convert Verwendung: ebook-convert Quelldatei Ausgabedatei [Optionen] Ein eBook von einem Format in ein anderes konvertieren. ...
查看支持的区域:
bash-4.4# /usr/glibc-compat/bin/locale -a C POSIX aa_DJ.utf8 aa_ER.utf8 aa_ET.utf8 af_ZA.utf8 ...
使用数据卷(-v参数)时,主机OS与容器之间可能出现权限问题。通过指定用户PUID和组PGID可避免此问题。确保主机上的数据卷目录归属于指定的用户,即可正常工作。
例如PUID=1001和PGID=1001,可通过以下命令获取当前用户的ID:
$ id <docker用户> uid=1001(dockeruser) gid=1001(dockergroup) groups=1001(dockergroup)
/ |- books |- calibre-web |- app | |- "所有Calibre Web应用文件" | |- app.db -> /calibre-web/config/app.db | |- gdrive.db -> /calibre-web/config/gdrive.db | |- calibre-web.log | |- cps | | |- *.py | | |- *.pyc | | | |- vendor | |- kindlegen -> /calibre-web/kindlegen/kindlegen | |- config | |- app.db | |- gdrive.db | |- kindlegen |- EULA*.txt |- KindleGen Legal Notices*.txt |- docs |- kindlegen |- manual.html
容器运行时获取Shell访问:docker exec -it calibre-web /bin/bash
升级到最新版Calibre Web:docker restart calibre-web
实时监控容器日志:docker logs -f calibre-web
监控Calibre Web日志:docker exec -it calibre-web tail -f /calibre-web/app/calibre-web.log
查看Calibre Web基础镜像版本:docker inspect -f '{{ index .Config.Labels "image.base.version" }}' calibre-web
查看Calibre Web镜像版本:docker inspect -f '{{ index .Config.Labels "image.version" }}' calibre-web
登录DSM Web管理界面
通过SSH连接到NAS
sudo -i
或
sudo su -
密码与SSH认证密码相同。
mkdir -p /volume1/docker/ chown root:root /volume
以下是 technosoft2000/calibre-web 相关的常用 Docker 镜像,适用于 不同场景 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。




探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务