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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容