收藏的电子书越来越多了,但是要在手机上看还需要一个一个传到手机上,不是很方便。我就想着能不能搭一个自己的书库,可以在线管理,这样不用下载一本书就要特意传到手机里了。下面是搭建过程:
1:安装docker
通过docker安装是最方便的,可以直接通过宝塔面板安装。软件商店里找到docker管理器就可以安装了。
当然也可以通过命令行安装,输入如下命令即可:
yum install -y docker-latest
推荐用宝塔的方式安装,不用想太多,点一下几分钟就好了。不过要注意,内存要大于768才能安装,手动命令安装则不需要,为此特意升级服务器内存到2G,反正为了运行流畅迟早也要升级配置。
通过终端输入如下命令,查看docker是否安装成功。
docker -v
2:拉取镜像
打开终端,可以直接通过宝塔面板打开,也可以通过putty等软件登录。
(1)首先查看能用的镜像文件,输入如下命令:
docker search Calibre
可以看到有很多版本,这里推荐两个版本,technosoft2000/calibre-web与talebook/calibre-webserver这两个版本安装方法稍有不同,这里先以talebook/calibre-webserver为例来介绍安装过程。功能差不多,就是界面稍有不同。
(2)新建用于存放数据的文件夹,同样可以通过宝塔面板来操作。比如
data/calibre
(3)拉取镜像
docker pull talebook/calibre-webserver
文件差不多有1个G。
(4)运行容器
docker run -d --name calibre --restart=always -p 8031:80 -v /data/calibre:/data -e NGINX_CLIENT_MAX_BODY_SIZE=50M talebook/calibre-webserver
NGINX_CLIENT_MAX_BODY_SIZE=50M意思是限制上传文件大小50m,可以根据需要设置大一点。如果忘记设置上传大小限制了,可以在搭建好之后修改容器里的nginx配置文件(calibre-webserver.conf)的client_max_body_size值,具体路径如下:
在宝塔面板的docker管理器可以看到刚刚启动的容器。
8031为本机的端口号,通过ip:8031来访问搭建好的书库。如果不能访问,可能需要设置安全组,允许端口访问。
3:书库设置
通过ip:端口的方式来访问,可以直接看到设置界面。
由于可能存在版权问题,因此可以开启私人图书馆模式,这样彻底就是一个私人图书馆了。当然可以跟朋友们分享密码达到有限共享。后面设置里都可以改。更多设置可以根据自己的需要调整。
4:绑定域名
ip:端口号,访问书库还是稍显不便,也不便于记忆,我还是更希望通过域名来访问。
(1)解析域名到服务ip
(2)新建一个网站
同时申请ssl证书,可以直接用宝塔面板一键申请,或者其它方式。在网站设置里面加入配置参数:
# 反向代理到 8031 端口 location / { proxy_pass http://ip:8031; } location ~ .*\.(js|css|jpg|png)$ { proxy_pass http://ip:8031; }
ip:8031改为自己的ip与端口号即可,这样设置后就可以通过域名来访问了。
这样设置之后可以访问,但是不显示封面,下载书籍也有问题,需要换一种方式反向代理,即通过宝塔面板的反向代理来实现。
填写两个地方:一个是目标URL为本机IP+端口(一般是127.0.0.1+ 端口),一个是发送域名:直接用$host或者填写想要用作书库的域名。
5:手机阅读
支持OPDS直接连接这个书库的软件不是很多。国内软件一个都没有,国外的软件基本上都带这个功能。
(1)静读天下
体验是最好的,推荐用这个。虽然有广告,但是好像是香港那边的,用的话是不显示广告的。软件商店没有这个软件。但是通过talebook/calibre-webserver搭建的书库,用OPDS无法下载书籍。
可以去官方网站下载:http://www.moondownload.com/chinese.html 下载速度会有点慢。
访问书库通过:http://域名/opds,设置了用户名密码就用这个登录,如果是公开的图书馆可以直接连上。软件自带的几个图书馆是访问不了的。
(2)epub read
可以安装上,不过提示有广告插件。
(3)AIreader
可以装上,没广告,但是界面太简陋了。不是这个时代的软件。
6:存在的问题
(1)不能批量上传,只能一本一本的上传。
可以通过本地calibre软件添加书籍之后,将书库整体上传可解决批量上传与文件大小问题。上传之后重启容器就可以显示新添加的书籍。
(2)今天再次查看,发现书籍的封面不显示了。通过ip+端口访问则可以显示封面。不知道是不是我这边网速的问题。还有速度有点慢。
2021.6.24更新:特意给服务器加了一块硬盘容量20G。按一本书平均5mb左右大小的话,可存下大概4000本书,要达到1万本的规模的话,估计得把空间加大到50g。先把这20g填满再考虑扩容的事吧,反正可以在线扩容。
(3)打开提示为英文
需要修改默认语言为中文
修改容器下的public与dist下index.html文件的lang值为zh-CN,具体路径如下,其它相关信息也可以在里面修改。
(4)opds无法使用
提示信息:
org.apache.http.client.clientprotocolexception
7.另一个镜像
这里介绍technosoft2000/calibre-web的安装
依次输入下面的命令:
mkdir /data/calibre /data/calibre/app /data/calibre/books /data/calibre/kindlegen /data/calibre/config
docker pull technosoft2000/calibre-web
docker create --name=calibre-web --restart=always -v /data/calibre/books:/books -v /data/calibre/app:/calibre-web/app -v /data/calibre/kindlegen:/calibre-web/kindlegen -v /data/calibre/config:/calibre-web/config -e USE_CONFIG_DIR=true -e SET_CONTAINER_TIMEZONE=true -e CONTAINER_TIMEZONE=Asia/Shanghai -e PGID=0 -e PUID=0 -p 8083:8083 technosoft2000/calibre-web
docker start calibre-web
然后就是http://IP:8083访问进行相关设置,登录用户名admin,密码admin123,记得及时修改。books文件夹的权限改为777。
默认的metadata.db文件可能会有问题,又或者缺失,可以下载下面这个,下载完之后放入books目录里:
https://pan.xuzai.com/s/Kr9H5nCDTZRbNBP