打造属于自己的私人云书库

2017-02-27 15:00:52 92点赞 655收藏 90评论

一、前言

距离我上一次发的原创文章

skylake架构DIY NAS 篇一:纠结挑选的硬件篇前不久我刚发了个用pogoplug做的廉价nas的原创廉价naspogoplug的折腾记录廉价naspogoplug的折腾记录手头上的这台pogoplug买了一年多了,当时也不是因为有这个需要,而是偶然看到有这么便宜的屌丝产品,作为一个技...dalin| 17 评论39 收藏117查看详情


已经过去将近一年了。实在是懒癌晚期+女儿控的原因。现在开始慢慢把一些坑补一下。

按照规划,这一篇本来应该是写操作系统篇的,不过我就是喜欢不走寻常路(其实是因为在一个论坛被人问到了),先讲讲怎样打造一个私人的电子书库。操作系统的介绍留着以后懒癌缓解了再说吧。

当然,为了介绍的方便,还是有必要先大概讲一下现在用的操作系统情况:

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。

该项目最近在各种完善中,代码也比较简单,会编程的欢迎也贡献代码,不会编程的也可以提提需求。

展开 收起

UGREEN 绿联 DXP4800 四盘位 私有云NAS存储(Intel N100、8GB)

UGREEN 绿联 DXP4800 四盘位 私有云NAS存储(Intel N100、8GB)

1690.66元起

QNAP 威联通 TS-464C2 四盘位 NAS网络存储(赛扬N5095、8GB)黑色

QNAP 威联通 TS-464C2 四盘位 NAS网络存储(赛扬N5095、8GB)黑色

2399元起

ZSpace 极空间 私有云 Z4Pro 8G版 4盘位NAS存储(N97、8GB)

ZSpace 极空间 私有云 Z4Pro 8G版 4盘位NAS存储(N97、8GB)

899元起

ZSpace 极空间 私有云 Z4Pro 性能版 NAS存储(N305、16GB)黑色

ZSpace 极空间 私有云 Z4Pro 性能版 NAS存储(N305、16GB)黑色

2799元起

ZSpace 极空间 私有云Z2Pro 2盘位 NAS存储 水墨黑

ZSpace 极空间 私有云Z2Pro 2盘位 NAS存储 水墨黑

1099元起

UGREEN 绿联 DXP2800 双盘位 私有云NAS存储(Intel N100、8GB)

UGREEN 绿联 DXP2800 双盘位 私有云NAS存储(Intel N100、8GB)

1699元起

ZSpace 极空间 私有云 Z4Pro 16G版 4盘位NAS存储(N97、16GB)

ZSpace 极空间 私有云 Z4Pro 16G版 4盘位NAS存储(N97、16GB)

2280元起

ZSpace 极空间 私有云 Z423 旗舰版 8盘位NAS存储(锐龙R7-5825U、32GB)

ZSpace 极空间 私有云 Z423 旗舰版 8盘位NAS存储(锐龙R7-5825U、32GB)

4419元起

QNAP 威联通 TS-464C 4盘位NAS(赛扬N5095、8GB)

QNAP 威联通 TS-464C 4盘位NAS(赛扬N5095、8GB)

1899元起

UGREEN 绿联 DX4600 四盘位NAS存储 (赛扬N5105、8GB)

UGREEN 绿联 DX4600 四盘位NAS存储 (赛扬N5105、8GB)

1696元起

QNAP 威联通 TS-466C 四盘位NAS(奔腾N6005、8GB)

QNAP 威联通 TS-466C 四盘位NAS(奔腾N6005、8GB)

3199元起

UGREEN 绿联 DXP4800 Plus 四盘位 私有云NAS存储

UGREEN 绿联 DXP4800 Plus 四盘位 私有云NAS存储

1999元起

ZSpace 极空间 私有云 Q2C NAS存储 水墨黑

ZSpace 极空间 私有云 Q2C NAS存储 水墨黑

899元起

UGREEN 绿联 DXP480T Plus 四盘位 私有云NAS存储(酷睿i5-1235U、8GB)

UGREEN 绿联 DXP480T Plus 四盘位 私有云NAS存储(酷睿i5-1235U、8GB)

3144元起

Synology 群晖 DS224+ 双盘位NAS(赛扬J4125、2GB)

Synology 群晖 DS224+ 双盘位NAS(赛扬J4125、2GB)

2188元起

Synology 群晖 DS923+ 四盘位 NAS存储(AMD R1600、4GB)

Synology 群晖 DS923+ 四盘位 NAS存储(AMD R1600、4GB)

