剪藏#剪藏#青檬小栈

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

2026 年 3 月 15 日1 分钟
分享Twitter / XTelegram微博

Notion image

简介

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

Notion image

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

https://github.com/booklore-app/BookLore

Notion image

核心特点

  • 自托管部署:完全运行在 NAS 或个人服务器上,数据与隐私完全由用户掌控

  • 现代化 Web 界面:响应式设计,支持桌面端与移动端浏览和阅读

  • 图书集中管理:通过图书馆(Library)与书架(Shelf)结构对电子书进行分类整理

  • 自动元数据识别:支持自动获取书籍封面、作者、简介等元数据,也可手动编辑

  • 内置在线阅读器:直接在浏览器中阅读 EPUB、PDF,并记录阅读进度

  • 多用户支持:可创建多个账号并分配不同访问与管理权限

  • Docker 友好:官方推荐使用 Docker / Docker Compose,适合 NAS 环境快速部署

搭建部署

BookLore 推荐通过Docker + Docker Compose安装部署,适合在支持 Docker 的 NAS(如 Synology、QNAP)上运行,所以本次将以Compose的形式部署在群晖中。

创建书籍目录

在群晖中新建一个共享文件夹,我是将所有的书籍都放在这个目录中。

Notion image

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

Notion image

上传书籍到文件夹中:

Notion image

创建持久化目录

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

Notion image

JAVASCRIPT
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**:

Notion image

创建容器

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

Notion image

选择创建 docker-compose.yml填入以下的内容,怕你们网不好,所以我加入了加速地址:

JAVASCRIPT
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
      retries5
      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
      retries10

点击下一步构建容器:

Notion image

访问服务

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

Notion image

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

Notion image

创建书库

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

Notion image

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

Notion image

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

Notion image

阅读效果:

Notion image

到此文章就写完了,这样 nas 里就多出了一个图书管理服务,这个服务还是非常强大的。

欢迎大家关注我的公众号,将会为大家推荐更优质的内容!

原文地址: https://mp.weixin.qq.com/s?__biz=MzkwODYyNTY4MQ==&mid=2247490367&idx=1&sn=6695ad6d57ebade1de57be1cacf4d1cb&chksm=c1dfd551f16e3818a387e52f1d5d34ada9ae5fb05b4eb6e2aa21f8c5f0f0c7b04c6fd13b4263&mpshare=1&scene=1&srcid=0315pMiaBsoj2ttHEDar99d1&sharer_shareinfo=1e96ef0463646af92ff0dd068cf49c1b&sharer_shareinfo_first=1e96ef0463646af92ff0dd068cf49c1b#rd

相关文章