使用云服务器与calibre-web构建自己的在线书架(2022年版)

使用云服务器与calibre-web构建自己的在线书架(2022年版)

[toc]

0 写在前面

本文介绍,在云服务器上安装calibre-web,以达到可以通过公网在移动端或者其他电脑,预览、访问整理好元数据的书籍。

背景

常用电脑已有一百余本整理好元数据的书籍,但当我想要在公司电脑或者移动端查看这些书籍时,只能提前下载到终端,十分不便。

目标

将已经整理好的数据上传云服务器,方便在其他端阅读。访问方法为:
使用云服务器公网ip + 端口号访问资源,以calibre-web的用户登录。

配置

版本
服务器类型 腾讯云轻量应用服务器,CPU 2核 - 内存 4GB - 系统盘 50GB
操作系统版本 Ubuntu Server 20.04 LTS 64bit
docker Docker version 20.10.12, build 20.10.12-0ubuntu2~20.04.1
linuxserver/calibre-web calibre-web的镜像,版本选择最新即可
其他有用工具 winscp(相对于VSCODE上传文件,在我这里winscp工具断连机率更小)
vscode(记录操作步骤、查看日志等)
putty(远程连接服务器)
Portainer(docker的可视化管理)

说明:

  1. 其他有用工具不影响安装,个人使用习惯而已。
  2. 查阅问题时,请注意各项的版本。
  3. 不同于参考链接中使用technosoft2000/calibre-web镜像,由于作者本人已经无精力继续维护该项目,所以我选择了官方镜像linuxserver/calibre-web

风险提示

  1. 请注意所在地区出版业、信息系统管理、备案的有关法规风险。本文只适用于本人整理书籍,以方便本人使用,请勿以此参考,进行经营性活动
  2. 请注意安装calibre-web后的信息安全。暴露端口和ip访问都是带有风险的行为,个人使用云服务器时应进行有关安全配置,本文没有涉及,请按实际情况自行处理

主要参考链接

https://blog.mokeedev.com/2022/06/1113/
https://zhuanlan.zhihu.com/p/366373896

注意:不同于部分参考中使用technosoft2000/calibre-web镜像,由于作者本人已经无精力继续维护该项目,所以我选择了官方镜像linuxserver/calibre-web

1 准备工作

  1. 下载、运行docker
    网上已有详细操作,不赘述

验证:
sudo docker -v
显示docker版本即为安装成功
sudo systemctl status docker
显示状态为active即为运行成功

  1. 下载linuxserver/calibre-web镜像
    sudo docker search calibre
    查看镜像列表,选择star最多的那个就行,是官方源
    sudo docker pull linuxserver/calibre-web
    下载此官方源。注意根据网络情况,可能会有中断、耗时很长的问题。多试几次,或者妥善使用代理进行网络加速。

验证:
sudo docker images
查看已下载的镜像列表,linuxserver/calibre-web在列表中即为成功

  1. 新建calibre-web的文件夹
    在服务器合适的位置创建两个文件夹datalibrary
    mkdir -p data
    mkdir -p library
    注意对文件夹进行授权,可以使用chmod -R 777 文件的方式,也可以管理用户组进行授权。
    注意这两个文件夹的绝对路径,后续步骤要使用。我这里是:

/home/ubuntu/online_books/data
/home/ubuntu/online_books/library

  1. 上传metadata.db文件
    打开本地calibre软件,查找书库位置。可以选中一本书,右键,打开所在目录。
    一本书源文件所在目录的上级是作者目录,作者目录的上级是Calibre Library,这个文件夹下有文件metadata.db。很明显,这是一个SQLite数据库文件。把metadata.db复制到上一步的,服务器的library目录下,
    注意.db文件的授权

2 过程

  1. 运行calibre-web容器
    执行指令:
    sudo docker run -d --name=book-calibre-web -e TZ=Asia/Shanghai -e DOCKER_MODS=linuxserver/calibre-web:calibre -p 15010:8083 -v /home/ubuntu/online_books/data:/config -v /home/ubuntu/online_books/library:/books --restart unless-stopped linuxserver/calibre-web

