Українська
Почати

← Усі шаблони · Медіа

Задеплойте Kavita в один клік

Сервер для читання манги, коміксів і книжок, із читалками в браузері для будь-якого пристрою

Альтернатива Kindle і Comixology на вашій машині.

Що таке Kavita?

Kavita — сервер з відкритим кодом для читання манги, вебтунів, коміксів і книжок. Вона читає файли там, де вони лежать (архіви CBZ, CBR, ZIP, RAR і 7-Zip та папки із зображеннями для коміксів, EPUB і PDF для книжок), групує їх у серії з обкладинками й метаданими та показує в читалках у браузері, які працюють на телефоні, планшеті й комп’ютері. Читалки мають режим для вебтунів, безперервний режим, що переходить до наступного розділу, а також виділення й анотації в книжках EPUB.

Kavita запускають, щоб читати свою колекцію будь-де й ділитися нею з родиною та друзями: кожен користувач має свій прогрес, а ролі обмежують, що він бачить і може робити, зокрема за віком. Колекції, списки для читання, «Хочу прочитати» й розумні фільтри впорядковують велику бібліотеку, а теми змінюють її вигляд. Kavita+, платна передплата, додає метадані, рецензії та рекомендації з інтернету; усе інше безкоштовне.

Цей шаблон запускає офіційний образ Kavita версії 0.9.1: її база даних і налаштування лежать в одному томі, а ваші книжки — в іншому. Адміністратор реєструється з імені користувача, пошти й пароля, які ви вказали, ще до того, як Kavita комусь відповість.

Хостинг Kavita на Pethost

  1. Ви входите в Pethost — з ключем доступу, через GitHub або Google. Машини ще немає? Ви обираєте тариф, і посилання чекає, доки машина не буде готова.
  2. Вікно «Новий проєкт» відкривається на застосунку Kavita. Ви заповнюєте те, що він просить, і натискаєте «Створити проєкт»: Ім’я користувача, Електронна пошта, Пароль адміністратора.
  3. За хвилину-дві Kavita працює за власною адресою з HTTPS. Секрети створюються випадково, а дані потрапляють у щонічний бекап.
  4. Це проєкт як будь-який інший: ви або ваш агент можете його змінити, відкотити або відновити.

Питання про Kavita

Kavita безкоштовна?

Так. Kavita має відкритий код за ліцензією GPL-3.0, і її можна запускати безкоштовно, з усіма читалками й усіма функціями для користувачів. Kavita+ — необов’язкова платна передплата на метадані, рецензії, рекомендації й скроблінг в AniList та інші сервіси.

Які формати читає Kavita?

Комікси й мангу — в архівах CBZ, CBR, ZIP, RAR, RAR5 і 7-Zip або в папках із зображеннями, а книжки — в EPUB і PDF. Kavita читає файли такими, як вони є, без конвертації.

Як додати книжки в Kavita?

Покладіть файли в папку бібліотеки, кожну серію чи книжку в окрему папку, потім додайте цю папку як бібліотеку в розділі «Налаштування → Бібліотеки». Kavita одразу її просканує й сканує знову, щойно файли зміняться.

Kavita чи Komga: що обрати?

Обидві віддають комікси, мангу й книжки, зокрема EPUB і PDF, у читалки в браузері та в застосунки з підтримкою OPDS. Вбудовані читалки Kavita додають режим для вебтунів, безперервне читання з переходом до наступного розділу, а також виділення й анотації в книжках EPUB; Kavita+ продає метадані з інтернету, а Komga не має платного тарифу.

Чи можна поділитися бібліотекою Kavita з іншими?

Так. Адміністратор запрошує користувачів у розділі «Налаштування → Користувачі» й обирає, які бібліотеки бачить кожен і які в нього ролі та обмеження, як-от роль «Завантажити» чи вікове обмеження. Кожен користувач має свій прогрес читання.

Скільки пам’яті й диска потрібно Kavita?

Kavita має скромні вимоги: близько 250 MB пам’яті, поки ви читаєте, і більше, поки вона сканує бібліотеку; книжки займають стільки, скільки їхні файли. На Pethost йому вистачить тарифу Starter, і поруч залишиться місце для інших застосунків.

Kavita: файл Docker Compose

Шаблон — це цей compose.yaml і змінні, які записуються в .env проєкту під час його створення. Pethost запускає файл так, як його написано.

Контейнери: kavita (jvmilazz0/kavita:0.9.1).

Томи, у щонічному бекапі: 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:

Ще в категорії «Медіа»