当前位置: 首页 > article >正文

个人电子书库管理器Biblioteca

在这里插入图片描述

简介

什么是 Biblioteca

Biblioteca 是一个用于管理大型电子书库的网络应用程序。它旨在提供一个简单易用的界面,帮助用户有效地管理个人图书馆。是 Calibre 和其他类似软件的替代品。

主要特点:

  • 高效的搜索功能:能够快速找到所需书籍。
  • 标签和总结:支持使用 ChatGPT 进行标签和书籍摘要。
  • 移动友好:界面设计适合各种设备。
  • Kobo 设备同步:可与 Kobo 电子书阅读器同步。
  • OPDS 支持:允许通过 OPDS 协议访问书籍。
  • 主题自定义:用户可以轻松定制界面外观。

Biblioteca 是一个开源项目,使用 GPL-3.0 许可证,旨在为用户提供一致和良好分类的图书馆管理体验。

作者之所以创建 Biblioteca,是因为想要一个简单易用的图书馆管理器,但又对现有的解决方案不满意,所以决定自己做。

安装

在群晖上以 Docker 方式安装。

需要注意的是,群晖内核版本太低会遇到下面的错误,这个 AH00141 已经遇到多次了,老苏除了换机器,也没找到其他的办法;

Function not implemented: AH00141: Could not initialize random number generator

官方镜像发布在 ghcr.io,最新版本是 0.6

服务涉及到多个容器,采用 docker-compose 方式安装

env.txt

env.txt 是软件的环境变量,直接采用了官方的 prod 版本的 .env 的内容,未做任何修改

源文件地址:https://github.com/biblioverse/biblioteca/blob/main/.env

# In all environments, the following files are loaded if they exist,
# the latter taking precedence over the former:
#
#  * .env                contains default values for the environment variables needed by the app
#  * .env.local          uncommitted file with local overrides
#  * .env.$APP_ENV       committed environment-specific defaults
#  * .env.$APP_ENV.local uncommitted environment-specific overrides
#
# Real environment variables win over .env files.
#
# DO NOT DEFINE PRODUCTION SECRETS IN THIS FILE NOR IN ANY OTHER COMMITTED FILES.
# https://symfony.com/doc/current/configuration/secrets.html
#
# Run "composer dump-env prod" to compile .env files for production use (requires symfony/flex >=1.2).
# https://symfony.com/doc/current/best_practices.html#use-environment-variables-for-infrastructure-configuration

###> symfony/framework-bundle ###
APP_ENV=prod
APP_SECRET=9653a6c476d291323d2db7417c13a814
###< symfony/framework-bundle ###

###> doctrine/doctrine-bundle ###
# Format described at https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/configuration.html#connecting-using-a-url
# IMPORTANT: You MUST configure your server version, either here or in config/packages/doctrine.yaml
#
# DATABASE_URL="sqlite:///%kernel.project_dir%/var/data.db"
# DATABASE_URL="mysql://app:!ChangeMe!@127.0.0.1:3306/app?serverVersion=8&charset=utf8mb4"
DATABASE_URL="mysql://db:db@db:3306/db?serverVersion=mariadb-10.3.39&charset=utf8"
###< doctrine/doctrine-bundle ###

###> symfony/messenger ###
# Choose one of the transports below
# MESSENGER_TRANSPORT_DSN=amqp://guest:guest@localhost:5672/%2f/messages
# MESSENGER_TRANSPORT_DSN=redis://localhost:6379/messages
MESSENGER_TRANSPORT_DSN=doctrine://default?auto_setup=0
###< symfony/messenger ###

###> symfony/mailer ###

MAILER_DSN=native://default
###< symfony/mailer ###
# .env
TYPESENSE_URL=http://typesense:8108
TYPESENSE_KEY=xyz

BOOK_FOLDER_NAMING_FORMAT="{authorFirst}/{author}/{serie}/{title}"
BOOK_FILE_NAMING_FORMAT="{serie}-{serieIndex}-{title}"

###< kobo/proxy
KOBO_PROXY_USE_DEV=0
KOBO_PROXY_USE_EVERYWHERE=0
KOBO_PROXY_ENABLED=1
###< kobo/proxy
可变
APP_ENV应用程序运行的环境。可以是 dev 或 prod。除非需要调试应用程序,否则应始终使用 prod。
APP_SECRET用于保护应用程序的密钥。请确保它是唯一的!
DATABASE_URL数据库的 URL。除非使用不同的数据库,否则您不需要更改此项。
MESSENGER_TRANSPORT_DSN不要更改它。
MAILER_DSN当前未使用。
TYPESENSE_URLTypesense 服务器的 URL。除非使用不同的服务器,否则您不需要更改此项。
TYPESENSE_KEY访问 Typesense 服务器的密钥。需要与您在 docker-compose 文件中设置的密钥相对应。
BOOK_FOLDER_NAMING_FORMAT用于命名存储书籍的文件夹的格式。可以使用以下占位符:{authorFirst}, {author}, {title}, {serie}
BOOK_FILE_NAMING_FORMAT用于命名存储书籍的文件的格式。可以使用以下占位符:{serie}, {serieIndex}, {title}
KOBO_PROXY_USE_DEV如果设置为 1,将在开发中使用 Kobo 代理。
KOBO_PROXY_USE_EVERYWHERE如果设置为 1,将在任何地方使用 Kobo 代理,并将所有请求转发到原始商店。
KOBO_PROXY_ENABLED如果设置为 0,将禁用 Kobo 代理。
ALLOW_BOOK_RELOCATION如果设置为 0,添加到库中的书籍将不会移动到正确的文件夹。这在您想要自己管理文件夹结构时很有用。

