电子书越囤越乱?试试 BookLore 电子书管理神器,NAS上自建私人数字图书馆
最近收拾出来家里那台 2016 年的老电脑,性能早就跟不上日常办公节奏。
扔了可惜,留着又占地方,前段时间索性给它装上了飞牛 NAS 系统。
没想到,这一步直接把它“盘活”了。
它现在既是家里的私有云存储,也是我所有数字内容的中枢——
尤其是那几百上千本一直没人管的电子书,终于有了一个像样的归宿。
囤书容易,管书太难
说实话,我算不上什么重度阅读爱好者,但有个毛病一直没改:
看到感兴趣的书就顺手存下来。
几年下来,漫画、EPUB、PDF、TXT越堆越多,问题也越来越明显:
想找严歌苓的《芳华》,要在「小说合集」「经典读物」「未分类」等众多文件夹里来回翻
《大明王朝》手机上读到第三十章,电脑端却还停在第一页
电子阅读器里的进度,和电脑、手机完全不同步
一些日文漫画文件名乱码,根本分不清是哪一部,最后只能吃灰
我也试过不少工具,要么像办公系统一样复杂,要么只管“存文件”,完全不考虑阅读体验。
直到把 BookLore 跑在 NAS 上,这件事才算真正顺了。
为什么选择 BookLore
选 BookLore,其实原因很简单。
它并不追求功能堆砌,而是非常明确地盯着三件事:
怎么把书存好
怎么把书找快
怎么让你愿意继续读
对“书虫”来说,这三点比什么都重要。
再加上飞牛 NAS 对 Docker 的支持非常友好,部署门槛不高,即便不是技术党,照着我的教程也能跑起来,这对大家来说是个轻松事。
智能书架,比文件夹分类靠谱得多
以前我也很爱建文件夹:
小说 / 已读
小说 / 未读
漫画合集
职场干货
但书一多,分类反而成了负担。
读完一本书,忘了挪位置,后面再找又得重新翻。
BookLore 的智能书架,彻底改变了这个习惯。
你只需要设定规则,比如:
最近新增的书
未读完的作品
某个作者的所有书
阅读进度低于 20% 的书
规则设一次,之后就不用再管了。
在电子阅读器上读了一半的书,会自动出现在“未读完”;
哪天读完,它又会自动从这个书架里消失。
整个过程不需要你手动干预,比自己分类省心得多。
甚至它还支持多用户,以及创建家庭和群组,每个人都可以拥有自己的阅读进度。
自动整理,才是最省心的地方
真正让我留下来的,是 BookLore 的自动整理能力。
以前整理一本书,要做的事不少:
改文件名
找高清封面
填作者、出版社
有译者的还要反复确认
现在流程简单到几乎没有成本:
文件扔进 BookDrop 文件夹,剩下的交给系统。
不管是中文小说、外文译本,还是文件名一团糟的旧资源,BookLore 几乎都能自动识别并补全信息:
封面
作者
出版信息
书籍内容简介
甚至于评分
有一次我一次性丢了五十多本漫画进去,等我倒杯水回来,系统已经按系列整理完成,卷数也没有出错。
那一刻是真的体会到什么叫“人不用参与”。
多设备同步,用过就回不去
以前我看书,总得想着这本书我看到哪来着?
现在完全不用。
晚上用 电子阅读器 看《盗墓笔记》一直到凌晨两点,实在熬不住了强迫自己睡觉。
第二天早上地铁上用手机打开 BookLore,直接打开从昨晚的那一页继续看;
回家用电脑打开,进度依然保持一致。
而且 BookLore 支持 OPDS 协议,常用阅读器均支持连接,不管用什么设备,阅读进度都能保持同步。
一旦习惯了这种状态,你就再也不想回到“手动找页码”的时代。
对 NAS 用户来说,最重要的是掌控感
对 NAS 玩家来说,功能多不多是一回事,
数据是不是完全在自己手里,才是核心。
BookLore 的所有数据——
电子书文件
阅读进度
注解和标记
全部存放在自己的 NAS 上,不依赖任何第三方云服务。
它是开源项目,没有订阅费,没有广告,也不用担心哪天平台关停导致数据丢失,用起来非常安心。
写在最后
现在,我那几百上千本电子书终于各归其位:
搜书快
续读顺
整理基本不用操心
如果你也有一堆电子书躺在硬盘里,又刚好在用NAS,
那 BookLore 基本属于那种 “装上就不会卸载” 的项目。
它不追求炫技,却把每个核心需求都做得很扎实,
让电子书真正变成了一种可以长期管理、随时取用的个人资产。
为此我单独写了一篇
飞牛 NAS 部署 BookLore 的完整实操教程,
如果你也正被电子书管理问题困扰,这个组合,确实值得一试。
部署教程
演示在飞牛NAS上部署,其他系统请安装好Docker和docker compose
打开飞牛NAS的系统设置--SSH--SSH功能--启用
使用终端软件通过SSH连接到NAS,并切换到root状态下。
演示在飞牛NAS上创建一个docker文件夹,作为部署所有项目的总文件夹(其他NAS系统可自行创建一个docker文件夹)
打开飞牛的文件管理,点击docker共享文件夹--右键详细信息--常规--位置,复制该文件夹原始路径。
在终端软件内进入该文件夹位置
# 将 /vol1/1000/docker 换成你实际的文件夹路径 cd /vol1/1000/docker创建并进入项目文件夹
mkdir booklore && cd booklore创建所需的子文件夹
mkdir -p data books bookdrop mariadb/config创建后目录结构应为:
booklore/ ├── data/ ├── books/ ├── bookdrop/ └── mariadb/ └── config/编辑docker-compose.yml项目文件
vi docker-compose.yml按字母
i键进入编辑模式,复制并粘贴下面的模板代码,按Esc键退出编辑模式,输入:wq保存并退出。
(按需修改下面的模板代码)services: booklore: image: booklore/booklore:latest # 国内访问 GitHub 慢,可优先用 Docker Hub # image: ghcr.io/booklore-app/booklore:latest container_name: booklore environment: - USER_ID=${APP_USER_ID} - GROUP_ID=${APP_GROUP_ID} - TZ=${TZ} - DATABASE_URL=${DATABASE_URL} - DATABASE_USERNAME=${DB_USER} - DATABASE_PASSWORD=${DB_PASSWORD} - BOOKLORE_PORT=${BOOKLORE_PORT} depends_on: mariadb: condition: service_healthy ports: - "${BOOKLORE_PORT}:${BOOKLORE_PORT}" volumes: # BookLore 程序数据 - ./data:/app/data # 可将 ./data 换成完整的文件夹路径 # 正式书库目录(长期保存) - ./books:/books # 可将 ./books 换成完整的文件夹路径 # 自动导入目录(BookDrop) - ./bookdrop:/bookdrop # 可将 ./bookdrop 换成完整的文件夹路径 healthcheck: test: wget -q -O - http://localhost:${BOOKLORE_PORT}/api/v1/healthcheck interval: 60s retries: 5 start_period: 60s timeout: 10s restart: unless-stopped mariadb: image: lscr.io/linuxserver/mariadb:11.4.5 container_name: mariadb environment: - PUID=${DB_USER_ID} - PGID=${DB_GROUP_ID} - TZ=${TZ} - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} - MYSQL_DATABASE=${MYSQL_DATABASE} - MYSQL_USER=${DB_USER} - MYSQL_PASSWORD=${DB_PASSWORD} volumes: # MariaDB 数据持久化目录 - ./mariadb/config:/config # 可将 ./mariadb 换成完整的文件夹路径 restart: unless-stopped healthcheck: test: ["CMD", "mariadb-admin", "ping", "-h", "localhost"] interval: 5s timeout: 5s retries: 10编辑.env文件
vi .env按字母
i键进入编辑模式,复制并粘贴下面的模板代码,按Esc键退出编辑模式,输入:wq保存并退出。
(按需修改下面的模板代码)######################################## # 🎯 BookLore Application Settings ######################################## # 容器内进程用户(飞牛 NAS 用 root 最省心) APP_USER_ID=0 APP_GROUP_ID=0 # 时区:上海(强烈建议这样改) TZ=Asia/Shanghai # BookLore Web 访问端口,可自行修改。 BOOKLORE_PORT=6060 ######################################## # 🗄️ Database Connection (BookLore) ######################################## # ⚠️ mariadb 是 docker-compose 中的服务名,不要改成 IP DATABASE_URL=jdbc:mariadb://mariadb:3306/booklore # BookLore 使用的数据库账号 DB_USER=booklore DB_PASSWORD=ChangeMe_BookLoreApp_2025! ######################################## # 🔧 MariaDB Container Settings ######################################## # linuxserver/mariadb 推荐使用 1000 DB_USER_ID=1000 DB_GROUP_ID=1000 # MariaDB root 密码(只在容器内部使用) MYSQL_ROOT_PASSWORD=ChangeMe_MariaDBRoot_2025! # 默认创建的数据库名 MYSQL_DATABASE=booklore执行命令创建项目容器
docker compose up -d 或 docker-compose up -d查看项目容器的实时日志,按
Ctrl+C中断查看。docker compose logs -f 或 docker-compose logs -f
访问BookLore
初始化账户
打开浏览器,以NAS的IP地址+设置的端口进行访问
以本机为例:http://192.168.88.130:6060
根据提示创建一个管理员账户(默认是英文页面,可以自行打开浏览器翻译)
输入你创建的管理员账户然后登录

