找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2205

积分

0

好友

290

主题
发表于 昨天 01:48 | 查看: 5| 回复: 0

BookLore电子书商店界面

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

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

项目地址:https://github.com/booklore-app/BookLore

GitHub上的BookLore项目主页

核心特点

  • 自托管部署:完全运行在 NAS 或个人服务器上,数据与隐私完全由用户掌控
  • 现代化 Web 界面:响应式设计,支持桌面端与移动端浏览和阅读
  • 图书集中管理:通过图书馆(Library)与书架(Shelf)结构对电子书进行分类整理
  • 自动元数据识别:支持自动获取书籍封面、作者、简介等元数据,也可手动编辑
  • 内置在线阅读器:直接在浏览器中阅读 EPUB、PDF,并记录阅读进度
  • 多用户支持:可创建多个账号并分配不同访问与管理权限
  • Docker 友好:官方推荐使用 Docker / Docker Compose,适合 NAS 环境快速部署

搭建部署

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

创建书籍目录

首先在群晖 NAS 中新建一个用于存放所有电子书的共享文件夹。

在群晖中创建共享文件夹

记得在配置用户权限时,给 ContainerManager 用户分配读写权限,以便 Docker 容器能够访问该目录。

配置共享文件夹用户权限,赋予ContainerManager读写权限

创建完成后,将你的电子书文件上传到这个文件夹中。

将电子书文件上传至共享文件夹

创建持久化目录与配置文件

接下来,需要为 BookLore 创建持久化存储目录和配置文件。通常,我们可以将 Docker 相关的配置统一放在一个名为 docker 的文件夹中。

使用群晖的文本编辑器,在打算存放配置的目录(例如 /volume1/docker/BookLore)下创建一个名为 env.txt 的文件,并填入以下环境变量配置。

在文件管理器中创建.env配置文件

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/书籍专区

请注意:请将上述路径中的 /volume1/docker/BookLore/volume1/书籍专区 替换为你自己 NAS 上的实际路径。

编辑完成后,将此文件重命名为 .env。这个文件将为我们后续的 Docker Compose 配置提供环境变量。

重命名后的.env文件

创建并启动容器

配置文件准备就绪后,打开群晖的 Container Manager。在“项目”标签页中,点击“新增”来创建一个新项目。项目名称可以自定义(例如 booklore),路径则选择我们刚刚创建了 .env 文件的持久化目录(如 /docker/BookLore)。

在Container Manager中创建新项目

来源选择 “创建 docker-compose.yml”,然后将以下 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

粘贴完成后,点击“下一步”,Container Manager 便会开始根据配置拉取镜像并构建容器。

Container Manager正在拉取镜像并构建项目

访问并初始化服务

当容器状态显示为“运行中”后,便可以通过 http://你的NAS_IP:6060 来访问 BookLore 服务。首次访问时,需要设置一个初始的管理员账户。

BookLore初始管理员账户设置界面

创建完管理员账户后,系统会自动登录并进入主界面。

BookLore主界面,提示创建第一个图书馆

创建书库并导入书籍

现在,我们需要创建一个“图书馆”来容纳你的电子书。在主界面点击 “Create Your Library” 按钮开始创建。

第一步是设置图书馆的基本信息,如名称、图标和导入偏好。建议导入模式选择 “Each file is a book (Recommended)”

创建新图书馆-设置图书馆详情

第二步是关键,需要添加包含书籍文件的目录。点击 “Add Book Folder”,然后浏览并选择我们在 Docker Compose 配置中映射的 /books 目录(它对应着NAS上的“书籍专区”共享文件夹)。

创建新图书馆-添加书籍目录

添加完成后,点击 “Create Library”。BookLore 会自动扫描该目录下的电子书文件。稍等片刻,刷新页面,你就可以在图书馆中看到已成功导入的书籍,并且大部分书籍的封面、作者等元数据已被自动抓取。

图书馆中成功显示已导入的书籍

点击任意一本书籍,即可使用内置的阅读器开始阅读,体验流畅的在线阅读。

BookLore内置阅读器的阅读效果


至此,一个功能强大的私有电子书库就搭建完成了。通过将 BookLore 部署在家庭 NAS 上,你不仅实现了数据的完全自主,还获得了媲美商业应用的书籍管理和阅读体验。这正体现了 自托管DevOps 实践在个人数字生活中的价值。如果你对更多有趣的 自托管项目 或技术分享感兴趣,欢迎在 云栈社区 与我们交流探讨。




上一篇:Temu全球扩张与AI跨境机遇:拆解拼多多全托管电商增长逻辑
下一篇:基站主板技术解析:Altera FPGA沉金PCB工艺与电路板回收价值
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-18 18:12 , Processed in 0.279999 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表