Gestiona tu biblioteca digital con estanterías inteligentes, sincronización con Kobo y KOReader, importación automática y lector integrado, todo desplegado fácilmente en Docker.


En este tutorial vamos a explicarte cómo instalar y poner en marcha esta potente plataforma de gestión de bibliotecas digitales llamada BookLore. BookLore es una plataforma completa para gestionar bibliotecas digitales con estanterías inteligentes, sincronización con Kobo y KOReader, importación automática y soporte OPDS. Incluye lector integrado, notas privadas, compartición fácil por correo electrónico, reseñas de la comunidad y gestión multiusuario con autenticación flexible. Todo ello con un diseño optimizado para móviles.

Características de BookLore

  • 📚 Organización inteligente: Crea tu biblioteca de ensueño con estanterías personalizadas, clasificación inteligente y potentes filtros para encontrar cualquier libro al instante.
  • 👥 Gestión multiusuario: Añade usuarios con permisos granulares para acceso y control del contenido.
  • 📲 Integración con Kobo: Sincroniza fácilmente tu biblioteca con dispositivos Kobo y convierte EPUB a KEPUB automáticamente.
  • Estanterías mágicas: Colecciones dinámicas basadas en reglas que se actualizan en tiempo real —como listas inteligentes pero para libros—.
  • 🧠 Metadatos automáticos: Obtén detalles completos de los libros desde Goodreads, Amazon, Google Books y Hardcover.
  • 📤 Importación con BookDrop: Arrastra archivos a una carpeta para detección automática e importación masiva.
  • 🌐 Soporte OPDS: Conecta apps de lectura directamente a tu biblioteca para descargas inalámbricas.
  • 🔑 Autenticación flexible: Elige entre cuentas locales o proveedores externos OIDC (Authentik, Pocket ID).
  • 🔄 Sincronización KOReader: Mantén el progreso de lectura sincronizado entre KOReader y BookLore.
  • 📧 Compartición con un clic: Envía libros por correo electrónico directamente desde la interfaz.
  • 🔐 Notas privadas: Guarda anotaciones personales visibles solo para ti.
  • 🌍 Reseñas de la comunidad: Importa reseñas públicas automáticamente para enriquecer tu biblioteca.
  • 📖 Lector integrado: Lee PDFs, EPUBs y cómics con temas personalizables.
  • 📱 Preparado para móviles: Diseño totalmente responsivo y optimizado para todos los dispositivos.

Pasos previos

Antes de comenzar con la instalación, asegúrate de cumplir con los siguientes requisitos:

  • 💻 Servidor con Ubuntu 24.04 como sistema operativo base.
  • 🔐 Acceso SSH al servidor.
  • 🧑‍💻 Permisos de superusuario (root) o capacidad para ejecutar comandos con sudo.

Instalación de Docker

Para la instalación de BookLore utilizaremos Docker, para ello tendremos que instalar Docker en nuestro servidor:

Instalación de Docker en Ubuntu 24.04
Docker es una aplicación que simplifica el proceso de gestión de los procesos de las aplicaciones en contenedores. Los contenedores le permiten ejecutar sus aplicaciones en procesos aislados de recursos.

Instalación de BookLore

Primero tendremos que crear los directorios necesarios para BookLore, para ello ejecutaremos los siguientes comandos que crearán todos los directorios dentro de /opt:

mkdir -p /opt/booklore/{config,data,books,bookdrop}
mkdir -p /opt/booklore/config/mariadb

Por si tenéis curiosidad para que se usa cada directorio:

  • config/mariadb: configuración y datos de la base de datos MariaDB.
  • data: datos de la aplicación Booklore como ajustes y caché.
  • books: tu biblioteca principal de libros (guarda aquí PDFs, EPUBs, CBZs).
  • bookdrop: deja aquí libros nuevos para que Booklore los importe automáticamente.

Seguimos con la instalación, accediendo al directorio de la instalación y creando el fichero para el docker-compose.yml:

cd /opt/booklore
touch docker-compose.yml
nano docker-compose.yml

