预览

与 本地桌面版 开启的 Web 相同.

必要条件

Docker Calibre 占用资源大小:

硬件 >= 2GB

内存 >= 200MB

上传个人 Calibre Library

# 连接到服务器 bash
# 创建存放目录
mkdir -p ~/Calibre
mkdir -p ~/Calibre/addbooks
# 将本地个人的 Calibre 文件夹上传上传到 ~/Calibre/library 目录
# 一定是名称为 library 的目录, 否则会错误

# 提示
# 建议将个人的 Calibre 文件夹压缩成 .zip 上传到服务器
# 上传命令: scp -P 22 本地.zip user@xxx.xxx.xxx.xx:~/Calibre/library.zip
# 然后解压: unzip library.zip
# 解压完, 顶级目录名称一定要为 library

配置 docker 搭建

# 拉去镜像
docker run -d --name=calibre -v ~/Calibre:/data:Z -p 8080:8080 bcleonard/calibre
# 现在你可以在浏览器使用 http://yourip:8080 访问了
# 现在处于公开访问, 任何人都可以访问, 后面是进行用户认证, 不要公开访问
# 进入 容器 操作
docker exec -it calibre sh

# 创建 Calibre 用户, 按照提示输入
/opt/calibre/calibre-server --userdb /data/users.sqlite --manage-users

# 修改原本的启动方式, 并开启用户认证, 注意: 一定要在 容器内的 sh 更新 startup.sh 内容, 否则会导致启动容器失败.
sed -i '$d' /scripts/startup.sh && echo '/opt/calibre/calibre-server --userdb /data/users.sqlite --enable-auth --listen-on="0.0.0.0" /data/library' >> /scripts/startup.sh

# 退出 容器exec
exit

# 回到了 服务器 bash 后
docker restart calibre

# 现在你可以在浏览器使用 http://yourip:8080 访问了
# 输入用户和密码

# 提示
# 只要以后  用户名  对上了, 就会 自动同步笔记.
# 后面备份只需要备份 library 目录即可, 用户sqlite 不必须备份, 后面迁移后同步笔记只要 重新创建对应 用户名 就OK了

下面方法已废弃, Web 服务器本身就有这功能.

有关 添加书籍 删除书籍 等功能, 详见: https://hub.docker.com/r/bcleonard/calibre

  1. 将书籍添加到图书馆

首先将你的书籍添加到 ~/addbooks 目录,每个目录添加一本(所有格式)。然后运行以下命令:

docker exec calibre /scripts/add-books.sh

/home/books/addbooks 中的所有书籍都将添加到图书馆,从 /home/books/addbooks 目录中删除,并通知 calibre。

  1. 要从图书馆中删除书籍:
docker exec calibre /scripts/remove-books.sh -i <book_id>

已知问题: 无法远程访问端口

无法进行 公网远程访问 只可以 本地IP 访问, 可以使用 VPN 访问时, 看看下面的方法, 亲测有用.

理论上是可以远程访问的.

原因是系统没有开启 内核路由转发功能, 参考: Linux服务器docker部署的容器,端口映射后公网无法访问-阿里云帮助中心

# 检查当前状态,运行以下命令。
cat /proc/sys/net/ipv4/ip_forward
# 如果返回值为1,则表示已启用。如果为0,请继续执行下一步。

# 临时启用该功能(重启后失效),请运行。
echo 1 > /proc/sys/net/ipv4/ip_forward

# 然后重启 calibre
docker restart calibre

总结

这种方法不用占用太多资源也能体验到 本地桌面版的web 功能.

而且 web 最大的好处时随时随地可阅读, 并且只要登陆的 用户名 是相同的, 就自动同步笔记.