说明:

  • sudo docker run -d 后台运行容器指令。也就是说退出shell(例如我用putty正常退出,shell会发出hup信号,进程结束),进程继续进行
  • --name=book-calibre-web 容器重命名为book-calibre-web。可根据需要修改
  • -e TZ=Asia/Shanghai 指定时区。如果不指定时区会引发calibre-web某个插件的错误,导致无法启动容器
  • -e DOCKER_MODS=linuxserver/calibre-web:calibre 固定写法
  • -p 15099:8083 指定访问端口。这里设置访问路径为云服务器公网ip + 15099端口。8083是不需要修改的,如果想用别的端口,例如9020端口访问,写作-p 9020:8083
  • -v /home/ubuntu/online_books/data:/config calibre-web的配置路径。替换在1 准备工作 3. 新建calibre-web的文件夹的绝对路径
  • -v /home/ubuntu/online_books/library:/books calibre-web的藏书路径。替换在1 准备工作 3. 新建calibre-web的文件夹的绝对路径
  • --restart unless-stopped 设置容器退出时重启。可以根据需要指定别的参数,参考 https://blog.csdn.net/REX1129/article/details/110115211
  • linuxserver/calibre-web 固定写法

耐心等待,首次启动时间很长。当容器的日志输出以下时,启动完成:

……
[services.d] starting services
[iservices.d] done.

使用Portainer工具可以查看容器日志。

  1. 访问站点,初始化配置
    访问站点为

http:{云服务器公网ip}:端口号

端口号为上步设置的端口,此例为15099。如果需要账户密码,默认账户admin 默认密码admin123。

需要配置:

  • 进入配置,设置Calibre数据库路径为/books,在功能配置中,启用上传
  • 修改admin用户登录密码,增加各项权限
  1. 初始化上传书籍文件

    1. 步骤一 停止calibre-web容器
      首先找到calibre-web容器id
      sudo docker ps -a
      然后停止
      sudo docker stop {docker_id}
    2. 步骤二 上传书籍文件
      按照1 准备工作 4. 上传metadata.db文件的方式,找到本地书库。将所有书籍文件上传到服务器calibre-web的藏书路径。其实calibre-web和普通单机calibre的结构相同,本地文件能读取的,同样的存放结构下,calibre-web也能读取。
      上传完后,服务器library目录下,类似这样

    -- library
    |-- 各个作者名称的文件夹,该文件夹下保存该作者的各本书。各本书的文件夹里面是书的源文件、封面图片、.odf格式的元数据文件
    |-- metadata.db

    注意上传完书籍文件之后,同样进行授权。

    1. 启动calibre-web容器

验证:
登录calibre-web后,能看到所有书籍,能浏览或者下载格式合适的书籍,且能对书籍编辑元数据,保存成功。

3 常见问题

  1. 卡在applying linuxserver/calibre-web:calibre files to container
    如果你使用Portainer查看容器日志的话,会发现第一次运行时卡在以上提示很久。
    参考 https://github.com/linuxserver/docker-calibre-web/issues/105,简单来说就是等着吧。我在这一步大约用时2小时。

  2. 时区问题
    某些资料在运行calibre-web容器,没有写明时区,或者将时区写作-e TZ=Asian/Shanghai/-e TZ=Asia/Beijing,在我这里都是不行的,-e TZ=Asia/Shanghai是成功的

  3. 无法保存书籍元数据
    保存时提示如下:

attempt to write a readonly database
一般都是权限的问题。如果datalibrary下的所有文件都是777权限,可以试试重启容器

  1. 无法预览pdf文件
    谷歌浏览器无法浏览pdf文件,试试把嗅探下载资源的软件都排除嗅探。例如,我这里IDM会自动接管pdf文件的下载,把这种接管功能在对应的下载软件里面关闭即可。

  2. 无法在线格式转换
    我也没搞明白。但我也不怎么用这个功能,如果有朋友指导一下,不胜感激。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容