家庭NAS:从 calibre-webserver 迁移到 Calibre-web

2021-02-06

前言

使用 calibre-webserver 一段时间后,发现它更新不太活跃,而另一个项目 Calibre-web 更新活跃,于是考虑迁移到后者。因为两个项目都是对 Calibre 进行套壳,底层数据库是一样的,理论上是可行的。在本文中通过实践探索,成功实现迁移。

镜像选择

社区里有很多 Calibre-web 镜像:

linuxserver/calibre-web

  • 10M+ Downloads 348 Stars
  • Updated 3 days ago

technosoft2000/calibre-web

  • 10M+ Downloads 144 Stars
  • Updated 3 months ago

这里选择 calibre-web,依据是 star 更多、更新更频繁。

calibre-web

calibre-web 项目首页

这个项目的突出特色:

  • OPDS Feed,阅读器链接时比较友好
  • Create a custom book collection (shelves)
  • Upload new books in many formats, including audio formats (.mp3, .m4a, .m4b)

迁移方案

这里想到一个更加稳妥的方案:

  • 先为 calibre-web 建立全新目录,让其进行初始化
  • 之后比较 calibre-web 与 calibre-webserver 两个目录的特点
  • 找到 Calibre 数据库,并将老数据库复制到新位置
  • 之所以选择复制,能够保证老数据库还是好用的
  • 待 calibre-web 部署完成后,可将老工程停掉,但保留数据一段时间,防止新数据库出问题
  • 等 calibre-web 确认正常之后,再将老数据库删除

迁移方案实践

之后 ssh 登陆到 NAS 上,创建对应目录:

// 主目录
/srv/dev-disk-by-uuid-a451ce1f-eaad-4831-844f-00d2d611536c/hd1_bk/calibre-web-data

// config
/srv/dev-disk-by-uuid-a451ce1f-eaad-4831-844f-00d2d611536c/hd1_bk/calibre-web-data/config

// books
/srv/dev-disk-by-uuid-a451ce1f-eaad-4831-844f-00d2d611536c/hd1_bk/calibre-web-data/books

执行 Docker 命令:

docker run -d \
  --name=calibre-web \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=Asia/Shanghai \
  -p 8083:8083 \
  -v /srv/dev-disk-by-uuid-a451ce1f-eaad-4831-844f-00d2d611536c/hd1_bk/calibre-web-data/config:/config \
  -v /srv/dev-disk-by-uuid-a451ce1f-eaad-4831-844f-00d2d611536c/hd1_bk/calibre-web-data/books:/books \
  --restart unless-stopped \
  ghcr.io/linuxserver/calibre-web

这个镜像托管在 ghcr.io 上,拉取速度非常慢。

站点配置

书库配置,设置地址为 /books。

此时会报错【数据库路径无效,请输入正确的路径】,原因是我们挂载的 books 目录是一个空目录,找不到 metadata.db。

解决方法是把 calibre-webserver 的书库复制过去。

calibre-webserver 的书库位于 library 下,复制到 calibre-web 的 books 目录下。

之后再配置,说数据库不可写入:

调整一下 meatadata 权限即可。

下一步登录,默认用户为 admin 密码为 admin123。

登录进去之后,能看到电子书加载正常。

小结

体验了一番 calibre-web 后,我发现它的功能确实要比 calibre-webserver,并且维护更加积极,这也表明未来会有更加丰富的功能被引入,不得不说这波折腾非常值了。

网络资源