BookLore + NAS:搭建专属自托管电子书库,元数据自动刮削


简介
BookLore是一款用于组织、管理和阅读个人书籍(包括 PDF、EPUB 电子书等)的自托管 Web 应用程序。它提供直观、响应式的用户界面,使用户可以在家庭 NAS 或服务器上集中管理书籍收藏、跟踪阅读进度,并通过 Web 浏览器直接阅读或将目录推送到其他阅读设备。该项目开源托管于 GitHub,适合技术爱好者和有大量电子书的用户构建私人图书库。

BookLore 不依赖任何第三方云服务,所有数据托管在自己控制的环境中,用户对自己的图书和阅读记录拥有完全控制权。

核心特点
-
自托管部署:完全运行在 NAS 或个人服务器上,数据与隐私完全由用户掌控
-
现代化 Web 界面:响应式设计,支持桌面端与移动端浏览和阅读
-
图书集中管理:通过图书馆(Library)与书架(Shelf)结构对电子书进行分类整理
-
自动元数据识别:支持自动获取书籍封面、作者、简介等元数据,也可手动编辑
-
内置在线阅读器:直接在浏览器中阅读 EPUB、PDF,并记录阅读进度
-
多用户支持:可创建多个账号并分配不同访问与管理权限
-
Docker 友好:官方推荐使用 Docker / Docker Compose,适合 NAS 环境快速部署
搭建部署
BookLore 推荐通过Docker + Docker Compose安装部署,适合在支持 Docker 的 NAS(如 Synology、QNAP)上运行,所以本次将以Compose的形式部署在群晖中。
创建书籍目录
在群晖中新建一个共享文件夹,我是将所有的书籍都放在这个目录中。

记得在配置用户权限时,给ContaineManager分配读写权限:

上传书籍到文件夹中:

创建持久化目录
我的compose的配置都是放在docker文件中的,通过群晖的文本编辑器在持久化目录中创建一个env.txt:

BOOKLORE_IMAGE_TAG=latest
TZ=Asia/Shanghai
# 这里自行配置一个强密码
MYSQL_ROOT_PASSWORD=设置一个复杂的密码
# 这个是存放持久化文件路径的位置根据自己的目录进行修改
BOOKLORE_DATA_PATH=/volume1/docker/BookLore/data
BOOKLORE_BOOKDROP_PATH=/volume1/docker/BookLore/bookdrop
MARIADB_CONFIG_PATH=/volume1/docker/BookLore/config
# 这是存放书籍的共享文件夹的位置
BOOKLORE_BOOKS_PATH=/volume1/书籍专区然后改名为**.env**:

创建容器
配置完成之后,打开ContainerManager,在项目中新增一个项目,项目名称可以自定义,路径选择创建的持久化目录:

选择创建 docker-compose.yml填入以下的内容,怕你们网不好,所以我加入了加速地址:
services:
booklore:
image: ghcr.milu.moe/booklore-app/booklore:${BOOKLORE_IMAGE_TAG}
container_name: booklore
environment:
- TZ=${TZ}
- DATABASE_URL=jdbc:mariadb://mariadb:3306/booklore
- DATABASE_USERNAME=booklore
- DATABASE_PASSWORD=${MYSQL_ROOT_PASSWORD}
- BOOKLORE_PORT=6060
- SWAGGER_ENABLED=false
- FORCE_DISABLE_OIDC=false
depends_on:
mariadb:
condition: service_healthy
ports:
- "6060:6060"
volumes:
- ${BOOKLORE_DATA_PATH}:/app/data
- ${BOOKLORE_BOOKS_PATH}:/books
- ${BOOKLORE_BOOKDROP_PATH}:/bookdrop
healthcheck:
test: wget-q-O - http://localhost:6060/api/v1/healthcheck
interval: 60s
retries: 5
start_period: 60s
timeout: 10s
restart: unless-stopped
mariadb:
image: docker.1ms.run/linuxserver/mariadb:11.4.8
container_name: mariadb
environment:
- TZ=${TZ}
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- MYSQL_DATABASE=booklore
- MYSQL_USER=booklore
- MYSQL_PASSWORD=${MYSQL_ROOT_PASSWORD}
volumes:
- ${MARIADB_CONFIG_PATH}:/config
restart: unless-stopped
healthcheck:
test: ["CMD", "mariadb-admin", "ping", "-h", "localhost"]
interval: 5s
timeout: 5s
retries: 10点击下一步构建容器:

访问服务
当容器构建成功后,访问6060端口,首次访问需要注册账户:

创建完管理员账户后,会进入到主界面:

创建书库
在主界面先新建一个书库点击Create Your Library来新建一个:

第二步就是选择书籍目录:

新增完之后,刷新页面应该就能看到添加的图书:

阅读效果:

到此文章就写完了,这样 nas 里就多出了一个图书管理服务,这个服务还是非常强大的。
欢迎大家关注我的公众号,将会为大家推荐更优质的内容!