阿里云服务器(ubuntu)配置calibre Web图书管理服务

 
Category: Linux-Shell

写在前面

这次来配置一个基于calibre电子书管理软件web镜像的电子图书馆, 因为自己本地的电子书太多了, 各个文件夹都有, 显得比较乱糟糟, 有了calibre-web, 这个问题就可以解决了, 主要参考了1.

预备知识

配置Linux server, 现在已经是轻车熟路了, 但是这次配置的calibre需要一个新的内容, docker. 之前虽然接触过一些, 但是还是不够熟悉, 下面的一步步配置也算是对docker基本命令做一个总结了.

docker 安装参考2.

先pull一下镜像, 稍后会用到.

docker pull linuxserver/calibre-web

服务器配置

端口配置

管理界面开启8083/TCP.

参考之前我设置的快捷命令, 直接一步到位:

addtcp 8083
reufw

映射目录

# 存放书
mkdir -p /data/calibre/books
# 配置
mkdir -p /data/calibre/config

上传calibre数据库文件

将本地主机上的calibre数据库文件/Users/xxx/Calibre\ 书库/metadata.db, 上传到Ubuntu服务器, 这里用到了scp命令:

scp ~/Calibre\ 书库/metadata.db root@<公网IP>:/data/caliber/books/

然后在Ubuntu的/data/caliber/books目录下就有了一个数据库文件

数据库可以为空, 即不记录任何书, 后期直接上传即可.

改一下权限:(不然传不上去)

chmod 777 /data/calibre/*

这样的话之后你上传的所有的书都会存放在这个目录的books/子目录下.

docker配置

这里还是比较简单的, 先创建镜像[^2]:

docker run -d \
  --name=calibre-web \
  -e PUID=1000 \
  -e PGID=1000 \
  -e TZ=Asia/Shanghai \
  -p 8083:8083 \
  -v /data/calibre/books:/books \
  -v /data/calibre/config:/config \
  --restart unless-stopped \
  linuxserver/calibre-web

其中:

  1. 第一行是用docker的run命令(通过-d选项开启后台守护态运行)运行容器.
  2. 指定别名.
  3. 为容器分配的用户ID
  4. 为容器分配的组ID
  5. 时区设置
  6. 端口转发规则: 外部(主机):内部(容器), 之后访问http://公网IP:8083时候就可以访问到镜像.
  7. 配置路径映射: books存放数据库和书, 外部(服务器主机):内部(容器)格式.
  8. 配置路径映射: config存放配置信息.
  9. 重启规则.
  10. 所用镜像的名称.

不过这样不好改, 还是用docker-compose的yaml配置文件好一些.

查看一下状态:

$ docker ps
CONTAINER ID   IMAGE                       COMMAND                  CREATED          STATUS          PORTS                                       NAMES
c9bcaf90acbb   linuxserver/calibre-web     "/init"                  16 seconds ago   Up 15 seconds   0.0.0.0:8083->8083/tcp, :::8083->8083/tcp   calibre-web

这些搞定了之后, 不要着急打开浏览器, 先输入:

docker logs calibre-web

查看一下配置的情况, 如果出现了下面的字样才算是成功配置了:(主要是最后一行)

[custom-init] No custom services found, skipping...
[migrations] started
[migrations] no migrations found

-------------------------------------
          _         ()
         | |  ___   _    __
         | | / __| | |  /  \
         | | \__ \ | | | () |
         |_| |___/ |_|  \__/


Brought to you by linuxserver.io
-------------------------------------

To support LSIO projects visit:
https://www.linuxserver.io/donate/
-------------------------------------
GID/UID
-------------------------------------

User uid:    1000
User gid:    1000
-------------------------------------

[custom-init] No custom files found, skipping...
[ls.io-init] done.

web端配置

输入<公网IP>:8083进入webUI, 其中

用户名:admin
密 码:admin123

改一下密码和UI语言(中文)(admin’s profile), 以及上传设置(管理权限->编辑基本配置->基本配置->启动上传->保存).

一些可能的问题与解决

权限问题

chmod 777 /data/calibre/books/*
chmod 777 /data/calibre/config/*

然后

docker restart calibre-web

忘记密码怎么办

邮箱并不会给你发密码, 考虑issue的办法:3.

docker exec -it calibre-web bash
cd /app/calibre-web
python3 cps.py -s admin:admin123
# Password for user 'admin' changed

小坑

文章1里面说的内容我配置过, 但是成功率很低..

至于原因, 一开始我以为是IPv4端口转发没开, 但是事实是阿里云是默认开启的, 并不需要去自己设置. 而且docker ps也显示我启动了这个容器.. 后来发现光看docker ps并不科学, 因为真正的创建情况不会显示在docker ps里面, 这只是一个容器的状态, 至于端口, 容器初始化等情况, 并没有任何提示, 于是才需要用docker logs calibre-web看具体的情况.

后来我发现, 应该是镜像里面用到了GitHub 的一些仓库, 然而这些仓库访问特别慢, 需要等很久才能创建成功, 不建议使用, 而且其中提到的[technosoft2000/calibre-web - Docker Image Docker Hub](https://hub.docker.com/r/technosoft2000/calibre-web)镜像已经一年不更新了, 这里还是推荐用最新的Linuxserver下的镜像[^2], 虽然少了电子书转换等功能, 但是不影响基本使用, 可以在之后自行配置服务.

ref

[^2]:[linuxserver/calibre-web - Docker Image Docker Hub](https://hub.docker.com/r/linuxserver/calibre-web);