开源多用户图书追踪系统LibrisLog

简介

什么是 LibrisLog ?

LibrisLog 是一个开源的多用户图书追踪 Web 应用。它可以帮助你管理阅读清单、追踪阅读进度、获取丰富的阅读统计数据,所有数据都存储在你自己的服务器上。

主要特点

  • 完全自托管 :基于 MIT 协议开源,无广告、无追踪、无厂商锁定,数据完全由你掌控
  • 无需 API 密钥 :开箱即用支持 Open Library,可选添加 Google BooksHardcover.app 获取更丰富的搜索结果
  • 丰富的阅读洞察:日历热力图、语言/状态/页数分布图表、每月/每年完成书籍数、热门作者等统计一应俱全
  • 多用户支持 :内置管理员/普通用户角色,支持可选的 OIDC 单点登录,每个用户拥有独立的书库
  • 灵活的数据导入 :支持 Goodreads CSV 自动字段映射、通用 CSV 自定义转换、JSON、带封面的 ZIP 格式
  • ISBN 扫码 :手机浏览器实时扫描 ISBN 条形码,无需安装原生应用
  • 多来源封面获取 :自动从 AbeBooksOpen LibraryAmazonHardcover 搜索封面,支持手动上传或 URL 粘贴
  • 完整 REST APIOpenAPI 文档化的后端接口,可脚本化调用,构建自己的前端或连接智能家居
  • 轻量级架构 :仅需两个 Docker 容器和一个 SQLite 数据库
  • 双语界面:支持英语和德语,本地化框架易于扩展更多语言

应用场景

  • 个人图书馆管理:管理你的阅读清单,追踪阅读进度,记录想读、在读、已读的书籍
  • 家庭共享书库:一个实例供全家使用,每个成员拥有独立的书库空间
  • 读书会管理:小型读书会可以统一管理书籍资源和成员阅读进度
  • 阅读数据分析:通过统计图表了解自己的阅读习惯和偏好
  • 数据备份迁移 :支持 JSONCSVZIP 格式导出,随时备份和迁移数据

LibrisLog 是一个功能完整的自托管图书追踪系统,让你完全掌控自己的阅读数据。

安装

在群晖上以 Docker 方式安装。

提示LibrisLog 在低版本群晖系统上,例如 DSM 6.1.7 上会一直报错,但是 DSM 6.2.3 上没问题。估计和之前的 AH00141 错误是一样的

log 复制代码
librislog-api | RNDGETENTCNT on /dev/urandom indicates that the entropy pool does not have enough entropy. Rather than continue with poor entropy, this process will block until entropy is available.

提示 :由于镜像托管在 ghcr.io,群晖 Docker 套件无法直接搜索,需要通过命令行或 docker-compose 部署

env.txt

创建环境变量文件 env.txt

ini 复制代码
# 后端设置
DATABASE_URL=sqlite:///./data/librislog.db
GOOGLE_BOOKS_API_KEY=        # 可选 --- 详见 https://codebude.github.io/librislog/guide/api-keys
CORS_ORIGINS=["http://localhost", "http://localhost:5173"]
LOG_LEVEL=INFO               # DEBUG | INFO | WARNING | ERROR | CRITICAL
COVERS_DIR=./data/covers     # 下载的封面图片存储目录

# 生成真实密钥:openssl rand -base64 32
API_KEY_ENCRYPTION_KEY=CHANGE_ME_TO_32PLUS_CHARS  # <-- 必须修改此值
AUTH_COOKIE_NAME=librislog_session
AUTH_COOKIE_SECURE=false        # 生产环境设为 true(HTTPS)
AUTH_COOKIE_SAMESITE=lax        # lax | strict | none
AUTH_COOKIE_DOMAIN=             # 可选,如 app.example.com

# 可选 OIDC 设置(OIDC_ENABLED=false 时禁用)
OIDC_ENABLED=false
OIDC_PROVIDER_ID=oidc
OIDC_PROVIDER_NAME=Single Sign-On
OIDC_CLIENT_ID=
OIDC_CLIENT_SECRET=
OIDC_WELL_KNOWN_URL=
OIDC_SCOPE="openid email profile"

# 仪表盘名言设置
DASHBOARD_QUOTE_ENABLED=true
DASHBOARD_QUOTE_URL="https://motivational-spark-api.vercel.app/api/quotes/random"
DASHBOARD_QUOTE_CACHE_TTL=86400  # 缓存时间(秒),默认 24 小时

