百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

如何用 NAS 搭建属于自己的云端书库

moboyou 2025-07-20 03:22 12 浏览

在完成基于 NAS 的 Podcast 订阅管理平台以及密码库之后,我将下一步「私有化」的目标瞄上了自己多年来的精心收藏的数字书库。

我自己阅读的电子书除了从 Kindle 商店购买书籍之外,还有就是从第三方渠道下载以及自己 DIY 的电子书了。以前这些自制的电子书都被我放在电脑的某个文件目录中,而随着时间的推移,这些电子书文件越来越多,如何对这些数字文件进行高效的管理成为我心中的一大难题。

由于我主要的阅读工具都是通过 Kindle 来阅读,很少通过手机或者平板上进行电子书的阅读,因此我从其他渠道下载以及 DIY 的电子书都是基于 Kindle 的电子书格式 azw3,这种格式虽然在 Kindle 硬件上可以获得较好的阅读体验,但这也无形中让我个人随身书库的打造带来了相当多的难点,所以如果你也想打造类似的数字书库,那么下载的电子书的文件格式可以选择更为通用的 mobi,这样无论是管理还是阅读上都会更为方便。

下面就来介绍下我的个人随身数字书库打造过程吧。

使用工具来管理自己的电子书库

以前我会将下载的 azw3 格式的电子书经过简单的重命名后,直接保存在电脑的某个目录中。当时的考虑非常简单——将 AZW3 格式的电子书直接拷贝到 kindle 的存储空间就可以在设备上阅读了。

这种操作方式最为简单,但也带来了管理上的难题——无法确认 kindle 中已经保存了哪些书、是否重复等等。之后我开始使用桌面端的电子书管理软件来对书籍进行管理,也就是使用开源的电子书管理器 calibre。

calibre 的优点在于可以通过刮削器完善书库中的电子书元数据信息,并且通过类似文件同步的方式来实现本地数字书库和 kindle 的电子书同步以及传输操作。同时 calibre 还可以实现电子书转换、编辑等操作,可以说是现阶段最为全面的本地化电子书管理工具了。

而通过将电子书导入到 calibre 中,我逐步建立起一个基于本地电脑的个人电子书数据库。而更大的设想还在后面——我能不能将其变成一个自己专属的电子书书库,并且实现全终端的在公网环境下的阅读甚至管理?

我将实现目标转向了家中的群晖。

基于 NAS 构建在线书库

做好第一步:将本地书库转移到 NAS 上

我的初期的目标很简单——实现家中局域网内的桌面设备(Windows 电脑和 Mac )可以访问书库并使用 calibre 进行管理即可,那么首先就是要将原本存储在电脑中的书库转移到 NAS 上,当然也需要为此新增一个共享文件夹。

通过群晖的「控制面板」-「共享文件夹」,点击「新建」来创建书库目录(比如说我所创建的这个 book 目录),这里需要注意的是权限部分,为了方便访问可以给管理员以及访客开启「可读写」权限。

完成之后我们需要为该目录开启局域网内的共享访问,这里回到「控制面板」,然后在「文件服务」中找到 「SMB 服务」并勾选「启动 SMB 服务」。然后在「高级设置」里面对最低以及最高的 SMB 版本进行设置,并点击「应用」。

再回到当前的 Windows 电脑中打开「网络」,然后在共享的设备中查看是否有 NAS 这个设备,然后看一下里面是否有新建的这个书库文件夹(如果提示需要验证输入 NAS 的管理员的账户和密码),如果可以在这个文件夹里新建或者删除文件就表示创建成功。

接下来就是将原本保存在 PC 上的书库目录拷贝到新建的 NAS 共享文件夹下面,我这里在 book 目录下方再创建了一个library目录,然后将之前保存到本地电脑中的书库全部拷贝进去,需要注意是一定要把 metadata.db 这个文件一并拷贝进去,也是书库数据的关键。

接下来我们打开桌面端的 calibre 开始切换书库,点击工具栏中的「书库」-「切换/创建书库」,然后导航到网络中 NAS 下对应的 book 目录并选择library这个文件夹,并且勾选「使用当前现有的书库位置作为新的位置」并点击确定,如果前面设置正常,你将会看到和之前本地书库一样的书籍列表,只不过这时候的书库的位置被转移到了局域网中的 NAS 上。

使用 calibre web 的 Docker 镜像构建书库数据库

仅仅只是让书库放在 NAS 上通过 SMB 进行目录共享,也只能通过局域网中的桌面设备(Windows 电脑或者 Mac 电脑)进行访问。显然我希望的是实现全终端的访问(这当然包括手机以及平板设备),而要想实现这个目标,就需要为 NAS 上的虚拟书库生成为 OPDS 的目录结构。

