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

2022-10-18 11:25:55 浏览数 (2)

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

写在前面

本文介绍,在云服务器上安装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

准备工作

一、docker

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

验证:

sudo docker -v

显示docker版本即为安装成功

sudo systemctl status docker

显示状态为active即为运行成功

二、linuxserver/calibre-web镜像

下载linuxserver/calibre-web镜像

sudo docker search calibre

查看镜像列表,选择star最多的那个就行,是官方源

sudo docker pull linuxserver/calibre-web

下载此官方源。注意根据网络情况,可能会有中断、耗时很长的问题。多试几次,或者妥善使用代理进行网络加速。

验证:

sudo docker images

查看已下载的镜像列表,linuxserver/calibre-web在列表中即为成功

三、新建calibre-web的文件夹

在服务器合适的位置创建两个文件夹datalibrary

mkdir -p data

mkdir -p library

注意对文件夹进行授权,可以使用chmod -R 777 文件的方式,也可以管理用户组进行授权。

注意这两个文件夹的绝对路径,后续步骤要使用。我这里是:/home/ubuntu/online_books/data

/home/ubuntu/online_books/library

四、上传metadata.db文件

打开本地calibre软件,查找书库位置。可以选中一本书,右键,打开所在目录。

一本书源文件所在目录的上级是作者目录,作者目录的上级是Calibre Library,这个文件夹下有文件metadata.db。很明显,这是一个SQLite数据库文件。把metadata.db复制到上一步的,服务器的library目录下,

注意.db文件的授权

正式安装过程

一、运行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工具可以查看容器日志。

二、访问站点,初始化配置

访问站点为http:{云服务器公网ip}:端口号

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

需要配置:

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

三、初始化上传书籍文件

步骤一 停止calibre-web容器

首先找到calibre-web容器id

sudo docker ps -a

然后停止

sudo docker stop {docker_id}

步骤二 上传书籍文件

按照1 准备工作 4. 上传metadata.db文件的方式,找到本地书库。将所有书籍文件上传到服务器calibre-web的藏书路径。其实calibre-web和普通单机calibre的结构相同,本地文件能读取的,同样的存放结构下,calibre-web也能读取。

上传完后,服务器library目录下,类似这样

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

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

四、重新启动calibre-web容器

验证:

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

常见问题

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

0 人点赞