Polski
Zacznij

← Wszystkie szablony · Multimedia

Wdróż Kavita jednym kliknięciem

Serwer do czytania mang, komiksów i książek, z czytnikami w przeglądarce na każde urządzenie

Alternatywa dla Kindle i Comixology, hostowana u siebie.

Czym jest Kavita?

Kavita to serwer open source do czytania mang, webtoonów, komiksów i książek. Czyta pliki tam, gdzie leżą: archiwa CBZ, CBR, ZIP, RAR i 7-Zip oraz katalogi z obrazkami w przypadku komiksów, a EPUB i PDF w przypadku książek. Grupuje je w serie z okładkami i metadanymi i udostępnia czytnikom w przeglądarce, które działają na telefonie, tablecie i komputerze. Czytniki mają tryb webtoon, tryb ciągły, który przechodzi do następnego rozdziału, a w książkach EPUB podświetlenia i adnotacje.

Kavitę uruchamia się, żeby czytać swoją kolekcję wszędzie i dzielić się nią z rodziną i znajomymi: każdy użytkownik ma własny postęp, a role ograniczają, co widzi i co może robić, łącznie z ograniczeniem wiekowym. Kolekcje, listy czytelnicze, lista Chcę przeczytać i inteligentne filtry porządkują dużą bibliotekę, a motywy zmieniają jej wygląd. Kavita+, płatna subskrypcja, dodaje metadane, recenzje i rekomendacje z internetu; cała reszta jest darmowa.

Ten szablon uruchamia oficjalny obraz Kavity w wersji 0.9.1, z bazą danych i ustawieniami w jednym wolumenie, a twoimi książkami w drugim. Administrator jest rejestrowany z podanej nazwy użytkownika, adresu e-mail i hasła, zanim Kavita komukolwiek odpowie.

Hosting Kavita na Pethost

  1. Logujesz się do Pethost kluczem dostępu, przez GitHub albo Google. Nie masz jeszcze maszyny? Wybierasz plan, a link czeka, aż będzie gotowa.
  2. Okno „Nowy projekt” otwiera się na aplikacji Kavita. Wypełniasz to, o co prosi, i klikasz „Utwórz projekt”: Nazwa użytkownika, E-mail, Hasło administratora.
  3. Za minutę czy dwie aplikacja Kavita działa pod własnym adresem z HTTPS. Jej sekrety są tworzone losowo, a dane trafiają do nocnego backupu.
  4. To projekt jak każdy inny: ty albo twój agent możecie go zmienić, cofnąć do wcześniejszej wersji albo przywrócić.

Pytania o Kavita

Czy Kavita jest darmowa?

Tak. Kavita jest open source na licencji GPL-3.0 i można ją uruchamiać za darmo, ze wszystkimi czytnikami i wszystkimi funkcjami dla użytkowników. Kavita+ to opcjonalna płatna subskrypcja na metadane, recenzje, rekomendacje i scrobblowanie do AniList i innych usług.

Jakie formaty czyta Kavita?

Komiksy i mangi jako archiwa CBZ, CBR, ZIP, RAR, RAR5 i 7-Zip albo katalogi z obrazkami, a książki jako EPUB i PDF. Kavita czyta pliki takie, jakie są, bez konwertowania.

Jak dodać książki do Kavity?

Wrzuć pliki do katalogu biblioteki, każdą serię albo książkę do osobnego katalogu, a potem dodaj ten katalog jako bibliotekę na stronie Ustawienia → Biblioteki. Kavita od razu go przeskanuje i zrobi to znowu, gdy pliki się zmienią.

Kavita czy Komga: co wybrać?

Obie udostępniają komiksy, mangi i książki, także EPUB i PDF, czytnikom w przeglądarce i aplikacjom OPDS. Własne czytniki Kavity dodają tryb webtoon, ciągłe czytanie aż do następnego rozdziału oraz podświetlenia i adnotacje w książkach EPUB; Kavita+ sprzedaje metadane z internetu, a Komga nie ma płatnego planu.

Czy mogę udostępnić swoją bibliotekę Kavity innym?

Tak. Administrator zaprasza użytkowników na stronie Ustawienia → Użytkownicy i wybiera biblioteki, które każdy z nich widzi, oraz ich uprawnienia, takie jak rola Pobierz albo ograniczenie wiekowe. Każdy użytkownik ma własny postęp czytania.

Ile pamięci i miejsca na dysku potrzebuje Kavita?

Kavita ma małe wymagania: około 250 MB pamięci podczas czytania, więcej, gdy skanuje bibliotekę; twoje książki zajmują tyle miejsca, ile ważą ich pliki. Na Pethost wystarczy mu plan Starter, z miejscem na inne aplikacje obok.

Kavita: plik Docker Compose

Szablon to ten compose.yaml i zmienne zapisywane do .env projektu przy jego tworzeniu. Pethost uruchamia plik dokładnie tak, jak jest napisany.

Kontenery: kavita (jvmilazz0/kavita:0.9.1).

Wolumeny, w nocnym backupie: 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:

Więcej w kategorii Multimedia