打造属于自己的私人云书库
一、前言
距离我上一次发的原创文章
已经过去将近一年了。实在是懒癌晚期+女儿控的原因。现在开始慢慢把一些坑补一下。
按照规划,这一篇本来应该是写操作系统篇的,不过我就是喜欢不走寻常路(其实是因为在一个论坛被人问到了),先讲讲怎样打造一个私人的电子书库。操作系统的介绍留着以后懒癌缓解了再说吧。
当然,为了介绍的方便,还是有必要先大概讲一下现在用的操作系统情况:
1、裸机装的ArchLinux,时不时更新一下。以前应用大多跑在这个Archlinux上面,现在基本上都挪到虚拟机的黑群晖上了;
2、KVM装的黑群晖6.01,买了一块raid卡,通过kvm的pci直连,把硬盘直接接到黑群晖里了;
3、黑群晖装了Docker。现在各种应用如果群晖套件有的就直接装套件里的,没有的就用docker了。
二、概览
下面开始看看我的云书库是什么样子的:
这个云书库基于链接,我作了中文翻译,也提交了一些代码( 我的github库是 ,可以直接从我这里下载,我会及时从主干merge,也会加一些针对中文书的特性,比如从豆瓣拉信息。有些会提交回主干,有些不会。 )。具备以下特性:
Bootstrap 3 HTML5 interface
full graphical setup 全图形化设置
User management 用户管理
Admin interface 管理界面
User Interface in english, french, german, polish, simplified chinese, spanish 支持这么多种语言
OPDS feed for eBook reader apps 支持OPDS。比如android下的静读天下,iOS的kybook这些阅读器都支持OPDS。也就是所谓的网上书库功能。把书库加到阅读器之后,以后直接就可以在阅读器搜索、下载、阅读了,很方便。
Filter and search by titles, authors, tags, series and language 支持根据书名,作者,标签,丛书名和语言进行搜索
Create custom book collection (shelves) 创建自定义书架
Support for editing eBook metadata 支持编辑电子书元数据 (我的库还增加了编辑元数据时自动从豆瓣拉信息的功能)
Support for converting eBooks from EPUB to Kindle format (mobi/azw) 支持将epub电子书转成kindle的格式
Restrict eBook download to logged-in users 可以限制只有登录用户才能下载
Support for public user registration 支持用户注册
Send eBooks to Kindle devices with the click of a button 支持一键发送到kindle
Support for reading eBooks directly in the browser (.txt, .epub, .pdf) 支持直接在线阅读电子书(.txt, .epub, .pdf格式)
Upload new books in PDF, epub, fb2 format 可以上传PDF, epub, fb2格式的电子书(其实其它格式也可以)
Support for Calibre custom columns 支持Calibre自定义列(其实我也不知道是啥)
Fine grained per-user permissions 支持给每个用户设置权限
Self update capability 自更新能力
说的好复杂,划下重点: WEB界面,支持opds,支持账号管理, 支持send to kindle,支持在线阅读,支持格式转换
我用这个书库管理了17683本电子书(持续更新)。给了好几个朋友在用(通过动态域名,走https端口共享到外网),当然,由于版权原因,我就不在这里共享了。
我自己也用的挺爽的,Yotaphone自带的阅读器支持opds,直接加上这个书库,iPhone用kybook,kobo aura HD用Coolreader或者浏览器. kindle卖掉了,不过我的朋友用send to kindle功能还是用的挺爽的。
三、安装
3.1 数据准备
这里的数据准备指的是电子书怎么来,对于有这个需求的人来说,肯定有一堆电子书了,所以不用怎么看。对于我而言,我是从各种BT,论坛,云盘拉了一堆电子书,甚至还写了个爬虫从一些论坛更新最新的电子书。概括 起来,我的电子书来源大概来自这些渠道:
a、论坛里的各种BTsync、云盘分享;
b、自己写的爬虫从论坛、网站拉下来的;
c、各种搜索引擎找到的;
d、朋友上传分享的。
3.2 Calibre库准备
calibre http://calibre-ebook.com/ 是一个跨平台的电子书管理工具,功能齐全并且强大,而且windows,linux,macOS各平台都有,核心是用python写的。
事实上,calibre-web 跟calibre不是同一个东西,而且是完全独立于calibre的,即便没有装calibre,也是可以用的。但因为calibre提供了一些工具,所以安装上calibre也会带来一些方便。对本文来说,calibre并不是必须的,但有calibre更好。
安装calibre非常简单,windows和 mac os直接从官网下载安装包安装就行了。linux也可以直接安装二进制,官网提供了安装脚本:
sudo -v && wget -nv -O- https://download.calibre-ebook.com/linux-installer.py | sudo python -c "import sys; main=lambda:sys.stderr.write('Download failedn'); exec(sys.stdin.read()); main()"
各种Linux改版也可以直接安装,比如:
Debian系的用:
apt-get install calibre
RedHat系的用:
yum install calibre
ArchLinux用:
pacman -Sy calibre
装完之后可以直接通过图形界面把各种电子书导入到calibre数据库里,可以一本一本加,也可以一个目录一个目录加:
但是如果calibre的库里已经有很多书的话,图形界面可能会有点慢,这个时候就可以用命令行来添加了, 命令行工具是calibredb:
calibredb add xxx.epub --with-library=/data/calibre
calibredb add -r /downloads/books --with-library=/data/calibre
calibredb remove 1 --with-library=/data/calibre
第一个例子是添加一本书,第二是添加整个目录,第三个是删除一本书。--with-library=/data/calibre这个是指明calibre数据库的存放位置。这个库的位置在calibre的界面上是可以看到的:
记好/data/calibre这个位置,后面我们会用到。这个目录下放了这些文件:
metadata.db //这个就是calibre的数据库了
一堆作者名拼音命名的目录 //这个就是电子书的存放地址了
3.3 安装Calibre-web
先下载 calibre-web, 有装git的可以直接
git clone https://github.com/janeczku/calibre-web.git
没有装git的可以下载压缩包 并解压。
calibre-web是用python写的,所以需要先安装python, 各种平台的python安装大家自己google吧。要求python 2.7以上,理论上python3也支持,不过我没有测试过,还是装python2.7吧, python的windows安装包下载地址是
其它系统的基本自带或者可以从系统软件库安装,就不多介绍了。
装完python,并下载完calibre-web之后,进入 calibre-web的目录:
Execute the command(执行命令): python cps.py
Point your browser to http://localhost:8083 or http://localhost:8083/opds for the OPDS catalog。用浏览器打开http://localhost:8083
Set Location of Calibre database to the path of the folder where your Calibre library (metadata.db) lives, push "submit" button 设置calibre数据库路径
Go to Login page 登录
解释一下,执行 python cps.py会启动服务器,如果是第一次启动,会自动跳转到配置页面(理论上会根据浏览器语言出现中文界面):
各个配置项的含义已经很清楚了,就不多说了,基本上如果啥也不懂的人,改一下calibre数据库位置就可以了。如果要允许注册的话,就勾选一下启用注册,并设置一下新用户的默认权限。其它设置类似。点提交,然后就可以开始登录了。默认的管理账号是: 用户名: admin 密码: admin123。
四、配置
安装配置完之后,用admin登录,然后在页面右上角有个‘管理’,点进去,那里就是管理配置入口:
1是入口,2是用户管理,这里可以添加用户,也可以修改用户资料。3是smtp设置。这个功能是用于Send to kindle的。
smtp设置界面如下:
具体看你的邮箱smtp设置就可以了。然后,在你的kindle那里,把这个邮箱设置到白名单中去。
编辑用户资料的界面如下:
kindle E-mail就是你的kindle邮箱,有用过send to kindle功能的应该都清楚。
五、使用
5.1 直接使用
这个直接打开浏览器就可以了,不用多说了,各种功能自己摸索。
5.2 客户端
支持opds的阅读器都可以,比如 iOS: kybook . Android: 静读天下.
使用方式: 添加网上书库,输入你的书库地址,地址后面加 /opds. 比如你的书库网址是 http://mybooks.com , 那么书库地址就是 http://mybooks.com/opds.
至于怎么把服务配置到外网去,这个有点复杂,不在本文中涉及。
六、其它
因为其实这个东西的基础安装使用还是很简单的,所以也没什么内容可说。还有一些别的用法,比如用docker安装,比如配置nginx转发等等,这里就不涉及了。有兴趣的可以看项目的readme。
该项目最近在各种完善中,代码也比较简单,会编程的欢迎也贡献代码,不会编程的也可以提提需求。
岸止慕夏
最后启动起来了,发现它提交后的数据库好像有问题,不能自动创建,从其他地方复制一个好了。
想请教楼主的一个问题就是,浏览器界面语言默认是英语,没有像说的一样默认跟随浏览器语言。
所以应该修改那里代码,把默认语言变成中文。
校验提示文案
bigrm
校验提示文案
Dayobsidian
校验提示文案
pierrec
校验提示文案
snakecr
校验提示文案
逍遥花生
校验提示文案
庚宝
校验提示文案
逍遥花生
校验提示文案
luanbu1999
校验提示文案
weiOiseau
校验提示文案
happier250
校验提示文案
兼哲
校验提示文案
jackberry
校验提示文案
雲枰
校验提示文案
值友6481991904
校验提示文案
yunjii
校验提示文案
多余的猪
校验提示文案
Bobzy
校验提示文案
黑色卓
校验提示文案
knook
Traceback (most recent call last):
File " cps.py ", line 11, in
from cps import web
File "/mnt/k-nas/calibre- web/cps/web.py ", line 10, in
import ub
File "/mnt/k-nas/calibre- web/cps/ub.py ", line 12, in
from flask_babel import gettext as _
File "/mnt/k-nas/calibre- web/vendor/flask_babel/__init__.py ", line 21, in
from babel import dates, numbers, support, Locale
File "/mnt/k-nas/calibre- web/vendor/babel/dates.py ", line 28, in
from babel.util import UTC, LOCALTZ
File "/mnt/k-nas/calibre- web/vendor/babel/util.py ", line 278, in
from babel import localtime
File "/mnt/k-nas/calibre- web/vendor/babel/localtime/__init__.py ", line 75, in
except pytz.UnknownTimeZoneError:
AttributeError: 'module' object has no attribute 'UnknownTimeZoneError'
校验提示文案
五独散人
校验提示文案
值友6481991904
校验提示文案
光明的奶牛
校验提示文案
bleachzhou
校验提示文案
小白玩nas
校验提示文案
小白玩nas
校验提示文案
雅加达街角
校验提示文案
andrew13
校验提示文案
岸止慕夏
最后启动起来了,发现它提交后的数据库好像有问题,不能自动创建,从其他地方复制一个好了。
想请教楼主的一个问题就是,浏览器界面语言默认是英语,没有像说的一样默认跟随浏览器语言。
所以应该修改那里代码,把默认语言变成中文。
校验提示文案
Bobzy
校验提示文案
雲枰
校验提示文案
wukong323
校验提示文案
wukong323
校验提示文案
神龍
里面的书也能看到 ,但是点下载时 提示 http 1.1 500 错误? 我已经给guest分配了下载权限了呀
阅读的按钮也是灰色的 点不了
校验提示文案
rainsun
校验提示文案
jackberry
校验提示文案
jackberry
校验提示文案
兼哲
校验提示文案
weiOiseau
校验提示文案
happier250
校验提示文案