Dentro del fichero copiamos lo siguiente:

services:
  booklore:
    image: booklore/booklore-app:c0e7ec2
    # Or use the GitHub Container Registry image:
    # image: ghcr.io/booklore-app/booklore:latest
    container_name: booklore
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Etc/UTC
      - DATABASE_URL=jdbc:mariadb://mariadb:3306/booklore
      - DATABASE_USERNAME=booklore
      - DATABASE_PASSWORD=your_secure_password
      - SWAGGER_ENABLED=false
    depends_on:
      mariadb:
        condition: service_healthy
    ports:
      - "6060:6060"
    volumes:
      - /opt/booklore/data:/app/data
      - /opt/booklore/books:/books
      - /opt/booklore/bookdrop:/bookdrop
    restart: unless-stopped

  mariadb:
    image: lscr.io/linuxserver/mariadb:11.4.5
    container_name: mariadb
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Etc/UTC
      - MYSQL_ROOT_PASSWORD=super_secure_password
      - MYSQL_DATABASE=booklore
      - MYSQL_USER=booklore
      - MYSQL_PASSWORD=your_secure_password
    volumes:
      - /opt/mariadb/config:/config
    restart: unless-stopped
    healthcheck:
      test: ["CMD", "mariadb-admin", "ping", "-h", "localhost"]
      interval: 5s
      timeout: 5s
      retries: 10
💡
Recuerda de modificar las contraseñas de las variables DATABASE_PASSWORD, MYSQL_PASSWORD y MYSQL_ROOT_PASSWORD por unas contraseñas seguras.
💡
La imagen que seleccionaremos será esta versión concreta: booklore/booklore-app:c0e7ec. Si quieres, puedes entrar en hub.docker.com y revisar las etiquetas creadas por si hay alguna versión nueva disponible

Tras estos cambios, ya podemos iniciar los contenedores:

docker compose up -d

Y tras descargar todo, podemos visualizar que se ha instalado:

# docker ps --format "table {{.ID}} {{.Image}} {{.Status}} {{.Names}}"

CONTAINER ID IMAGE                               STATUS        NAMES
e9ea89b51be8 booklore/booklore-app:c0e7ec2       Up 4 minutes  booklore
a52f5257b6b1 lscr.io/linuxserver/mariadb:11.4.5  Up 4 minutes  mariadb

Configuración de Proxy Nginx

Como la aplicación se encuentra escuchando en un puerto local (6060), necesitaremos configurar un Proxy inverso con Nginx para poder acceder a ella mediante un dominio.

Para ello, puedes seguir este tutorial donde encontrarás todos los pasos detallados:

Configurar Proxy Inverso con Nginx para que escuche a un puerto interno
En ocasiones tenemos servicios o aplicaciones web que escuchan directamente a un puerto interno. Para evitar acceder a dicha aplicación o servicio por la IP del servidor, una configuración que podemos hacer es acceder desde un Nginx Proxy.
💡
Si has configurado el proxy Nginx utilizando solo HTTP, te recomendamos dar el siguiente paso y habilitar HTTPS para asegurar las conexiones. Si solo necesitas generar un certificado SSL, puedes seguir este tutorial donde se explica cómo hacerlo paso a paso: Instalación de certificado SSL con certbot

Primer contacto con la aplicación

Una vez que hemos levantado el servidor y configurado correctamente el dominio a través de Nginx Proxy, ya podemos acceder a la aplicación desde nuestro navegador utilizando el dominio o subdominio que hayamos definido.

Rellenamos los datos que nos pide y tras hacer clic en Create Admin Account, nos redirigirá al login:

Iniciamos sesión con el usuario que hemos creado anteriormente:

Aquí podre crear librerías y subir todos nuestros libros siguiendo la documentación oficial: https://booklore-app.github.io/booklore-docs/docs/library/setup-first-library


Más sobre ./voidNull

Haz que cada palabra cuente: tu donación nos inspira a seguir creando contenido. Accede al apartado de Donación para hacer tu aportación