关于环境变量的官方说明:https://biblioverse.github.io/biblioteca-doc/installing/dotenv-config

docker-compose.yml

docker-compose.yml 基于官方的版本进行了微调

services:
  biblioteca:
    image: ghcr.io/biblioverse/biblioteca:main
    container_name: biblioteca-web
    command: ["/bin/sh", "-c" , "apache2-foreground" ]
    ports:
      - 8109:8080
    depends_on:
      - db
    stdin_open: true
    tty: true
    volumes:
      - ./covers:/var/www/html/public/covers
      - ./books:/var/www/html/public/books
      - ./media:/var/www/html/public/media
      - ./env.txt:/var/www/html/.env
  
  db:
    image: mariadb:10.10
    container_name: biblioteca-mariadb
    environment:
      - MYSQL_ROOT_PASSWORD=db
      - MYSQL_DATABASE=db
      - MYSQL_USER=db
      - MYSQL_PASSWORD=db
    volumes:
      - ./db:/var/lib/mysql

  typesense:
    image: typesense/typesense:27.1
    container_name: biblioteca-typesense
    restart: on-failure
    ports:
      - 8983
      - 8108
    volumes:
      - ./data:/data
    command: '--data-dir /data --api-key=xyz --enable-cors'

然后执行下面的命令

# 新建文件夹 biblioteca 和 子目录
mkdir -p /volume2/docker/biblioteca/{books,covers,data,db,media}

# 进入 biblioteca 目录
cd /volume2/docker/biblioteca

# 修改目录权限
chmod a+rw {books,covers,media}

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

# 一键启动
docker-compose up -d

如果不出意外的话,会有 3 个容器启动

运行

在浏览器中输入 http://群晖IP:8109 就能看到登录界面

如果随便输入,会显示错误,因为现在还没有 db.user

500 Internal Server Error

An exception occurred while executing a query: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'db.user' doesn't exist

导入数据

依次执行下面的命令创建数据库并新建管理员账号

# 创建数据库
docker-compose exec biblioteca bin/console doctrine:migration:migrate --no-interaction

# 创建管理员用户
docker-compose exec biblioteca bin/console app:create-admin-user [name] [password]

# 示例
docker-compose exec biblioteca bin/console app:create-admin-user admin 123456

# 创建 Typesense 索引
docker-compose exec biblioteca bin/console typesense:create

登录成功后的主界面

汉化

老苏基于官方的 translations 做了汉化文件,可以在这里下载:https://github.com/wbsu2003/synology/raw/refs/heads/main/Biblioteca/translations.zip

将其放入 biblioteca 根目录

解压到当前目录

现在的 translations 目录

现在执行下面的命令,先将文件复制到容器内

# 讲中文复制到容器中
docker cp ./translations/. biblioteca-web:/var/www/html/translations

# 清除应用的缓存
docker-compose exec biblioteca bin/console cache:clear

然后清除缓存,否则有可能界面不会有变化

进入 My Profile --> Langue,选择法文

保存之后,刷新页面,虽然并不全部是中文,但是基本上已经可以看懂了

书籍

左侧的 上传,先选择文件,再点 Upload 上传

需要点 Consume

才能在 所有书籍 中找到

可以上传封面,也可以从文件中提取封面

可以下载,也可以在网页中阅读

书架

左侧的 编辑书架 --> 新书架

创建完成后

可以将书籍放入书架

现在你的书架上就有书了

Biblioteca 目前还在比较早期,Bug 还有点多,像有些电子书,在从文件中提取封面时,比较容易遇到 500 Internal Server Error

参考文档

biblioverse/biblioteca: Biblioteca is a web application made to manage large ebook libraries and is developed aiming to help you to have consistent and well classified libraries.
地址:https://github.com/biblioverse/biblioteca

Biblioteca Book Management | Biblioteca Docs
地址:https://biblioverse.github.io/biblioteca-doc/


http://www.kler.cn/a/455782.html

相关文章:

  • Nginx区分PC端和移动端访问
  • Mysql数据 新增、修改和删除操作时,这些变化如何被转换为Kafka消息?
  • 如何删除Mac上的系统数据
  • FreeType矢量字符库的介绍、交叉编译以及安装
  • OpenLinkSaas使用手册-Git工具
  • ESP-NETIF L2 TAP 接口-物联网嵌入式开发应用
  • leetcode热题100(54. 螺旋矩阵)c++
  • 基于Debian的Linux发行版的包管理工具
  • 青训营-豆包MarsCode技术训练营试题解析四十八
  • 用于汽车碰撞仿真的 Ansys LS-DYNA
  • react里使用Day.js显示时间
  • 深度学习每周学习总结R1(RNN-心脏病预测)
  • 绝美的数据处理图-三坐标轴-散点图-堆叠图-数据可视化图
  • python应用场景随笔
  • sqoop的参数有哪些?
  • 区块链开发入门合集(1)共25节
  • Pytorch | 利用GNP针对CIFAR10上的ResNet分类器进行对抗攻击
  • w04_nlp大模型训练·中文分词
  • 再生核希尔伯特空间(RKHS)上的分位回归
  • 【MFC】多工具栏如何保存状态(续)
  • 二百八十一、ClickHouse——Linux中启动ClickHouse服务
  • Matlab个性化绘图第7期—带标记面的三维多组折线图
  • 探究C++面试高频考点:std::string的底层实现
  • Unity Dots理论学习-2.ECS有关的模块(1)
  • 【每日学点鸿蒙知识】编译文件异常、线程安全保障、正式签名7014错误、引用hsp报错、跨文件样式复用
  • 网络攻防实践