OPDS 全称为 Open Publication Distribution System,即开放出版物发行系统,通过这个系统我们就可以通过 App 或者网页浏览器来对虚拟书库进行管理和访问,而不再需要通过文件目录访问的形式来管理你的书库。而要想生成 OPDS,我们就需要使用基于 calibre 的 web 分享服务,这里我选择的依旧是我们熟悉的 「Calibre-web」,只不过这次选择了一个新的 Docker 镜像版本(其实是此前我派介绍的镜像版本有点太老了)。

在下载镜像之前,我们需要对目标的文件目录进行权限上的修改,这里需要用到的除了之前我们存放虚拟书库的 book 目录之外,还需要一个存放配置文件的目录,这里我在 docker 文件夹下创建了一个 calibre 目录。

下面还是在 File station 中,选择 book 目录以及刚刚创建的 docker/calibre 并右击属性,在「权限」选项卡中选择 「Everyone」用户组并点击「编辑」,选择所有的权限并授予全部权限(全部控制),如果有 http 用户组也可以以此类推进行权限设置,这一步的设置主要是为了方便后续生成的应用容器可以正常读写该目录。

接下来打开群晖的 Docker ,在侧栏中点击注册表并搜索 「Calibre-web」,并选择搜索结果中出现的「linuxserver/calibre-web」这个镜像,双击进行下载并等待下载完毕。

在「映像」中找到双击刚刚下载的「linuxserver/calibre-web」,双击开始创建容器。

在设置页面中点击高级设置,在「卷-添加文件夹」中选择书库目录(比我我的路径是book/library),转载路径输入/books,然后再添加一个配置文件路径(比如我的是 docker/calibre),转载路径为 /config

切换到端口设置选项卡,在本地端口上填入和容器端口一致的 8083 端口,完成之后选择点击「应用」并启动容器。

启动后在浏览器中输入http://你的 NAS ip:8083 进入设置页面,这里会要求你首先填入书库的路径,这里输入 /books 后点击 submit 完成设置,需要说明的是如果出现相关错误提示,可以在回到 File station 中检查 books 文件夹是否给「Everyone」提供了「全部控制」权限。

然后你再访问http://你的 NAS ip:8083,这时应该会直接进入到登录页面,在 Username 这里输入 admin,在 Password 这里输入 admin123 完成登录,如果看到首页上都是你收藏的书则表示 Calibre-web 已经成功创建你的在线书库了!

这里我们可以检验下 OPDS 是否创建成功,在浏览器的地址栏输入 http://你的 NAS ip:8083/opds 回车,如果弹出登录页面则表示目录创建成功。

让 NAS 上的数字书库可以在公网访问

显然我们看电子书不可能仅仅只在家中局域网环境内,我们更希望书库可以「随时随地」都可以被访问,因此这里我们需要解决的就是公网访问问题,这里除了使用 DDNS 之外,我选择了更稳定的 frp 内网穿透。

而在 NAS 上创建 frp 内网穿透服务,一般用得比较多的是使用 Docker 镜像,考虑灵活以及稳定性上,我这里选择通过计划任务来实现。

首先在群晖的 docker 目录下创建 frpc 文件夹,在 frpGitHub 主页上下载对应版本的 frp 包(这里选择的是 Linux amd64 位版本),然后完全解压缩将 frpc 文件几个 frpc.ini 文件拷贝到 frpc 文件夹中。

在群晖的 File station 打开 frpc 文件夹,使用文本编辑器打开并添加一段新的配置项目(如图)并保存。

在打开「控制面板-计划任务」,点击「新增-计划的任务-用户定义的脚本」。

在创建任务选项卡输入任务名称,用户账号可以选择 root(或者其他管理员账号),然后再切换到「任务设置」中,在「用户定义的脚本」中输入:

 nohup /volume1/docker/frpc/frpc -c /volume1/docker/frpc/frpc.ini &

在「计划」中设定任务排期(随便填写)点击保存。

回到「计划任务」页选中新建的任务并点击「设置」,勾选「保存输入结果」并将其保存到和 frp 相同的目录并点击确定。

最后在「计划任务」页中选中 frpc 任务并点击运行。这是再使用http://<映射的公网 ip>:<映射的端口地址>访问 calibre web,如果能显示 calibre web 的登录页面即表示内网穿透成功。

这样我们就可以在非家中局域网的环境下,通过浏览器和各种应用来访问自己的在线书库了。

在多个平台访问和管理私人书库

现在,我的私人数字书库已经基本搭建完毕,可以通过浏览器在任何地方管理书库,但我希望可以不仅仅只是通过浏览器来进行远程管理和访问,而希望即便是在公司的 PC 上也能管理家中的书库,甚至可以直接在手机上打开书库并下载书籍。

因此我需要解决的问题是如何在外网上安全访问到家中群晖的文件目录。

