导语
上一期,跟大家介绍了本地音乐管理,今天带来的是本地图书管理——打造个人在线书城。
其实与其说是教程,这篇文章更像是作者打造方案的一个记录。虽然可能硬件环境和作者不同,但配置方面还是有很大的参考价值。
本文尽可能通俗,但部分内容仍有一丢丢硬核。 如果想完全参照本教程,需要拥有基础的linux和docker基础,以及一台云服务器。
本系列文章主要包含一下内容:
- 实现效果一览
- 整体架构图示
- 安装配置calibre管理图书
- 安装配置calibre-web打造在线书城(可选)
- 实现一键传书到kindle(阅读器或客户端都可)(优雅)
- 安卓端静读天下配置
预警: 本文大概5000字,且图片较多。
实现效果
- 在线封面墙&在线搜索
- 在线下载、一键传送到kindle
- 用户管理及登陆控制
- 手机端一键下载并加入书库
整体架构图示
一点说明
- 在构建在线书城的过程中,NAS和云服务器并不是必须的。NAS因为长期开机可以确保web服务的正常访问。云服务器为了方便随时随地获取想看的图书。事实上,下载到设备上的图书不需要连接到书库也可以阅读。没有云服务器也可以在局域网内快速检索和下载图书。
- 作者将本地书库和calibre客户端分布在两个设备上。目的在于,calibre-web服务可以更加容易的访问到本地书库和数据库以便于提供服务。而相较于通过web端管理书籍,显然客户端功能更强大、更易用。
安装配置calibre管理图书
下载calibre
官方地址:https://calibre-ebook.com/download
根据你的系统下载所对应的版本。
安装配置
安装过程除了安装目录之外,一路下一步就好。安装好后会弹出一个窗口让你填入书库地址。这个地址会建一个图书的数据库以及存放你导入的图书文件。
- 如果你和我一样通过NAS管理,建议把数据库地址放到NAS所处的网络地址上。
- 如果你有一个磁盘容量和带宽比较可观的云服务器,也可以直接把书库放到云服务器上。
- 甚至该服务还支持把书库挂载到google drive云盘上,不过考虑到延迟和通信开销,并不是很建议这样做。
- 以上都不是,就放在本机上就好了。机械硬盘就可以,因为基本只是存放文件。
注: 如果后续要打造在线书城的话,启动calibre-web的主机必须和书库所在的主机是同一台。
导入图书
点击左上角添加图书,根据你的需要选择三种使用情形去添加。
注: 如果使用第二个文件夹和子文件夹添加的时候,会弹出一个英文提示。大意为”假设你同一个文件夹的图书都是同一本书的不同版本吗“。根据你的实际情况选择YES或NO。一般这个回答都是NO。
刮削图书信息
在网络上下载的图书,有的图书信息是不全的。可能缺少封面或者作者、出版社等其他信息。为了方便归纳、搜索,也为了在WEB界面可以展示漂亮的封面墙,我们需要刮削图书信息。
点击左上角第二个图标“编辑元数据”。
如果需要手动修改某一本书,就点击第一个。不过推荐使用第三个,calibre会根据书籍的信息自动在网络数据库中匹配元数据并下载。
不过有一说一,自从豆瓣关闭数据搜索接口之后,只有其他国外接口可用,刮削速度一言难尽。
阅读
待刮削完成后,可以通过左侧的作者语言等分类对书籍进行归纳,搜索也更加精准。
双击图书即可打开了,如果使用其他阅读器,也可打开路径使用你喜欢的阅读器打开。
开启内容服务器(可选)
点击右上角图标“连接共享”,“启用内容服务”即可启用。
启用后,在浏览器输入软件提示的“IP:8080”即可实现web访问。
该内容服务器可以实现局域网内在线阅读和下载,但界面过于简单,功能也太过单一,无法实现文章开头所描述的功能。这不是我们想要的。
安装calibre-web打造在线书城
注: 下面所述的方法适用于linux或者群辉系统,如果需要在windows上实现请参照下文中出现的项目(实在不行也可参考本文使用docker安装)。
作者使用docker安装,docker作为个人服务的运维工具不是一般好用。
安装Docker和docker-compose
安装docker
参考www.runoob.com/docker/ubuntu-docker-install.html
打开网址后侧边栏有不同系统安装docker的具体方法
安装docker-compose(可选)
docke-compose是一个适用于docker的工具。可以通过配置文件启动/关停容器。比起命令行启动更方便。
通过docker启动calibre-web
安装好docker后,其他开发者已经构建好的calibre-web镜像我们就可以直接拿来用了。
最开始尝试了如下的两个镜像:
但启动容器的时候,需要下载一些资源。由于网络连接性的原因,下了几次没能成功。于是作者使用的下面这个镜像。
该镜像最近一次更新是在2022.2.15。经测试可用,功能也比较丰富。
下面提供启动命令和docker-compose文件
1 | docker cli |
1 | # docker-compose.yaml |
注: calibre的内容服务端口默认是8080,因为运营商网络是不开放8080端口的,可以将容器的8080端口映射到宿主机其他可用端口,按需修改。(不重要,如果配置了calibre-web,这个端口用不太到)
另外需要注意的是,“/书库 :/library” 冒号前的目录必须指向第一步安装calibre时填入的书库地址!!(重要)
命令行和docker-compose的使用就不赘述了。比较简单,参见菜鸟教程 https://www.runoob.com/docker/docker-tutorial.html。相信使用NAS或者云服务器的,应该上手很简单。
一点说明
由于豆瓣关闭了获取数据的接口,该镜像可配合另一个第三方获取豆瓣数据的镜像fugary/simple-boot-douban-api
进行刮削。但在我测试后似乎不太可用。该镜像能够正确的获取并返回数据,但在calibre-web页面中依然提示失败。
不过还是把docker-compose.yaml
的内容放上来,需要的可以自行测试。
1 |
|
calibre-web配置
启动后,静待几分钟。打开浏览器在浏览器中输入http://ip:8083就可以打开了。地址中的ip是局域网中安装calibre-web的主机的ip地址。
输入默认用户名密码。
用户名:admin
密 码:admin123
登陆后会提示输入书库地址,请填入/library
。
进入后第一步请点击右上角用户。修改默认管理员用户的用户名和密码,并给予下载和在线阅读的权限。如果你想开放给自己的朋友使用也可以新建用户并把账密告知对方。当然在线书城也支持匿名访问和开放注册,不过个人使用的话并不建议开启。
至此,在线书城的搭建工作就基本完成了。
不过,目前该书城只能在局域网内访问。如果需要随时随地在线阅读,还需要内网穿透到公网上。
公网访问
如果家庭宽带有公网IP,可以通过设置路由器端口映射或者开启DMZ主机实现公网访问。
但如果没有公网,就需要进行内网穿透。可以使用现成的内网穿透服务,也可以购买云服务器通过frp、rathole等工具自行搭建。
因为这部分不是我们的重点,就不展开了。
实现一键传书到kindle
亚马逊账户设置
注: 此处的kindle不只限于墨水瓶阅读器。各平台的客户端也同样支持。
传书所使用的是亚马逊的邮件内容服务。每一个登陆账户的kindle客户端,都会分配一个特定的邮箱,只要把图书文件作为附件通过邮件发送到特定的邮箱,该图书就会通过网络自动同步到对应的客户端中。
首先打开亚马逊平台www.amazon.cn/并登录账户。
点击”我的账户“ - ”管理我的内容和设备”。
点击“首选项” - “个人文档设置”
如果显示不可用的话可能需要开启上面的两个“自动同步”和“自动更新”服务。
开启后就可以在下面看到你的设备和设置了。
在此可以看到你所有的kindle设备,以及后面设备所对应接受邮件的邮箱。邮箱地址不好记的话也是可以点击编辑修改的。
如果设备过多,各个设备无法区分,该地址也可以在kindle的客户端的设置中查看。
我们需要做的是编辑网页中“已认可的发件人电子邮箱列表”。这相当于一个白名单,为防止骚扰,kindle只接受列表内的的邮箱发送的邮件。把你在用的邮箱地址输入进去就可以了。
账户设置测试
现在我们需要测试一下该服务是否可用。
打开你的邮箱,写信,收件人填写设备对应的接受邮箱的地址。
然后添加附件,附件添加一本kindle支持格式的书。主题随便填,正文可置空。点击发送。
发送后会收到亚马逊发送的反馈邮件。如果提示“您的个人文件在您的Kindle图书馆中已存档”,则说明发送成功了。这时候打开kindle,图书已经在图书馆里躺着了。
但如果收到的反馈文件是“由非认可的发件人发送的个人文件”,则可能前面的设置有问题,需要返回检查一下。
Calibre-web邮件客户端配置
确定亚马逊邮件内容服务可用后,在打开calibre-web进行配置。即便不使用calibre-web,而只是使用calibre客户端这个服务也是可用的。配置内容大同小异。
- calibre-web打开右上角管理权限。
- calibre则是点击右上角 “连接共享” - “设置基于电子邮件的书籍共享”
以下内容以calibre-web为例,客户端设置大同小异。
- 点击编辑邮箱服务器设置
- 填写对应的内容
上图只是举例。具体填写内容请参考你的邮箱设置。下图以126邮箱为例。
在网页登录你的126邮箱
进入设置 - SMTP设置
开启SMTP服务
新增设备授权码。
注:为保护账户安全,在第三方客户端登陆邮箱时,使用授权码登陆,而不是邮箱密码。
查看服务器地址和加密方式
常见的邮箱SMTP服务器端口如下:
服务器名称
服务器地址
-SSL协议端口
-非SSL协议端口
Gmail
smtp.gmail.com
465
QQMail
smtp.qq.com
465或587
25
163邮箱
smtp.163.com
465或994
25
阿里邮箱
smtp.aliyun.com
465
25
outlook
smtp.live.com
25
其他的邮箱以“126邮箱(例) smtp 设置”为关键词搜索就可以了。一般在邮箱设置中都有相关的文档。按照上述内容填写到你的calibre的邮件服务器设置中。
测试calibre-web邮件客户端配置
在邮件服务器设置中填好后,点击下方保存设置并发送测试邮件。
在点击右上角任务列表。会看到此次测试任务。如果任务状态显示已完成
,则测试成功。此时邮箱也会发件邮箱也会收到一封测试反馈邮件。
注:新注册的邮箱或者可能存在其他原因,会导致任务失败。如果碰见失败的情况,可以静待一天再来试试。
测试成功后。维护一下账户的接收邮箱。
然后返回首页,打开任意一本书,点开后点击发送到kindle。
快去你的kindle看看,是不是同步过来了!
至此,kindle一键传书功能配置完成,相较于在本机上插数据线传输文件,自然是方便优雅的多。
安卓端静读天下配置
在安卓端,除了kindle客户端还有一个个人认为更加好用的阅读器——静读天下。这个软件不仅对图书格式支持的很全面,而且还支持配置calibre服务器。
静读天下配置calibre服务器
首先下载安装。有的应用商店可能没有,找不到就在搜索引擎上搜索一下。这个软件有免费版和专业版,免费版有少许广告(可关闭),功能上两者一致。
打开软件 - 打开侧边栏 - 点击“网上书库”。
点击右上角三个点 - 增加新书库。
在表单中输入书库名和书库网址。书库名随意填写,只做标识用。书库网址填写http:\\ip:port
。如果做了内网穿透,ip部分填写域名或公网ip。如果没有就填写web服务所在主机的局域网ip,例http:\\192.168.2.121:8083
。端口按照你之前设置的端口填写。
注:calibre-web的默认端口是8083,calibre客户端内容服务的默认端口是8080。
添加后打开新添加的书库,按提示输入账户密码进行登陆。登陆后的页面和在浏览器上基本是一致的。搜索想看的书籍,点进去点下载。图书就下载到你的手机里了。
静读天下基本设置
这时候点击返回我的书架 - 全部书籍,刚刚下载的图书应该还不在你的书架上。
不要担心,打开设置勾选上自动把主目录的新书籍导入到书架
。主目录就是这个选项下面的目录地址sdcard/Books
,你下载的书就默认在这个位置。勾选上述选项后,再下载图书,图书就会自己跑到你的碗里去了(误)。
不过,他这个自动扫描似乎不是实时的,如果你发现下载了,书架中还没有,可以手动点击下面的导入书籍进行导入。
现在只管大快朵颐吧!!!!
其他阅读器设置
果你使用其他阅读器,且该阅读器不支持calibre也没关系。反正书城是支持在线访问的,只需要在浏览器中打开书城,点击下载。一般默认下载的路径在~/Download
,在该路径下找到图书,然后移动到阅读器对应的文件夹下就可以了。有些阅读器即便不移动也可以直接扫描出来。
结束语
本期内容到此就告一段落了。看上去内容很多,实际上配置起来没那么麻烦,只是需要一点docker的知识。但一次配置,省一万次麻烦。身边如果有喜欢看小说的朋友,还能借此装个小逼。
作者不写水文,只写干货。
(本文本来打算首发小黑盒的,可小黑盒的富文本编辑器实在是太难用了,图片也抓不下来。)