# 前端设置(构建时)
PUBLIC_DEFAULT_LOCALE=en     # UI 默认语言:en | de

# 封面抓取设置
THALIA_COVER_SEARCH_ENABLED=false  # 仅用于研究。未经法律评估请勿在生产环境使用。

# TLS / 反向代理设置
# 仅信任匹配 IP 的转发头。"*" 信任所有代理。
FORWARDED_ALLOW_IPS=*

提示 :记得采用 UTF-8 格式保存

如果不知道怎么设,可以只修改 API_KEY_ENCRYPTION_KEY

值可以用命令 openssl rand -base64 32 生成

docker-compose 安装

采用 docker-compose 安装,将下面的内容保存为 docker-compose.yml 文件

yaml 复制代码
services:
  backend:
    # 使用最新稳定版
    # 如需最新开发版本,将 ":latest" 替换为 ":develop"
    image: ghcr.io/codebude/librislog/librislog-api:latest
    container_name: librislog-api
    restart: unless-stopped
    env_file: env.txt
    ports:
      - "8310:8000"
    volumes:
      - ./data:/app/data

  frontend:
    # 使用最新稳定版
    # 如需最新开发版本,将 ":latest" 替换为 ":develop"
    image: ghcr.io/codebude/librislog/librislog:latest
    container_name: librislog-web
    restart: unless-stopped
    ports:
      - "8311:80"

提示 :记得采用 UTF-8 格式保存

然后通过 SSH 登录到您的群晖,执行下面的命令:

bash 复制代码
# 新建文件夹 librislog 和子目录
mkdir -p /volume1/docker/librislog/data

# 进入 librislog 目录
cd /volume1/docker/librislog

# 将 docker-compose.yml 和 env.txt 放入当前目录

# 一键启动
docker-compose up -d

运行

在浏览器中访问 http://<群晖IP>:8311 即可进入注册界面

需要设置管理员用户名和密码

虽然支持多语言,但是目前只有英文和德文

登录后即可开始添加书籍

进入 Library --> Add you first book

默认是手动添加,建议使用 Search & Import

搜索标题,然在结果中直接添加

随便加了几本

注意事项

  1. API_KEY_ENCRYPTION_KEY :这是必须修改的配置项,用于加密 API 密钥,请使用 openssl rand -base64 32 生成随机值
  2. 数据持久化 :书籍数据存储在 ./data 目录,建议定期备份该目录
  3. 端口冲突 :默认使用 83108311 端口,如需修改请调整 docker-compose.yml 中的端口映射
  4. 生产环境 :建议将 AUTH_COOKIE_SECURE 设为 true,并配置反向代理启用 HTTPS
  5. OIDC 登录 :如需使用单点登录,需先在管理界面配置 OIDC 提供商信息

参考文档

codebude/librislog: Multi-user book tracking webapp

地址:https://github.com/codebude/librislog
LibrisLog 完整文档

地址:https://codebude.github.io/librislog/
LibrisLog 快速入门指南

地址:https://codebude.github.io/librislog/guide/getting-started

相关推荐
Patrick_Wilson5 天前
从「改个端口」到 502:Next.js on k8s 的容器端口、Service 映射与 env 覆盖
docker·kubernetes·next.js
Suroy5 天前
DockerView-Go:用 Go 写一个终端 Docker 监控工具,顺便做了个 Web 仪表盘
docker
云恒要逆袭5 天前
运行你的第一个Docker容器
后端·docker·容器
宋均浩6 天前
# Docker 镜像瘦身实战:从 1.2G 到 80MB 的五个优化步骤
ci/cd·docker
程序员老赵7 天前
10 分钟部署 OpenCode:Docker 一键安装,浏览器打开就能用 AI 写代码(附完整命令与排错)
docker·容器·ai编程
WangMingHua1117 天前
LM Studio Docker 部署——本地大模型一键启动
docker
曲幽8 天前
别再用网页翻译看源码了!你的私人翻译神器LibreTranslate,部署避坑指南来了
python·docker·web·pot·translate·libretranslate·arogstranslate
武子康10 天前
调查研究-183 Apple container:Mac 上用轻量 VM 跑 Linux 容器,Swift 会改写本地容器体验吗?
docker·容器·apple
Alsn8613 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
程序员老赵13 天前
服务器没有桌面?Docker 跑个 Chrome,浏览器就能远程用
docker·容器·devops