拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

拆解Grimmory技术栈:Spring Boot+Angular+MariaDB自托管图书库架构深度解析

拆解Grimmory技术栈:Spring Boot+Angular+MariaDB自托管图书库架构深度解析 拆解Grimmory技术栈Spring BootAngularMariaDB自托管图书库架构深度解析【免费下载链接】grimmoryA self-hosted library for your ebooks, comics, and audiobooks项目地址: https://gitcode.com/gh_mirrors/gr/grimmoryGrimmory 是一个自托管图书库self-hosted library帮你把电子书、漫画和有声书统一管起来智能书架、自动元数据抓取、浏览器内阅读器、Kobo/OPDS 设备同步一应俱全。它的技术架构由三大支柱撑起——Spring Boot 4 后端、Angular 22 前端、MariaDB 数据库再通过多阶段 Docker 构建打成单一镜像一键部署。这篇文章带你从整体架构到每个模块逐层拆解这套自托管电子书管理方案的工程细节 项目全景一屏看懂三大核心组件Grimmory 采用经典的前后端分离 统一打包架构仓库目录结构一目了然组件技术选型职责后端Java 25 Spring Boot 4.1 Hibernate ORM 7HTTP API、鉴权、元数据、文件处理、后台任务前端Angular 22 TypeScript Tailwind CSS单页应用SPA阅读器、书架管理、设置数据库MariaDB 11.4 Flyway书目、用户、进度、审计日志等结构化数据部署多阶段 Docker 构建前端产物打进后端 jar单容器 单端口交付关键入口文件后端启动类BookloreApplication.java后端构建脚本build.gradle.kts前端依赖清单package.json生产镜像定义Dockerfile 值得注意的设计构建时 Angular 的dist产物会被 Gradle 拷贝进 Spring Boot 的static目录最终只有一个 jar 在跑无需 Nginx 反代前端静态资源运维成本极低。后端架构Spring Boot 4 的现代化服务端后端是整套系统的心脏模块划分清晰backend/src/main/java/org/booklore/下按controller/service/repository/model分层共 50 个 Controller 覆盖书籍、书架、Kobo、OPDS、Komga、元数据等全部领域。核心框架栈Spring Boot 4.1.1 Java 25启用了语言预览特性--enable-preview并发模型使用虚拟线程——Tomcat 平台线程上限仅 10真正的并发交给虚拟线程处理这在 application.yaml 中有明确注释Spring Data JPA Hibernate 7.4所有数据访问走 JPA 仓库方法官方约定禁止随意引入原生 SQLSpring Security OIDC支持本地账号和 OIDC 登录如 PocketID还有远程代理头鉴权forward auth模式WebSocket STOMP向前端实时推送元数据进度、任务状态等事件Caffeine 缓存 springdoc OpenAPI热数据缓存、可按需开启 API 文档API_DOCS_ENABLEDtrue多媒体处理能力才是灵魂作为自托管图书库Grimmory 后端集成了大量硬核格式处理库能力依赖库PDF 渲染/解析pdfium4j按目标平台分发原生库支持交叉编译EPUB 解析epub4j项目自维护 fork有声书元数据M4B/MP3/OPUSjaudiotaggerCBR 漫画压缩包junrar commons-compress文件类型嗅探Apache TikaKobo KEPUB 转换容器内置 kepubify 二进制音频探测容器内置 ffprobe源自 static-ffmpeg这套组合拳让丢一个 EPUB 进去封面、简介、评分自动齐活的元数据流程成为可能——数据源包括 Google Books、Open Library 和 Amazon详见后端开发文档 backend/DEVELOPMENT.md。前端架构Angular 22 单页应用的工程实践前端采用Angular 22 TypeScript功能以 feature-based 方式组织在frontend/src/app/features/下目录即文档book/书库、readers/阅读器、metadata/元数据、settings/设置、stats/统计等。几个亮点四大内置阅读器ebook-readerFoliate.js 驱动、pdf-readerembedpdf/WASM、cbx-reader漫画、audiobook-player全部跑在浏览器里支持标注、高亮和进度同步状态管理TanStack Query 管理服务端缓存RxJS 处理流式数据实时通信stomp/rx-stomp 订阅后端 WebSocket 事件PWA 支持Angular Service Workerngsw-config.json 完整的 Web App Manifest离线可访问国际化21 种语言的 JSON 词条位于 frontend/src/i18n/通过 Crowdin 协作翻译质量保障Vitest 单测 Playwright E2Eplaywright/login-and-books.spec.ts数据库架构MariaDB Flyway 版本化迁移生产环境使用MariaDB 11.4Docker Compose 中采用 linuxserver 镜像测试环境切换为 H2 内存库。Grimmory 使用Flyway管理全部表结构变更迁移脚本位于backend/src/main/resources/db/migration/已积累100 个带版本号的 SQL 文件如V106__Add_physical_book_support.sql、V118__Create_pdf_annotations_table.sql每次升级容器Flyway 自动增量执行新脚本——升级不丢数据这是自托管项目长期维护的刚需数据模型覆盖书籍、书架、阅读进度、Kobo 同步状态、审计日志、OIDC 用户映射等 390 个实体模型文件一键部署多阶段 Docker 构建流水线Dockerfile 是一条教科书级的四段式流水线frontend-buildnode:24-alpine pnpm 离线安装依赖构建 Angular 生产包backend-buildgradle:9.5.1-jdk25-alpine执行bootJar并把前端dist注入 jar工具层从static-ffmpeg摘出ffprobe按 CPU 架构amd64/arm64拉取kepubify二进制运行层eclipse-temurin:25-jre-alpine作为最终基底只装libstdc、libarchive等最小依赖暴露6060 端口生产镜像还内置了 JVM 调优参数Shenandoah GC、字符串去重、60% 内存上限和健康检查/api/v1/healthcheck。官方提供了三套部署方案可按环境任选Docker Composedeploy/compose/docker-compose.ymlKubernetes Helmdeploy/helm/grimmory/Chart.yamlPodman Quadletdeploy/podman/quadlet/README.md最快上手三步部署自托管图书库准备.env填写数据库地址与账号示例见仓库 README复制并修改 docker-compose.yml挂载./books书库、./bookdrop自动导入目录执行docker compose up -d打开http://localhost:6060创建管理员账号支持格式一览EPUB / MOBI / AZW3 / FB2电子书、PDF、CBZ / CBR / CB7漫画、M4B / MP3 / OPUS有声书。若需 OIDC 登录可参考 docs/OIDC-Setup-With-PocketID.md。总结为什么这套架构值得参考维度设计取舍部署极简前后端打进一个 jar单容器 单端口无 Nginx数据可靠Flyway 版本化迁移升级零风险格式全能8 种多媒体格式处理库 原生二进制工具可扩展本地/OIDC/代理鉴权三模式支持 NFS 网络存储模式高性能Java 25 虚拟线程 Caffeine 缓存 前端虚拟滚动Grimmory 证明了一件事自托管图书库不一定要重——Spring Boot Angular MariaDB 的黄金组合配上克制的打包策略就能交付一个开箱即用的家庭数字图书馆 如果你想动手研究可以从 backend/DEVELOPMENT.md 和 frontend/DEVELOPMENT.md 入手官方文档也随源码完整提供。【免费下载链接】grimmoryA self-hosted library for your ebooks, comics, and audiobooks项目地址: https://gitcode.com/gh_mirrors/gr/grimmory创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表