Featured image of post 使用calibre-web和docker自建个人数字图书馆

使用calibre-web和docker自建个人数字图书馆

使用calibre-web和docker在自己的电脑或服务器上搭建个人数字图书馆

缘起

之前下载过一些电子书,都存在了云盘上,但是每次想在不同的设备上看都需要先下载下来(虽然在云盘上也 可以预览,但还是觉得下载下来用专用的阅读器体验更好)。而且电子书一多,放在云盘里管理起来就比较 混乱。最近偶然看到了calibre-web这个工具,可以用它自己搭建一个电子书库,感觉效果挺不错的。

前提

  • docker和docker compose
  • 域名(二级域名即可)
  • acme.sh (生成SSL证书)
  • nginx (反向代理)

准备工作

准备域名

在自己购买域名的网站上或者自己域名的管理网站上创建一个二级域名并配置域名解析,具体过程可参见“个人网站的建立过程(一):购买个人域名并配置动态域名解析”

例如我有一个主域名jinli.cyou,于是我为私有邮箱服务器创建了一个"book.jinli.cyou"的二级域名。然后在阿里云的域名管理平台上进行了域名和IP地址的绑定。

使用acme.sh生成SSL证书

网上很多教程都使用Let’s Encrypt来生成SSL证书,但由于我之前在搭建这个网站时已经下载了acme.sh工具,因此这里我使用了acme.sh来为"book.jinli.cyou"生成证书。具体过程可参见个人网站的建立过程(二):使用Hugo框架搭建个人网站

过程如下:

  1. 找到你的域名管理账户的Access key。可以使用之前的,也可以重新获取,然后将Access key到处为系统变量Ali_KeyAli_Secret

  2. 使用下面的命令生成证书:

    1
    
    acme.sh --issue --dns dns_ali -d your.domain.com
    
  3. 使用下面的命令将证书复制到你的mailcow目录下,例如我在mailcow安装目录下新建了一个文件夹cert来存放证书文件:

    1
    2
    3
    
    acme.sh --install-cert -d your.domain.com \
            --key-file /media/calibre/cert/key.pem \
            --fullchain-file /media/calibre/cert/cert.pem 
    

nginx反向代理配置

因为我之前在建立本网站时就安装了nginx,所以这里我使用了nginx作为反向代理工具。

在nginx的配置目录下创建一个新的配置文件mailcow.conf作为云网盘的反向代理配置文件,文件内写入:

server{
    listen 80;
    server_name book.jinli.cyou;
    return 301 https://book.jinli.cyou$request_uri;
}

server{
    listen 443 ssl;
    ssl_certificate /media/lijin/book/certs/cert.pem;
    ssl_certificate_key /media/lijin/book/certs/key.pem;
    server_name book.jinli.cyou;
    location / {
        proxy_redirect off;
        proxy_pass http://book.jinli.cyou;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        client_max_body_size 1000m;
    }
}

这里我使用8080端口作为mailcow的服务端口。SSL证书存放在上一步指定的位置。

配置完成后重启nginx服务使修改生效:

1
sudo service nginx restart

安装calibre-web

这里使用docker-compose来安装calibre-web,具体操作参照https://hub.docker.com/r/linuxserver/calibre-web

网站初始化和设置

安装好calibre-web之后可以通过浏览器访问网站,可以在地址栏输入http://0.0.0.0:8080,如果 nginx已经设置好,也可以通过网址来访问:http://book.jinli.cyou

默认的管理员账户和密码是adminadmin123。登录之后可以进行初始化设置。

  1. 首先需要下载一个空的数据库文件metadata.db,放在calibre-web安装目录下的library文件夹内, 例如/media/calibre-web/library

  2. 然后在calibre-web里指定存储数据库的位置为/books,注意docker里的/books实际上就对应 服务器上的/media/calibre-web/library。 此时可能因为文件夹的读写权限问题,calibre-web依然会报错: calibre-web

  3. 需要进入docker更改数据库文件所在文件夹的读写权限。具体命令如下:

    1
    2
    3
    4
    
    docker exec -it calibre_web /bin/bash
    chmod 777 books
    cd books
    chmod 766 metadata.db
    
  4. 然后可以进行一些其他设置,如服务器端口,SSL证书等。

添加电子书

设置好之后就可以往书库里添加电子书了。添加完之后可以创建不同类别的书架,对书籍进行分类。 calibre-web-books

comments powered by Disqus