4099元起
90评论

  • 精彩
  • 最新
  • 看起来要求简单python2.7。但是安装启动起来,要解决的依赖错误一大堆。
    最后启动起来了,发现它提交后的数据库好像有问题,不能自动创建,从其他地方复制一个好了。

    想请教楼主的一个问题就是,浏览器界面语言默认是英语,没有像说的一样默认跟随浏览器语言。
    所以应该修改那里代码,把默认语言变成中文。

    校验提示文案

    提交
    这个问题解决了。默认访客的语言设置成中文就行了。不过这个程序是pyhon,动不动就出问题崩溃挺烦人的。例如获取元数据,豆瓣封面,然后提交。

    校验提示文案

    提交
    这个程序主开发不是中国人,所以在改的时候经常忘记中文的处理。我有空看看,修复一下吧,我自用的没有经常追新

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 收藏,干货哈。当然 如果分享一个来使用就更好了。我比较懒 [doge] [赞]

    校验提示文案

    提交
    毕竟是盗版,不要太高调了,而且用的人多了肯定会被和谐

    校验提示文案

    提交
    收起所有回复
  • nas书库…有片库吗?

    校验提示文案

    提交
    黑群晖自带片库

    校验提示文案

    提交
    收起所有回复
  • nas电子书.... 一秒看一本?

    校验提示文案

    提交
    下书如山倒,看书如抽丝。算是一个收藏癖吧。一周看一本就不错了

    校验提示文案

    提交
    那用得着开个nas做书库嘛

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 看了上一片,以为你是给大姐姐们找新家!尼玛,居然建立的是书库!差评

    校验提示文案

    提交
    别啊,大姐姐们也有办法的,github上搜索hardseed.

    校验提示文案

    提交
    我仿佛看到了一座新世界的大门啊!

    校验提示文案

    提交
    收起所有回复
  • 第一次打赏,仅有的50银子全部奉上,跟作者一样,书控,技术控,家有白群晖,威联通各一台刚自己攒了一台nas,正在攒第二台,晚上回去看看能不能按该方案部署在我的ds 916+上,有啥问题再来请教啊

    校验提示文案

    提交
    群晖用docker,不过docker的版本有点落后了,自己用docker装完进去把代码更新一下就好。

    校验提示文案

    提交
    请教如何更新啊,黑群5.2一直没搞起来。

    校验提示文案

    提交
    还有2条回复
    收起所有回复
  • 能不能再docker搞个模版,这样我们就可以直接用你的模版了,嘿嘿

    校验提示文案

    提交
    docker有现成的模板,唯一的问题是代码太老。

    校验提示文案

    提交
    怎么更新成您提供代码?

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 能留个联系方式吗,下载calibre下载了半天才下载完成,结果用命令行导入的时候直接报错,提示ImportError:cannot import name QImage

    校验提示文案

    提交
    什么系统,怎么装的?

    校验提示文案

    提交
    群晖nas 916+,dsm 6.0.2,按你的教程装的,我大概知道为啥了,因为少了libgl1-mesa-glx这个库

    校验提示文案

    提交
    还有2条回复
    收起所有回复
  • 是非常想用,但是看不懂,我需要傻瓜教程…

    校验提示文案

    提交
    看不懂这个的话,再傻瓜的教程估计也没用,因为多多少少还是需要点计算机知识的。可惜因为是版权以及没有备案的原因,不然我把我的库共享出来就好了。

    校验提示文案

    提交
    没发现你回啦,共享我dns吧

    校验提示文案

    提交
    收起所有回复
  • 群晖可以搞么 老板

    校验提示文案

    提交
    可以,群晖装docker,搜索calibre-web就可以装了

    校验提示文案

    提交
    收起所有回复
  • 架设好之后书籍编辑元数据无法保存封面的url是什么原因啊,现在所有书籍都是cover not availale。

    校验提示文案

    提交
    你上传的是mobi吧,这个确实还有点问题. 等更新吧

    校验提示文案

    提交
    收起所有回复
  • @dalin 你有联系方式么?github 上也没法给你发留言,twitter、 telegram 或者其他?

    校验提示文案

    提交
    是有什么要了解的吗?

    校验提示文案

    提交
    发现一个 bug ,我自己修复了,想给您提 merge request
    另外,“书架” 这个功能有什么用吗?

    校验提示文案

    提交
    还有2条回复
    收起所有回复
  • 准备搞这个的可以建个群交流下吗?

    校验提示文案

    提交
    你建吧,建完我可以加进去

    校验提示文案

    提交
    群有建立么??

    校验提示文案

    提交
    收起所有回复
  • 貌似未太监,实则已太监- -?

    校验提示文案

    提交
    其实早就在hipda已经更新了,这里之前没找到怎么更新

    校验提示文案

    提交
    收起所有回复
  • ios 下载了kybook3 用pc的共享功能可以,但是手动输入web的网址为何无法加载 求教

    校验提示文案

    提交
    不好意思,好些年没用ios了,没办法帮你

    校验提示文案

    提交
    收起所有回复
  • 看着很厉害的样子

    校验提示文案

    提交
  • 看起来也是位折腾人士。不知能否偷偷告诉我你的书库地址,一来让我上去东瞧瞧西逛逛学习学习,二来本着授人渔不如直接授人以鱼的精神,我搜刮一些稀资源。。。。。。。

    校验提示文案

    提交
  • 楼主很多东西没细说,费老劲了还没弄起来

    校验提示文案

    提交
  • 收藏一下nas,以后组装

    校验提示文案

    提交
  • 请教下楼主,在nas4free下安装了calibre,然后安装python,运行python cps.py后提示这些信息,不知道问题出现在哪里?
    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'

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关好价推荐
查看更多好价

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
655
扫一下,分享更方便,购买更轻松