缘起
之前下载过一些电子书,都存在了云盘上,但是每次想在不同的设备上看都需要先下载下来(虽然在云盘上也 可以预览,但还是觉得下载下来用专用的阅读器体验更好)。而且电子书一多,放在云盘里管理起来就比较 混乱。最近偶然看到了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框架搭建个人网站。
过程如下:
-
找到你的域名管理账户的Access key。可以使用之前的,也可以重新获取,然后将Access key到处为系统变量
Ali_Key
和Ali_Secret
。 -
使用下面的命令生成证书:
1
acme.sh --issue --dns dns_ali -d your.domain.com
-
使用下面的命令将证书复制到你的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服务使修改生效:
|
|
安装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
。
默认的管理员账户和密码是admin
和admin123
。登录之后可以进行初始化设置。
-
首先需要下载一个空的数据库文件
metadata.db
,放在calibre-web安装目录下的library
文件夹内, 例如/media/calibre-web/library
。 -
然后在calibre-web里指定存储数据库的位置为
/books
,注意docker里的/books
实际上就对应 服务器上的/media/calibre-web/library
。 此时可能因为文件夹的读写权限问题,calibre-web依然会报错: 。 -
需要进入docker更改数据库文件所在文件夹的读写权限。具体命令如下:
1 2 3 4
docker exec -it calibre_web /bin/bash chmod 777 books cd books chmod 766 metadata.db
-
然后可以进行一些其他设置,如服务器端口,SSL证书等。
添加电子书
设置好之后就可以往书库里添加电子书了。添加完之后可以创建不同类别的书架,对书籍进行分类。 。