Português
Começar

← Todos os templates · Mídia

Faça deploy de Kavita em um clique

Um servidor de leitura para mangás, quadrinhos e livros, com leitores no navegador para qualquer dispositivo

Uma alternativa auto-hospedada para Kindle e Comixology.

O que é Kavita?

O Kavita é um servidor de leitura de código aberto para mangás, webtoons, quadrinhos e livros. Ele lê os arquivos onde eles estão (arquivos compactados CBZ, CBR, ZIP, RAR e 7-Zip e pastas de imagens para quadrinhos, EPUB e PDF para livros), agrupa-os em séries com as capas e os metadados e os serve a leitores no navegador que funcionam no celular, no tablet e no computador. Os leitores têm um modo webtoon, um modo contínuo que segue para o próximo capítulo, e destaques e anotações nos livros EPUB.

As pessoas rodam o Kavita para ler a própria coleção em qualquer lugar e compartilhá-la com a família e os amigos: cada usuário tem o próprio progresso, e funções limitam o que cada um vê e faz, inclusive por idade. Coleções, listas de leitura, “Quero Ler” e filtros inteligentes organizam uma biblioteca grande, e temas mudam a aparência dele. O Kavita+, uma assinatura paga, adiciona metadados, resenhas e recomendações da internet; todo o resto é gratuito.

Este template roda a imagem oficial do Kavita, versão 0.9.1, com o banco de dados e as configurações dele em um volume e os seus livros em outro. O admin é registrado com o usuário, o e-mail e a senha que você informa, antes de o Kavita responder a qualquer pessoa.

Hospedagem de Kavita no Pethost

  1. Você entra no Pethost com uma passkey, GitHub ou Google. Ainda não tem máquina? Você escolhe um plano, e o link espera até ela ficar pronta.
  2. Novo projeto abre em Kavita. Você preenche o que ele pede e clica em Criar projeto: Usuário, E-mail, Senha do administrador.
  3. Em um ou dois minutos Kavita está no ar no próprio endereço com HTTPS. Os segredos são gerados ao acaso, e os dados vão para o backup noturno.
  4. É um projeto como qualquer outro: você ou seu agente podem alterá-lo, fazer rollback ou restaurá-lo.

Perguntas sobre Kavita

O Kavita é gratuito?

Sim. O Kavita é de código aberto sob a GPL-3.0 e gratuito para rodar, com todos os leitores e todos os recursos para usuários. O Kavita+ é uma assinatura paga opcional para metadados, resenhas, recomendações e scrobbling para o AniList e outros serviços.

Quais formatos o Kavita lê?

Quadrinhos e mangás em arquivos compactados CBZ, CBR, ZIP, RAR, RAR5 e 7-Zip ou em pastas de imagens, e livros em EPUB e PDF. O Kavita lê os arquivos como eles estão, sem convertê-los.

Como adiciono livros ao Kavita?

Coloque os arquivos na pasta da biblioteca, cada série ou livro numa pasta própria, e depois adicione a pasta como biblioteca em Configurações → Bibliotecas. O Kavita faz a varredura dela nessa hora e de novo quando os arquivos mudam.

Kavita ou Komga: qual escolher?

Os dois servem quadrinhos, mangás e livros, EPUB e PDF inclusive, a leitores no navegador e a apps OPDS. Os leitores do próprio Kavita somam um modo webtoon, a leitura contínua até o próximo capítulo, e destaques e anotações nos livros EPUB; o Kavita+ vende metadados da internet, enquanto o Komga não tem plano pago.

Posso compartilhar minha biblioteca do Kavita com outras pessoas?

Sim. O admin convida usuários em Configurações → Usuários e escolhe as bibliotecas que cada um vê e as funções dele, como a de baixar, ou um limite de idade. Cada usuário mantém o próprio progresso de leitura.

De quanta memória e disco Kavita precisa?

O Kavita é leve: cerca de 250 MB de memória enquanto você lê, mais enquanto ele varre uma biblioteca; os seus livros ocupam o que os arquivos deles ocupam. No Pethost, o plano Starter basta, com espaço para outros apps ao lado.

Arquivo Docker Compose de Kavita

O template é este compose.yaml e as variáveis gravadas no .env do projeto quando ele é criado. O Pethost roda o arquivo exatamente como está escrito.

Containers: kavita (jvmilazz0/kavita:0.9.1).

Volumes, no backup noturno: 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:

Mais em Mídia