news 2026/2/12 23:36:02

Booklore自建图书馆

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Booklore自建图书馆

最近体验了一款开源自托管电子书管理系统——BookLore,感觉非常适合个人或小型社群搭建自己的数字图书馆。它支持多种电子书格式,拥有现代化的网页界面和多用户功能,能自动抓取封面和元数据,还支持OPDS和第三方阅读器同步。安装上手也比较简单,支持Docker部署。日常管理如新建Library、上传书籍、书架分类都很方便,统计和设置也很强大。唯一要注意的是资源消耗较高,适合配置稍高一点的服务器。

最近一直在找一个能放电子书的地方,也不算是一个仓库。但至少是平时要看的书可以放在这里,因为是通过Web打开,所以在不同的终端上可以保持相同的进度和书签。曾经使用过Calibre‑Web,这个是用得最多的,但是感觉UI比较传统。当然了,我是比较无知的,可能会有更好的项目。

1. 介绍

BookLore 是一款 自托管(Self‑Hosted)数字图书管理系统,旨在帮助用户优雅地管理、组织并阅读个人电子书收藏。它提供现代化、响应式的网页界面,支持多用户访问、多格式阅读、自动元数据抓取、智能书架等功能,让你可以在完全掌控数据的前提下,搭建属于自己的私有数字图书馆。

作为一个开源项目,BookLore 支持 EPUB、PDF、CBZ/CBX 等格式,并能从 Goodreads、Amazon、Google Books 等来源自动获取书籍封面与信息,实现“放进去即可归档”的顺畅体验。此外,它还提供多用户权限控制、BookDrop 自动导入、OPDS 支持、KOReader/Kobo 同步等高级功能,非常适合个人读者、家庭使用者、小型阅读社群,或希望替代 Calibre Web 的用户。

2. 安装

2.1 官方安装

官方Github上提供的安装操作已经足够用了,可以直接跑起来。

创建一个.env文件,包含如下信息。

# 🎯 BookLore Application Settings APP_USER_ID=0 APP_GROUP_ID=0 TZ=Etc/UTC BOOKLORE_PORT=6060 # 🗄️ Database Connection (BookLore) DATABASE_URL=jdbc:mariadb://mariadb:3306/booklore DB_USER=booklore DB_PASSWORD=ChangeMe_BookLoreApp_2025! # 🔧 MariaDB Container Settings DB_USER_ID=1000 DB_GROUP_ID=1000 MYSQL_ROOT_PASSWORD=ChangeMe_MariaDBRoot_2025! MYSQL_DATABASE=booklore

Docker Compose文件内容如下。

services:booklore:image:booklore/booklore:latest# Alternative: Use GitHub Container Registry# image: ghcr.io/booklore-app/booklore:latestcontainer_name:bookloreenvironment:-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_healthyports:-"${BOOKLORE_PORT}:${BOOKLORE_PORT}"volumes:-./data:/app/data-./books:/books-./bookdrop:/bookdrophealthcheck:test:wget-q-O-http://localhost:${BOOKLORE_PORT}/api/v1/healthcheckinterval:60sretries:5start_period:60stimeout:10srestart:unless-stoppedmariadb:image:lscr.io/linuxserver/mariadb:11.4.5container_name:mariadbenvironment:-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/config:/configrestart:unless-stoppedhealthcheck:test:["CMD","mariadb-admin","ping","-h","localhost"]interval:5stimeout:5sretries:10

2.2 HTTPS

我的老习惯,肯定是放在Nginx反代的后面,提供HTTPS的连接。区别就是不需要再映射端口到外面了。还需要添加一个booklore的Docker网络,然后将booklore放到nginx的Docker网络中就OK了。

services:booklore:image:ghcr.io/booklore-app/booklore:latestcontainer_name:bookloreenvironment:-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_healthyexpose:-6060networks:-nginx-booklorevolumes:-./data:/app/data-./books:/books-./bookdrop:/bookdrophealthcheck:test:["CMD-SHELL","wget -q -O - http://localhost:${BOOKLORE_PORT}/api/v1/healthcheck || exit 1"]interval:60sretries:5start_period:60stimeout:10srestart:unless-stoppedmariadb:image:lscr.io/linuxserver/mariadb:11.4.5container_name:mariadbenvironment:-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}networks:-booklorevolumes:-./mariadb/config:/configrestart:unless-stoppedhealthcheck:test:["CMD","mariadb-admin","ping","-h","localhost"]interval:5stimeout:5sretries:10networks:nginx:external:truebooklore:external:true

Nginx的配置文件我就抄别的APP的,改了一下反代的地址。