由于配置上的问题,最终我选择的依旧是通过 SSH / sftp 方式来实现远程的登录访问,首先在群晖中打开「控制面板」-「终端机和 SNMP」,勾选「启动 SSH 功能」并设置一个端口(最好不是 22)。

然后在「文件服务」中切换到 「FTP」 选项卡,然后勾选 「启动 SFTP 服务」并设置和前面相同的端口号。

最后增加一条 frpc 的配置,同样是打开 frpc.ini 并新增下面的一段配置并保存,最后重启 frpc 服务使其生效。至于确认是否成功则可以在外网的电脑通过 SSH 终端尝试是否可以登录。

在 PC 上管理 NAS 上的书库

如果不考虑网页端管理,实际上我们在外网 PC 上依旧可以通过 calibre 软件进行管理,但这需要将群晖上相应的路径挂载到文件资源管理器上,这里我通过的是 SFTP 协议进行挂载。

将远程文件路径通过 sftp 协议挂载到文件资源管理器,在 Windows 上最方便的当然是 raidrive。创建驱动器时选择 NAS 下面的 SFTP,然后在地址栏输入 frp 映射的公网 IP 以及映射的端口,输入 NAS 的账号和密码并挂载。成功后你就可以在网络位置上看到新挂载的盘符了。

打开 calibre 然后选择「书库」-「切换/创建书库」,定位到 raidrive 生成的新驱动器下的书库目录(我自己的路径是:X:\book\library)并将其添加为新的书库目录,这时候你就可以看到 calibre 可以全部载入 NAS 上的书库,并且实现外网直接通过管理。

在 Mac 上管理 NAS 上的书库

和 Windows 类似,我们依旧选择的是将群晖的文件目录通过 SFTP 映射到本地的驱动器路径中,这里我选择的工具则是 cloudmounter ,使用的办法可以参考支持 macOS / Windows,一站式网盘管理工具:CloudMounter。

挂载到访达之后,打开 Mac 上的 calibre,同样是「书库」-「切换/创建书库」,这里选择刚刚挂载上去的群晖文件目录下的 「book/library」并且选择「使用当前现有的书库位置作为新的位置」,如果设置恰当,你同样可以在 calibre 看到 NAS 的书库列表,当然管理/增添书等操作也不在话下。

在 iPhone/iPad 打开个人数字书库

移动端访问书库则要简单一些,实际上就是使用第三方 App 读取生成的 OPDS 地址来实现在线的书库访问,在 iOS 平台我选择的是 kyreader 这款 App,主要是这款应用满足我的几个需求:可以基于 OPDS 访问书库,同时支持解析 awz3 格式的电子书。

