Kavita: Servidor de lectura autohospedado para cómics, manga y libros
Una solución completa, rápida y multiplataforma para gestionar y compartir tu colección de lectura
Vídeo tutorial en YouTube
Mira el vídeo completo sobre cómo instalar y usar Kavita: Servidor de lectura autohospedado para cómics, manga y libros en el canal GENBYTE:
¿Qué es Kavita: Servidor de lectura autohospedado para cómics, manga y libros?
Kavita es un servidor de lectura rápido, rico en características y multiplataforma, diseñado para ser una solución completa para todas tus necesidades de lectura. Permite configurar tu propio servidor y compartir tu colección de lectura con amigos y familiares. Soporta formatos de cómics y manga (CBR, CBZ, ZIP, RAR, RAR5, 7zip, imágenes sueltas) y libros (EPUB, PDF), ofreciendo lectores web responsivos que funcionan en cualquier dispositivo: teléfono, tablet o escritorio. El proyecto está desarrollado en C# bajo licencia GPL-3.0 y se encuentra en fase beta activa hasta el lanzamiento de la versión 1.0.0.
Características principales
Soporte multiplataforma de formatos
Sirve cómics, manga, webtoons (CBR, CBZ, ZIP, RAR, RAR5, 7zip, imágenes sueltas) y libros (EPUB, PDF) desde una única instancia.
Lectores web responsivos
Lectores de primera clase que funcionan en cualquier dispositivo (móvil, tablet, escritorio) con modos de lectura continua, webtoon y páginas virtuales para EPUB.
Temas personalizables
Soporte para temas personalizables con repositorio oficial y documentación para adaptar la interfaz a tus preferencias.
Gestión de metadatos enriquecida
Descarga de metadatos, reseñas, valoraciones, recomendaciones, scrobbling y colecciones inteligentes (disponible vía Kavita+).
Organización flexible
Agrupación mediante colecciones, listas de lectura (importación CBL), marcados de 'quiero leer' y filtros inteligentes personalizables.
Gestión de usuarios y roles
Sistema de usuarios con gestión de roles basada en restricciones de edad, capacidades dentro de la app, soporte OIDC y control de acceso granular.
Anotaciones y resaltados
Soporte nativo para anotaciones y resaltados basados en el estándar EPUB, persistentes y sincronizables.
Localización completa
Soporte total de localización gestionado a través de Weblate, con contribuciones comunitarias para múltiples idiomas.
Panel de control personalizable
Personalización del panel principal y navegación lateral con filtros inteligentes, orden personalizado y visibilidad configurable.
Requisitos del sistema
- Sistema operativo Linux (Ubuntu 24.04 Noble o compatible) para contenedor Docker
- Arquitectura compatible: linux/amd64, linux/arm64, linux/arm/v7
- Runtime .NET 8+ (incluido en la imagen Docker oficial)
- Dependencias del sistema: libicu-dev, libgdiplus, curl, tzdata, libjemalloc2
- Puerto 5000 disponible para la interfaz web
- Volúmenes persistentes para datos (/kavita/data), configuración (/kavita/config) y biblioteca multimedia
- Mínimo 512 MB RAM recomendados, 1 GB+ para bibliotecas grandes
- Espacio en disco según tamaño de la colección de lectura
Instalación con Docker Compose
Despliegue con Docker (imagen oficial)
La imagen oficial se publica en Docker Hub como jvmilazz0/kavita. El Dockerfile multi-arquitectura compila para amd64, arm64 y arm/v7. Expone el puerto 5000 e incluye healthcheck automático. No existe docker-compose.yml oficial en el repositorio; el siguiente ejemplo se basa en la configuración documentada en el Dockerfile y la wiki.
–name kavita \
–restart unless-stopped \
-p 5000:5000 \
-v /ruta/a/datos:/kavita/data \
-v /ruta/a/config:/kavita/config \
-v /ruta/a/biblioteca:/media \
-e TZ=Europe/Madrid \
jvmilazz0/kavita:latest
Ejemplo de docker-compose.yml (no oficial)
Composición basada en los parámetros del Dockerfile y prácticas comunes. Ajusta rutas, zona horaria y recursos según tu entorno. La imagen usa entrypoint.sh como punto de entrada y requiere los volúmenes indicados para persistencia.
services:
kavita:
image: jvmilazz0/kavita:latest
container_name: kavita
restart: unless-stopped
ports:
– "5000:5000"
volumes:
– ./data:/kavita/data
– ./config:/kavita/config
– /mnt/biblioteca:/media
environment:
– TZ=Europe/Madrid
– DOTNET_RUNNING_IN_CONTAINER=true
healthcheck:
test: ["CMD", "curl", "-fsS", "http://localhost:5000/api/health"]
interval: 30s
timeout: 15s
start_period: 30s
retries: 3
Instalación nativa (sin Docker)
El repositorio proporciona binarios empaquetados (.tar.gz) por arquitectura en cada release. Requiere .NET 8 Runtime instalado y las dependencias del sistema listadas. Consulta la wiki oficial para guías detalladas por plataforma (Linux, Windows, macOS).
# https://github.com/Kareadita/Kavita/releases
tar -xzf kavita-linux-x64.tar.gz
cd Kavita
./Kavita
Acceder al proyecto
Interfaz web local
Accede a http://localhost:5000 (o la IP del servidor) tras iniciar el contenedor. La primera ejecución muestra un asistente de configuración inicial para crear el usuario administrador y definir la biblioteca.
Demo pública oficial
Disponible en https://demo.kavitareader.com/ con credenciales de prueba: usuario 'demouser', contraseña 'Demouser64'. Permite evaluar la interfaz y lectores sin instalación.
API REST y OPDS
Kavita expone una API REST documentada (openapi.json en el repo) y feeds OPDS para integración con clientes de lectura compatibles. La especificación OpenAPI está disponible en el repositorio.
Casos de uso
- Servidor personal de cómics, manga y libros con acceso remoto seguro
- Biblioteca familiar compartida con control parental por roles y restricciones de edad
- Lectura en cualquier dispositivo sin apps nativas, solo navegador web
- Gestión de metadatos automática y organización en colecciones inteligentes
- Alternativa autohospedada a servicios en la nube para privacidad total de datos
- Integración con clientes OPDS (Koreader, Panels, Chunky, etc.) para lectura offline
- Plataforma de lectura para comunidades pequeñas con autenticación OIDC/LDAP
- Archivo digital de publicaciones propias con anotaciones y resaltados persistentes
Configuración avanzada
Configuración mediante appsettings.json
El archivo base se copia desde Kavita.Server/config/appsettings.json en la imagen. Permite ajustar conexión a base de datos (SQLite por defecto), proveedores de autenticación, rutas de almacenamiento, logging, caché y opciones de Kavita+. Montar un volumen en /kavita/config permite persistir cambios.
# Database__Provider=Sqlite
# Database__ConnectionString=Data Source=/kavita/data/kavita.db
# Authentication__OIDC__Enabled=true
# Authentication__OIDC__Authority=https://auth.example.com
# KavitaPlus__Enabled=false
Temas personalizados
Los temas se instalan en el directorio de datos bajo /themes. El repositorio oficial de temas está en https://github.com/Kareadita/Themes. La wiki documenta la creación y aplicación de temas (https://wiki.kavitareader.com/guides/themes).
# /kavita/data/themes/mi-tema/
# ├── theme.json
# ├── styles.css
# └── assets/
# Activar desde la UI: Configuración > Apariencia > Tema
Kavita+ (funciones premium)
Suscripción opcional que habilita características que requieren servicios externos: metadatos enriquecidos, recomendaciones, scrobbling, colecciones inteligentes avanzadas. Gestionada por el creador (majora2007). Código promocional 'FIRSTTIME' para descuento inicial. Los contribuyentes de OpenCollective pueden solicitar licencia provisionada.
# Configuración > Kavita+ > Introducir clave de licencia
# Reiniciar contenedor para aplicar cambios
Autenticación OIDC / SSO
Soporte para proveedores OpenID Connect (Keycloak, Authentik, Authelia, Google, Microsoft, etc.). Configurable vía appsettings.json o variables de entorno. Permite integración con infraestructura de identidad existente y mapeo de roles/grupos a permisos de Kavita.
"Authentication": {
"OIDC": {
"Enabled": true,
"Authority": "https://auth.example.com/realms/kavita",
"ClientId": "kavita",
"ClientSecret": "<secreto>",
"RoleClaim": "roles",
"DefaultRole": "User"
}
}
Gestión y mantenimiento
Actualizaciones de versión
Las actualizaciones se realizan reemplazando la imagen Docker y recreando el contenedor. Los datos persisten en los volúmenes montados. Revisa el changelog en GitHub Releases para cambios de esquema de base de datos o migraciones necesarias. El proyecto recomienda backup antes de actualizar versiones mayores.
cd /ruta/docker-compose
docker compose down
docker compose up -d
# Verificar logs: docker compose logs -f kavita
Backup y restauración
Los datos críticos residen en el volumen /kavita/data (base de datos SQLite, configuración, temas, miniaturas). Realiza backups periódicos de este directorio. La base de datos SQLite puede copiarse en caliente, pero se recomienda detener el contenedor para consistencia total. La biblioteca multimedia (/media) debe respaldarse por separado según su tamaño.
docker exec kavita sqlite3 /kavita/data/kavita.db ".backup /kavita/data/kavita-backup-$(date +%F).db"
# Backup completo de datos
tar -czf kavita-backup-$(date +%F).tar.gz /ruta/a/datos
Healthcheck y monitorización
El contenedor incluye healthcheck nativo que consulta /api/health cada 30 segundos. Endpoint devuelve 200 OK si el servicio responde correctamente. Integrable con Prometheus/Grafana, Uptime Kuma, Portainer o cualquier monitor que soporte HTTP healthchecks. Logs disponibles via stdout/stderr del contenedor.
curl -fsS http://localhost:5000/api/health
# Logs de la aplicación
docker logs -f kavita –tail 100
Migración de base de datos
Kavita usa Entity Framework Core con migraciones automáticas al arranque. Al actualizar, la aplicación aplica migraciones pendientes sobre la base de datos SQLite. No se requiere intervención manual salvo que los logs indiquen error. En caso de corrupción, restaura backup de /kavita/data/kavita.db.
docker exec kavita dotnet /kavita/Kavita.Server.dll –migrate
Stack técnico
- C# / .NET 8+
- ASP.NET Core
- Entity Framework Core (SQLite)
- Blazor WebAssembly (frontend)
- Docker (multi-arch: amd64, arm64, arm/v7)
- Ubuntu 24.04 Noble (base image)
- libicu, libgdiplus, libjemalloc
- OpenAPI / Swagger
- OPDS 1.2 / 2.0
- OpenID Connect (OIDC)
- Weblate (localización)
- GitHub Actions (CI/CD)
Referencias oficiales
- Repositorio oficial en GitHub: https://github.com/Kareadita/Kavita
- Sitio web oficial y documentación: https://www.kavitareader.com
- Wiki de instalación y guías: https://wiki.kavitareader.com/getting-started
- Imagen Docker en Docker Hub: https://hub.docker.com/r/jvmilazz0/kavita
- Demo pública con credenciales de prueba: https://demo.kavitareader.com/login?apiKey=9003cf99-9213-4206-a787-af2fe4cc5f1f
- Comunidad en Discord: https://discord.gg/eczRp9eeem
- Issues y seguimiento de errores: https://github.com/Kareadita/Kavita/issues
- Discusiones y solicitudes de características: https://github.com/Kareadita/Kavita/discussions/2529
- Repositorio de temas oficiales: https://github.com/Kareadita/Themes
- Localización en Weblate: https://hosted.weblate.org/engage/kavita/
- Página de donaciones (OpenCollective): https://opencollective.com/Kavita
- Información sobre Kavita+: https://wiki.kavitareader.com/kavita+
- Licencia GPL-3.0: https://www.gnu.org/licenses/gpl-3.0.html
Apoya el canal GENBYTE
¿Te ha sido útil este contenido?
Suscríbete a YouTube
Newsletter GENBYTE
Ko-fi
Contacto: [email protected]