新手指引
点击创建一个自己的图书馆

这个图书馆就是你手动设置的书籍分类,演示就默认混合在一起,不做分类。
根据提示进行设置,然后点击下一步继续前往目录。
点击添加书籍目录

因为演示选择的全部书籍混合在一个分类里,所以直接选择bookdrop文件夹(自动识别放入的书籍)
如果你有分类的需求,可以选择下面的books文件夹(需自行在NAS上的books文件夹内创建好分类文件夹,然后在这里再添加)。
选择好文件夹之后点击创建库

书籍库已经创建完成

导入书籍
把你下载好的书籍文件放入到NAS上的文件夹内(根据你的需求放入 books / bookdrop 文件夹内)

刷新一下页面即可看到自动识别到符合格式的书籍

随意点开一个可以看到书籍详情

点击进入阅读(PC页面)

移动端的适配做的也挺好的

在设置中还有更多自定义功能任你选择,这里就不再演示,大家自己点击看看即可。
唯一的遗憾是该项目暂未适配中文,但内容处理是支持中文的。而且我们上传的资源基本都是中文命名,使用起来问题不大。
如果你找不到免费的书籍下载地址,可以关注下方微信公众号,回复
书籍下载自助获取免费书籍下载地址。
相关地址
GitHub项目地址:https://github.com/booklore-app/booklore
官方演示地址:demo.booklore.org
👤 Username:booklore
🔑 Password:9HC20PGGfitvWaZ1
- 感谢你赐予我前进的力量

