Español
Empezar

← Todas las plantillas · Multimedia

Despliega Kavita en un clic

Un servidor de lectura para manga, cómics y libros, con lectores en el navegador para cualquier dispositivo

Una alternativa autoalojada a Kindle y Comixology.

¿Qué es Kavita?

Kavita es un servidor de lectura de código abierto para manga, webtoons, cómics y libros. Lee los archivos donde están (archivos comprimidos CBZ, CBR, ZIP, RAR y 7-Zip y carpetas de imágenes para los cómics, EPUB y PDF para los libros), los agrupa en series con sus portadas y metadatos, y los sirve a lectores en el navegador que funcionan en un teléfono, una tablet y un equipo de escritorio. Los lectores tienen un modo webtoon, un modo continuo que pasa al capítulo siguiente, y resaltados y anotaciones en los libros EPUB.

Mucha gente usa Kavita para leer su colección en cualquier lugar y compartirla con familia y amigos: cada usuario tiene su propio progreso, y los roles limitan lo que ve y hace, también por edad. Las colecciones, las listas de lectura, “Lecturas deseadas” y los filtros inteligentes organizan una biblioteca grande, y los temas cambian su aspecto. Kavita+, una suscripción de pago, agrega metadatos, reseñas y recomendaciones de internet; todo lo demás es gratis.

Esta plantilla ejecuta la imagen oficial de Kavita, versión 0.9.1, con su base de datos y sus ajustes en un volumen y tus libros en otro. El administrador se registra con el nombre de usuario, el correo y la contraseña que indicas, antes de que Kavita responda a nadie.

Hosting de Kavita en Pethost

  1. Inicias sesión en Pethost con una passkey, GitHub o Google. ¿Aún no tienes máquina? Eliges un plan, y el enlace espera hasta que esté lista.
  2. Nuevo proyecto se abre en Kavita. Rellenas lo que pide y haces clic en Crear proyecto: Nombre de usuario, Correo electrónico, Contraseña de administrador.
  3. En un par de minutos Kavita está en marcha en su propia dirección con HTTPS. Sus secretos se generan al azar, y sus datos entran en el backup de cada noche.
  4. Es un proyecto como cualquier otro: tú o tu agente lo pueden cambiar, volver a una versión anterior o restaurar.

Preguntas sobre Kavita

¿Kavita es gratis?

Sí. Kavita es de código abierto bajo la GPL-3.0 y gratis de ejecutar, con todos los lectores y todas las funciones para usuarios. Kavita+ es una suscripción de pago opcional para metadatos, reseñas, recomendaciones y scrobbling a AniList y otros servicios.

¿Qué formatos lee Kavita?

Cómics y manga en archivos comprimidos CBZ, CBR, ZIP, RAR, RAR5 y 7-Zip o en carpetas de imágenes, y libros en EPUB y PDF. Kavita lee los archivos tal como están, sin convertirlos.

¿Cómo agrego libros a Kavita?

Pon los archivos en la carpeta de la biblioteca, cada serie o libro en su propia carpeta, y luego agrega esa carpeta como biblioteca en Ajustes → Bibliotecas. Kavita la escanea en ese momento, y de nuevo cuando cambian los archivos.

Kavita frente a Komga: ¿cuál debería elegir?

Los dos sirven cómics, manga y libros, incluidos EPUB y PDF, a lectores en el navegador y a apps OPDS. Los lectores propios de Kavita agregan un modo webtoon, lectura continua que pasa al capítulo siguiente, y resaltados y anotaciones en los libros EPUB; Kavita+ vende metadatos de internet, mientras que Komga no tiene ninguna opción de pago.

¿Puedo compartir mi biblioteca de Kavita con otras personas?

Sí. El administrador invita a usuarios en Ajustes → Usuarios y elige las bibliotecas que ve cada uno y sus roles, como el de descarga, o los límites de edad. Cada usuario conserva su propio progreso de lectura.

¿Cuánta memoria y disco necesita Kavita?

Kavita es ligero: unos 250 MB de memoria mientras lees, más mientras escanea una biblioteca; tus libros ocupan lo que ocupan sus archivos. En Pethost le basta el plan Starter, y queda sitio para otras apps a su lado.

El archivo Docker Compose de Kavita

La plantilla es este compose.yaml y las variables que se escriben en el .env del proyecto al crearlo. Pethost ejecuta el archivo tal como está escrito.

Contenedores: kavita (jvmilazz0/kavita:0.9.1).

Volúmenes, en el backup de cada noche: config, books.

services:
  kavita:
    image: jvmilazz0/kavita:0.9.1
    restart: unless-stopped
    environment:
      ADMIN_USERNAME: ${ADMIN_USERNAME}
      ADMIN_EMAIL: ${ADMIN_EMAIL}
      ADMIN_PASSWORD: ${ADMIN_PASSWORD}
      TZ: Etc/UTC
    # A new Kavita lets whoever opens it first register as its admin. So until the admin exists,
    # Kavita runs on 127.0.0.1:5001, which nobody reaches, where the admin is registered from the
    # fields; only then does it start as the image starts it, answering on 5000. Kavita reads the
    # port and address of its appsettings.json only when it does not know it is in a container.
    # A refusal stops the start with Kavita's reason in the log.
    entrypoint:
      - /bin/bash
      - -c
      - |
        set -e
        cd /kavita
        if [ ! -f config/admin-registered ]; then
          if [ ! -f config/appsettings.json ]; then
            cp /tmp/config/appsettings.json config/appsettings.json
          fi
          sed -i -e 's/"Port": *[0-9]*/"Port": 5001/' -e 's/"IpAddresses": *"[^"]*"/"IpAddresses": "127.0.0.1"/' config/appsettings.json
          env -u DOTNET_RUNNING_IN_CONTAINER ./Kavita &
          kavita=$$!
          until curl -sf -o /dev/null http://127.0.0.1:5001/api/health; do
            kill -0 $$kavita
            sleep 1
          done
          json() {
            local s=$${1//\\/\\\\}
            s=$${s//\"/\\\"}
            printf '"%s"' "$$s"
          }
          body="{\"username\":$$(json "$$ADMIN_USERNAME"),\"email\":$$(json "$$ADMIN_EMAIL"),\"password\":$$(json "$$ADMIN_PASSWORD")}"
          status=$$(curl -s -o /tmp/register -w '%{http_code}' -H 'Content-Type: application/json' -d "$$body" http://127.0.0.1:5001/api/Account/register)
          kill $$kavita
          wait $$kavita || true
          sed -i -e 's/"Port": *[0-9]*/"Port": 5000/' -e 's/"IpAddresses": *"[^"]*"/"IpAddresses": ""/' config/appsettings.json
          # 400 "denied": an admin exists already, registered by an earlier start.
          if [ "$$status" != 200 ] && ! grep -qi denied /tmp/register; then
            echo "Kavita refused the admin ($$status): $$(cat /tmp/register)"
            exit 1
          fi
          touch config/admin-registered
        fi
        exec /entrypoint.sh
    volumes:
      - config:/kavita/config
      # Writable, so that books can be uploaded or copied in over SFTP.
      - books:/books
volumes:
  config:
  books:

Más en Multimedia