Calibre Web

用于浏览、阅读和下载存储在 Calibre 数据库中的电子书的 Web 应用程序。


Docker Run

创建容器并运行

1
2
3
4
5
6
7
8
9
10
11
12
docker run -d \
--name=calibre-web \
-e PUID=0 \
-e PGID=0 \
-e TZ=Asia/Shanghai \
-e DOCKER_MODS=linuxserver/mods:universal-calibre `#optional` \
-e OAUTHLIB_RELAX_TOKEN_SCOPE=1 `#optional` \
-p 8083:8083 \
-v /root/docker/Calibre-Web/config:/config \
-v /root/docker/Calibre-Web/books:/books \
--restart unless-stopped \
lscr.io/linuxserver/calibre-web:latest

停止容器并删除

1
docker stop calibre-web && docker rm calibre-web

容器运行时的 shell 访问

1
docker exec -it calibre-web /bin/bash

实时监控容器的日志

1
docker logs -f calibre-web

容器版本号

1
docker inspect -f '{{ index .Config.Labels "build_version" }}' calibre-web

镜像版本号

1
docker inspect -f '{{ index .Config.Labels "build_version" }}' lscr.io/linuxserver/calibre-web:latest

Docker Compose

创建 docker-compose.yaml 文件

1
nano docker-compose.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
---
version: "2.1"
services:
calibre-web:
image: linuxserver/calibre-web:latest
container_name: calibre-web
environment:
- PUID=0
- PGID=0
- TZ=Asia/Shanghai
- DOCKER_MODS=linuxserver/mods:universal-calibre
- OAUTHLIB_RELAX_TOKEN_SCOPE=1
volumes:
- ./config:/config
- ./books:/books
ports:
- 8083:8083
restart: unless-stopped
1
docker-compose up -d

打开 8083 端口

1
ufw allow 8083/tcp

配置过程

出现权限错误是 PUID PGID 填写错误导致

数据库错误:attempt to write a readonly database

本地的 books 文件夹需要给予 777 权限

  1. 配置数据库(可以上传 metadata.db 文件,到 books 文件夹内, PUID PGID 填写错误将需要额外赋予读写权限 755 给 metadata.db 文件)

  2. 使用 docker logs -f calibre-web 查看日志

  3. 进入网站

  4. 默认账号 admin 密码 admin123

  5. 填写数据库位置 /books

  6. 更改语言

  7. 扩展程序配置(转换格式)

    1. 管理权限 - 编辑基本配置 - 扩展程序配置
    2. Calibre 电子书转换器路径: /usr/bin/ebook-convert
    3. KEpubify 电子书转换器路径: /usr/bin/kepubify
  8. 后台启用上传

    1. 管理权限 - 编辑基本配置 - 功能配置
    2. 启用上传
    3. 允许匿名浏览
  9. 启用用户阅读权限

  10. 管理权限 - 管理用户

1
2
3
4
5
6
7
8
9
10
docker exec -it calibre-web sh #进入容器内部

cd app/calibre/bin #进入bin文件夹,如果没有bin文件夹需要等待初始化完毕

calibredb restore_database --really-do-it --with-library /books #创建一个数据库

exit # 退出容器

# 权限错误,需要添加额外权限,权限正确跳过这个步骤
chmod a+w /books/metadata.db

一键脚本

1
wget https://raw.githubusercontent.com/18nome/docker/main/Calibre-Web/Calibre-Web.sh && chmod +x Calibre-Web.sh && bash Calibre-Web.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#! /bin/bash

red(){
echo -e "\033[31m\033[01m$1\033[0m"
}
green(){
echo -e "\033[32m\033[01m$1\033[0m"
}
yellow(){
echo -e "\033[33m\033[01m$1\033[0m"
}


# Calibre Web

function calibre-web_install(){
if nc -z localhost 8083; then
echo " 8083 端口已经被占用,请检查相关进程"
exit 1
fi
if docker ps -a --format "{{.Names}}" | grep -q "calibre-web"; then
echo " calibre-web 容器名已经被占用"
exit 1
fi
if [ ! -d /root/docker/Calibre-Web ]; then
mkdir -p /root/docker/Calibre-Web
fi
cd /root/docker/Calibre-Web
if [ -f "docker-compose.yaml" ] || [ -f "docker-compose.yml" ]; then
echo
green " docker-compose 文件已经存在, 跳过创建 docker-compose.yaml 步骤"
echo
else
cat <<EOF > docker-compose.yaml
---
version: "2.1"
services:
calibre-web:
image: linuxserver/calibre-web:latest
container_name: calibre-web
environment:
- PUID=
- PGID=
- TZ=Asia/Shanghai
- DOCKER_MODS=linuxserver/mods:universal-calibre
- OAUTHLIB_RELAX_TOKEN_SCOPE=1
volumes:
- ./config:/config
- ./books:/books
ports:
- 8083:8083
restart: unless-stopped
EOF
sed -i "s/- PUID=/- PUID=$(id -u)/" docker-compose.yaml
sed -i "s/- PGID=/- PGID=$(id -g)/" docker-compose.yaml
fi
docker-compose up -d
ufw allow 8083/tcp
yellow "-----------------------------------------------"
green " Web 端口:8083"
echo
green " Docker IP = $(ip addr show docker0 | grep 'inet\b' | awk '{print $2}' | cut -d '/' -f1):8083"
echo
green " Web 网址 = http://$(ifconfig $(ifconfig | grep -oP 'enp\w+') | grep 'inet ' | awk '{print $2}'):8083"
echo
green " 第一次安装需要进入容器内部生成 metadata.db 数据库,步骤如下:"
green " cd: can't cd to app/calibre/bin 报错,需要等待容器初始化完毕!"
green " 大概等待 3 分钟左右!"
echo
green " 实时监控容器的日志"
yellow "-----------------------------------------------"
green " docker logs -f calibre-web"
yellow "-----------------------------------------------"
echo
green " 初始化数据库"
yellow "-----------------------------------------------"
green " docker exec -it calibre-web sh"
green " cd app/calibre/bin"
green " calibredb restore_database --really-do-it --with-library /books"
green " exit"
yellow "-----------------------------------------------"
echo
green " 数据库填写 /books"
echo
green " 也可以直接 wget 下载 metadata.db 数据库"
green " wget -O /root/docker/Calibre-Web/books/metadata.db https://github.com/18nome/docker/raw/main/Calibre-Web/metadata.db"
echo
green " 登陆账号:admin "
green " 登陆密码:admin123"
echo
green " Calibre Web 安装完毕!"
yellow "-----------------------------------------------"
}
calibre-web_install

数据备份

1
2
3
4
5
6
7
8
# 备份
cd /root/docker
tar czvf Calibre-Web.tar Calibre-Web
zip -r Calibre-Web.zip Calibre-Web

# 解压
tar xzvf Calibre-Web.tar
unzip Calibre-Web.zip

内网穿透

1
2
3
4
5
6
[calibre-web]
type = tcp
local_ip = 127.0.0.1
local_port = 8083
remote_port = 17011
custom_domains = nascalibreweb.rahn.top

总结

在本地部署过程中,日志有时候会卡在 [mod-init] Attempting to run Docker Modification Logic 这一步,跟网络环境有关。

一个网络环境问题,将出现一大堆谜一样的问题!!!

VPS 中没有问题!


官方网站:https://github.com/janeczku/calibre-web

项目地址:https://docs.linuxserver.io/images/docker-calibre-web