打开 kyreader 后直接点击中间的「目录」来添加书库,输入你的书库名以及对应的 URL(http://<映射的公网 ip>:<映射的端口地址>/opds)并添加。然后在弹出的账户验证中输入 calibre web 的用户名以及密码,点击确认后就可以将个人书库添加到目录中了。

打开书库,在最新添加中就可以看到你的书库目录了,这里我选择一本 azw3 格式的书,然后点击下载就可以下载到手机中,直接点击阅读就可以用 kyreader 进行阅读了。唯一的缺点就是并不支持阅读进度同步(显然这个要求有些太难了)。

在 Android 设备上打开个人数字书库

相比 iOS 端,在 Android 上访问书库并且阅读 AWZ3 格式的书反而更加麻烦一些,原因是单纯的电子书阅读器在对 azw3 格式的电子书文件存在解析问题(会识别为 bin 数据文件),因此在 Android 上需要通过两款应用来实现我的需求。

首先我需要使用这款名为 calibre companion 的应用来实现书库的连接,打开应用点击右上角的 「setting」 进入 「Connecting to calibre」,在 「Content server connection」-「IP address and Port or URL」中输入书库映射出的公网 ip 和端口号。

然后在应用首页点击右上角的 「connect」-「to Content Server」并输入书库的用户名和密码完成书库的连接。

calibre companion 连接到书库后并不提供书籍的阅读,因此点击书籍后只会提供meta数据显示或者下载,点击下载之后会将书库的电子书文件保存到 calibre companion 目录下,这时候就需要要使用另一款电子书阅读器FBReader进行电子书阅读。

实际上 FBReader 就是用来解析 azw3 格式的电子书,点击侧栏的「选择文件」,然后定位到 calibre companion 的文件目录就可以看到刚才下载的电子书文件了,这时候选中就可以进行阅读了,和 iOS 平台类似,在 Android 平台同样不支持阅读进度的同步。

结语

通过以上的一系列的操作,我终于实现了基于私有云的个人随身电子书库的搭建和外网访问,实现了个人书库的随身设备阅读访问。相比 Podcast 以及密码管理的私有云搭建,工具更多也更为复杂,但依然不失为个人书库的云端管理解决方案之一。

相关推荐

Excel技巧:SHEETSNA函数一键提取所有工作表名称批量生产目录

首先介绍一下此函数:SHEETSNAME函数用于获取工作表的名称,有三个可选参数。语法:=SHEETSNAME([参照区域],[结果方向],[工作表范围])(参照区域,可选。给出参照,只返回参照单元格...

Excel HOUR函数:“小时”提取器_excel+hour函数提取器怎么用

一、函数概述HOUR函数是Excel中用于提取时间值小时部分的日期时间函数,返回0(12:00AM)到23(11:00PM)之间的整数。该函数在时间数据分析、考勤统计、日程安排等场景中应用广泛。语...

Filter+Search信息管理不再难|多条件|模糊查找|Excel函数应用

原创版权所有介绍一个信息管理系统,要求可以实现:多条件、模糊查找,手动输入的内容能去空格。先看效果,如下图动画演示这样的一个效果要怎样实现呢?本文所用函数有Filter和Search。先用filter...

FILTER函数介绍及经典用法12:FILTER+切片器的应用

EXCEL函数技巧:FILTER经典用法12。FILTER+切片器制作筛选按钮。FILTER的函数的经典用法12是用FILTER的函数和切片器制作一个筛选按钮。像左边的原始数据,右边想要制作一...

office办公应用网站推荐_office办公软件大全

以下是针对Office办公应用(Word/Excel/PPT等)的免费学习网站推荐,涵盖官方教程、综合平台及垂直领域资源,适合不同学习需求:一、官方权威资源1.微软Office官方培训...

WPS/Excel职场办公最常用的60个函数大全(含卡片),效率翻倍!

办公最常用的60个函数大全:从入门到精通,效率翻倍!在职场中,WPS/Excel几乎是每个人都离不开的工具,而函数则是其灵魂。掌握常用的函数,不仅能大幅提升工作效率,还能让你在数据处理、报表分析、自动...

收藏|查找神器Xlookup全集|一篇就够|Excel函数|图解教程

原创版权所有全程图解,方便阅读,内容比较多,请先收藏!Xlookup是Vlookup的升级函数,解决了Vlookup的所有缺点,可以完全取代Vlookup,学完本文后你将可以应对所有的查找难题,内容...

批量查询快递总耗时?用Excel这个公式,自动计算揽收到签收天数

批量查询快递总耗时?用Excel这个公式,自动计算揽收到签收天数在电商运营、物流对账等工作中,经常需要统计快递“揽收到签收”的耗时——比如判断某快递公司是否符合“3天内送达”的服务承...

Excel函数公式教程(490个实例详解)

Excel函数公式教程(490个实例详解)管理层的财务人员为什么那么厉害?就是因为他们精通excel技能!财务人员在日常工作中,经常会用到Excel财务函数公式,比如财务报表分析、工资核算、库存管理等...

Excel(WPS表格)Tocol函数应用技巧案例解读,建议收藏备用!

工作中,经常需要从多个单元格区域中提取唯一值,如体育赛事报名信息中提取唯一的参赛者信息等,此时如果复制粘贴然后去重,效率就会很低。如果能合理利用Tocol函数,将会极大地提高工作效率。一、功能及语法结...

Excel中的SCAN函数公式,把计算过程理清,你就会了

Excel新版本里面,除了出现非常好用的xlookup,Filter公式之外,还更新一批自定义函数,可以像写代码一样写公式其中SCAN函数公式,也非常强大,它是一个循环函数,今天来了解这个函数公式的计...

Excel(WPS表格)中多列去重就用Tocol+Unique组合函数,简单高效

在数据的分析和处理中,“去重”一直是绕不开的话题,如果单列去重,可以使用Unique函数完成,如果多列去重,如下图:从数据信息中可以看到,每位参赛者参加了多项运动,如果想知道去重后的参赛者有多少人,该...

Excel(WPS表格)函数Groupby,聚合统计,快速提高效率!

在前期的内容中,我们讲了很多的统计函数,如Sum系列、Average系列、Count系列、Rank系列等等……但如果用一个函数实现类似数据透视表的功能,就必须用Groupby函数,按指定字段进行聚合汇...

Excel新版本,IFS函数公式,太强大了!

我们举一个工作实例,现在需要计算业务员的奖励数据,右边是公司的奖励标准:在新版本的函数公式出来之前,我们需要使用IF函数公式来解决1、IF函数公式IF函数公式由三个参数组成,IF(判断条件,对的时候返...

Excel不用函数公式数据透视表,1秒完成多列项目汇总统计

如何将这里的多组数据进行汇总统计?每组数据当中一列是不同菜品,另一列就是该菜品的销售数量。如何进行汇总统计得到所有的菜品销售数量的求和、技术、平均、最大、最小值等数据?不用函数公式和数据透视表,一秒就...