server { listen 443 ssl; server_name YOUR_DOMAIN_NAME; ssl_certificate /etc/nginx/certs/fullchain.pem; ssl_certificate_key /etc/nginx/certs/privkey.pem; # SSL/TLS Security Settings ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_ciphers HIGH:!aNULL:!MD5; # Enable HSTS add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always; location / { proxy_pass http://booklore:6060; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; client_max_body_size 50M; } }

3. 使用教程

新建完会让你设置admin的账号密码,然后就可以登录了。进来之后需要新建Library,才能上传书籍。有书之后的界面如下:

3.1 新建Library


新建Library需要指定在存在哪个系统的文件夹。因为是使用的Docker镜像,我们只映射了这两个文件夹,所以就选book就行了。Library就是图书馆,一个就够用了。分类可以靠书架Shelf。另一个bookdrop文件夹,是支持扫描新加图书的位置。

3.2 新建Shelf

书架就是对一类书的包含,直接新建就可以了。

3.3 上传书籍

上传有两种方式,一种就是通过我们刚才新建的Library。上传之后,需要重新刷新页面才能显示新上传的书籍。

还有一种方式就是通过另一个选项Bookdrop。

到这个Bookdrop区域,然后选择放到哪个Library里。对于一次上传多个文件,且需要放到不同的Library的情况下还是有用的。对于单Library的话,就更繁琐了。

3.4 书籍详情页

在All Books,Library或是Shelves里,鼠标放到书上会有两个图标。上面的是详情页,下面的直接阅读。

更新封面和详细信息

譬如这本书没有封面和详细信息,可以通过Search Metadata,单箭头来更新封面,双箭头更新详细信息,最后保存。


其它选项

可以给书籍打分,写笔记,还可以将书籍发送到邮箱。

3.5 打开书籍

它自带PDF和EPUB的阅读器。下面是PDF的阅读器的样子。

下面是EPUB的阅读器,感觉像是IPAD的IBOOK的感觉。


3.6 统计数据

它的统计功能实在是强大了,有Library和阅读信息的统计。对于喜欢数据的朋友来说是福音了。

3.7 设置

有各种的设置,包括阅读器,详细信息,邮件,用户,认证,设备等。

4. 资源消耗

由于后端是用Java写的,所以资源的消耗是相对比较高的。

现在是只有我一个用户,空闲的时候,占用400多M的内存。上传文件和打开书籍时,CPU和内存的占用都会提高。再加上数据库,一个人用的多时候会用到将近700M的内存。对于2核2G的轻量服务器,也就算是刚好够用吧,毕竟还得有几个其它的服务。

📚 延伸阅读

更多内容持续更新于我的博客:https://www.zenseek.site

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/6 15:17:44

NDS文件修改与ROM定制工具Tinke全攻略

NDS文件修改与ROM定制工具Tinke全攻略 【免费下载链接】tinke Viewer and editor for files of NDS games 项目地址: https://gitcode.com/gh_mirrors/ti/tinke NDS游戏个性化修改正成为怀旧玩家与独立开发者的新宠,而Tinke作为一款开源编辑工具,…

作者头像 李华
网站建设 2026/2/8 22:12:28

软件优化补丁安装配置完全指南

软件优化补丁安装配置完全指南 【免费下载链接】HS2-HF_Patch Automatically translate, uncensor and update HoneySelect2! 项目地址: https://gitcode.com/gh_mirrors/hs/HS2-HF_Patch 当你在使用软件过程中遇到界面错乱、功能缺失或性能瓶颈时,一个优质的…

作者头像 李华
网站建设 2026/2/12 16:13:37

Glyph在新闻摘要生成中的高效应用实例

Glyph在新闻摘要生成中的高效应用实例 1. 为什么新闻编辑需要Glyph这样的工具 你有没有遇到过这样的情况:手头有一篇3000字的行业深度报道,领导要求10分钟内提炼出300字以内的核心摘要,还要兼顾关键数据、人物观点和事件脉络?传…

作者头像 李华
网站建设 2026/2/5 11:24:32

探索d2s-editor:5大核心功能解锁暗黑破坏神2存档修改新可能

探索d2s-editor:5大核心功能解锁暗黑破坏神2存档修改新可能 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor d2s-editor是一款基于Web的开源工具,专为《暗黑破坏神2》及其重制版设计,提供存档文…

作者头像 李华
网站建设 2026/2/7 14:53:35

突破音乐禁锢:2025年跨平台音频解密工具全攻略

突破音乐禁锢:2025年跨平台音频解密工具全攻略 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地址: https://gitc…

作者头像 李华
网站建设 2026/2/12 18:10:29

面向工业控制的Vitis安装环境配置详解

以下是对您提供的博文内容进行 深度润色与专业重构后的版本 。我以一位深耕工业控制与FPGA开发一线十年以上的嵌入式系统工程师视角,彻底重写了全文——去除所有AI腔调、模板化结构和空泛表述;强化真实工程语境下的痛点捕捉、权衡取舍与落地细节&#…

作者头像 李华