Hay servicios del homelab que impresionan mucho en una captura y luego no usa nadie. Una biblioteca digital bien montada va justo al revés: casi no presume, pero acaba entrando en la rutina de casa.
Libros técnicos, cuentos infantiles, manuales, PDFs de garantías, cómics, audiolibros para el coche, recetas en PDF que alguien mandó por WhatsApp, manga que no quieres tener desperdigado en veinte carpetas. Todo eso puede vivir en un servidor casero sin convertirse en una catedral rara de metadatos.
La instalación de Audiobookshelf y Kavita ya la conté en otra guía. Aquí quiero mirar la parte menos vistosa: cómo organizo una biblioteca digital para que no dependa de una única aplicación, cómo separo archivos de metadatos, qué copio, qué restauraría primero y cuándo prefiero una solución más simple.
Este artículo encaja dentro de la ruta de servicios para la familia y toca también datos y copias de seguridad, porque una biblioteca digital doméstica se parece más a un pequeño archivo familiar que a otro contenedor bonito en Docker.
por qué no empiezo por la aplicación#
El error cómodo es empezar eligiendo app. Audiobookshelf, Kavita, Calibre-Web, Komga, Jellyfin con plugins, una carpeta SMB, lo que sea. Todas tienen su momento. Pero si la biblioteca acaba siendo útil, la aplicación cambia de categoría. Ya no es una prueba. Guarda progreso de lectura, usuarios, portadas corregidas, colecciones, etiquetas y a veces hábitos familiares.
Por eso prefiero empezar por una pregunta más seca: si mañana borro la aplicación, ¿los archivos siguen siendo comprensibles?
Si la respuesta es no, voy mal.
Una biblioteca digital familiar no debería ser un blob opaco que solo entiende un software. La app puede añadir comodidad, búsqueda, portadas, progreso y acceso remoto. Perfecto. Pero el núcleo debería seguir siendo una estructura de archivos que un humano pueda abrir desde otro ordenador.
Esto cambia bastante las decisiones. No meto todos los libros en una carpeta plana con nombres raros. No dejo que una herramienta renombre sin control si no entiendo el resultado. No mezclo audiolibros, ebooks, cómics y documentos personales en el mismo volumen porque todos sean “cosas para leer”. Y, sobre todo, no considero que una base de datos sea backup de los archivos.
mi estructura base#
La estructura que más me convence es aburrida y por eso mismo aguanta bien:
| |
La carpeta Inbox parece una tontería, pero para mí es la diferencia entre mantener orden y vivir con una papelera permanente dentro de la biblioteca. Todo lo que llega sin revisar entra ahí. Cuando tengo un rato, lo renombro, compruebo formato, portada y metadatos básicos, y lo muevo a su sitio.
Audiobookshelf insiste bastante en que la estructura de carpetas importa para detectar bien libros, autores y series. Su documentación oficial lo deja claro en la parte de bibliotecas y metadatos. Kavita también depende mucho del layout, especialmente en cómics, manga y series. No hace falta obsesionarse con una nomenclatura perfecta, pero sí conviene escoger una y respetarla.
Mi regla práctica: si dentro de dos años veo la carpeta sin ninguna app delante, tengo que entender qué es cada cosa.
qué guarda la app y qué guardo yo#
Aquí está la separación importante.
Los archivos originales son míos: EPUB, PDF, CBZ, CBR, MP3, M4B, portadas locales y cualquier material que quiera conservar. Eso vive en una carpeta de datos con copias propias.
La aplicación guarda otra cosa: usuarios, progreso, índices, portadas descargadas, metadatos corregidos, colecciones, tokens, ajustes, trabajos pendientes y cachés. Eso también merece copia, pero no lo trato igual que los archivos.
Si pierdo la base de datos de Audiobookshelf o Kavita, fastidia. Pierdo progreso de lectura, colecciones y trabajo de organización. Pero si tengo los archivos originales en buen estado, puedo reconstruir. Si pierdo los archivos y solo tengo una base de datos perfecta, no tengo biblioteca. Tengo una ficha policial de libros desaparecidos.
Por eso mi orden de importancia es:
- Archivos originales.
- Configuración y base de datos de cada app.
- Metadatos enriquecidos, portadas y colecciones.
- Cachés y miniaturas.
Las cachés se regeneran. Las miniaturas también. Los archivos originales no.
Audiobookshelf para audio narrativo#
Audiobookshelf es el servicio que más sentido tiene si escuchas audiolibros. No es un reproductor genérico de audio. Está pensado para capítulos, progreso, narradores, velocidad de reproducción, descargas offline y retomar donde lo dejaste.
La documentación oficial lo define como un servidor self-hosted para audiolibros y podcasts, y sus funciones incluyen copias automatizadas de metadatos. Eso me gusta, pero no lo confundo con una estrategia completa de backup. La copia automática de la app protege su estado. Mis audiolibros tienen que estar protegidos por fuera.
En casa lo plantearía así:
- Biblioteca de audiolibros montada como lectura y escritura solo para el usuario que importa contenido.
- Aplicación con permisos suficientes para leer y escribir metadatos si quiero portadas locales.
- Backup de la carpeta de configuración de Audiobookshelf.
- Backup separado del volumen donde viven los audiolibros.
- Prueba de restauración de un libro completo, no solo del contenedor.
El punto de la prueba es básico: restaurar un audiolibro, abrirlo en una instancia limpia y ver si capítulos, portada y reproducción tienen sentido. Si solo compruebo que existe un .tar.gz, sigo viviendo de fe técnica.
Kavita para ebooks, manga y cómics#
Kavita me gusta para una biblioteca visual y de lectura. Soporta muchos formatos, escanea carpetas y organiza series con bastante soltura. La wiki oficial explica que el escaneo busca nuevos archivos o cambios en carpetas, y también avisa de que hay que respetar los requisitos de layout para que la ingesta funcione bien.
Esto importa mucho en cómics y manga. Con ebooks sueltos puedes sobrevivir a cierto desorden. Con series largas, números especiales y volúmenes mezclados, el caos aparece rápido.
Para Kavita separo tres tipos de contenido:
- Ebooks normales, donde me preocupa más autor, título y formato.
- Cómics y manga, donde la numeración manda.
- PDFs técnicos, donde a veces me importa más la carpeta temática que la ficha bibliográfica.
Kavita guarda backups de la base de datos en config/backups según su propia FAQ. Bien. Aun así, mi copia externa incluye la carpeta config completa y una exportación sencilla de la estructura de archivos. Si un día tengo que restaurar, quiero poder levantar una instancia nueva, apuntarla a la carpeta de biblioteca y luego decidir si recupero la base de datos antigua o dejo que reescanee.
Ese matiz es importante. No siempre restaurar la base de datos antigua es lo mejor. Si el problema venía de metadatos rotos, una ingesta limpia puede ser preferible. Pero para progreso de lectura, colecciones y usuarios, la base de datos sí tiene valor.
OPDS y lectores externos#
OPDS es una de esas piezas pequeñas que hacen que una biblioteca self-hosted sea más útil. Es un catálogo basado en Atom y HTTP que permite explorar y descargar publicaciones desde apps compatibles. La especificación oficial de OPDS 1.2 sigue siendo una referencia útil para entender el modelo.
En la práctica, OPDS me interesa por dos motivos.
El primero es que evita depender siempre del lector web de la aplicación. Si uso un lector compatible, puedo añadir el catálogo y descargar libros desde ahí. Para tablets y algunos lectores electrónicos, esto puede ser mucho más cómodo.
El segundo es que obliga a pensar la biblioteca como catálogo, no solo como carpeta compartida. Títulos, autores, portadas y formatos importan. No por manía bibliotecaria, sino porque una biblioteca con metadatos decentes se usa más.
No montaría OPDS como primera tarea si todavía tienes veinte libros mal nombrados. Primero orden. Luego acceso cómodo.
backups: qué copio#
Para una biblioteca digital doméstica hago tres copias distintas.
La primera copia es de los archivos originales. Esto puede ir con Restic, Borg, Syncthing hacia otro NAS, snapshot ZFS replicado o la herramienta que uses. Me da igual la religión técnica. Me importa que la copia sea incremental, verificable y que no dependa de la app.
La segunda copia es de la configuración de las aplicaciones. En Docker Compose suele ser la carpeta de volúmenes. En Kubernetes serán PVCs o backups de los volúmenes persistentes. Ahí entran bases de datos SQLite, ficheros de configuración, portadas enriquecidas y metadatos locales.
La tercera copia es una lista simple de inventario. Puede ser un tree, un CSV exportado, un listado generado por script o una nota en Markdown con las bibliotecas principales. No sustituye a nada, pero ayuda mucho cuando restauras. Ver la forma esperada de la biblioteca reduce bastante la sensación de estar reconstruyendo a ciegas.
Mi prueba mínima de recuperación sería:
- Restaurar una carpeta pequeña con varios formatos.
- Levantar una instancia temporal de la app.
- Apuntar esa instancia a la carpeta restaurada.
- Comprobar lectura, reproducción, portadas y escaneo.
- Restaurar la configuración antigua solo si aporta algo.
Esto conecta bastante con la idea de probar restauraciones pequeñas. No hace falta restaurar toda la biblioteca cada mes. Una muestra bien elegida ya enseña permisos, rutas, formatos y problemas de metadatos.
permisos y acceso familiar#
Una biblioteca familiar tiene una parte técnica y otra social. La parte técnica dice usuarios, permisos y rutas. La social dice: que nadie tenga que pedirme ayuda para escuchar un audiolibro.
Intento que el acceso sea simple:
- Una URL interna o privada fácil de recordar.
- Cuentas separadas si hay progreso individual.
- Permisos de administración solo para quien organiza.
- Acceso remoto privado si se va a usar fuera de casa.
- Nada de exponer el panel entero a internet porque “total, es solo libros”.
Para acceso remoto, prefiero meterlo en la misma política que uso con otros servicios domésticos. Si es privado, va por VPN, Tailscale o una ruta protegida. Si lo publico, lo hago con autenticación y sabiendo qué expongo. Aquí viene bien leer la guía sobre Cloudflare Tunnel, Tailscale y VPN clásica.
También conviene pensar en perfiles infantiles si hay contenido para niños. No hace falta montar una censura absurda, pero sí separar bibliotecas. Infantil, técnica, ficción adulta y cómics no tienen por qué aparecer mezclados en la misma portada.
cuándo no merece la pena#
No todo el mundo necesita esto.
Si tienes diez libros y todos viven cómodamente en Kindle, Apple Books o Google Play Books, montar dos servicios puede ser más mantenimiento que beneficio. Si escuchas audiolibros solo en Audible y no tienes una biblioteca propia, Audiobookshelf no aporta gran cosa. Si tus cómics están en una app comercial que ya te funciona, tampoco hace falta convertirlo en proyecto.
Me parece buen candidato cuando hay biblioteca real, varios formatos, ganas de acceso local, copias propias y cierta alergia a depender de una sola plataforma. También cuando quieres que el material siga siendo tuyo aunque cambies de app.
El punto sano es montar lo justo. Un NAS con carpetas bien organizadas y Kavita puede ser suficiente. Audiobookshelf entra si el audio importa. Calibre sigue teniendo sentido si gestionas ebooks con mucho detalle. Una carpeta compartida puede ganar si lo único que quieres es archivo y lectura ocasional.
cómo lo empezaría hoy#
Si empezase de cero, no migraría toda la biblioteca el primer día. Haría esto:
- Crear una estructura de carpetas limpia.
- Importar diez ebooks, tres cómics y dos audiolibros.
- Probar Kavita y Audiobookshelf con esa muestra.
- Conectar un lector externo por OPDS si lo voy a usar.
- Hacer backup de archivos y configuración.
- Restaurar la muestra en una carpeta temporal.
- Solo entonces importar el resto.
Esto evita el clásico atracón de self-hosting: montas todo, importas cientos de archivos, corriges metadatos durante horas y dos semanas después descubres que la copia no incluye la base de datos o que los permisos no dejan restaurar.
Una biblioteca digital buena no empieza con una app preciosa. Empieza con datos que entiendes. La app viene después y añade comodidad. Si mañana cambio de Kavita a otra cosa, quiero llevarme mis libros. Si mañana Audiobookshelf desaparece, quiero seguir teniendo mis audiolibros ordenados. Esa es la diferencia entre autoalojar una biblioteca y encerrar otra vez tus libros, pero esta vez en tu propio servidor.