Русский
Начать

← Все шаблоны · Медиа

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

Сервер для чтения манги, комиксов и книг с читалками в браузере для любого устройства

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

Что такое Kavita?

Kavita — open source сервер для чтения манги, вебтунов, комиксов и книг. Он читает файлы там, где они лежат: для комиксов — архивы CBZ, CBR, ZIP, RAR и 7-Zip и папки с изображениями, для книг — EPUB и PDF, группирует их в серии с обложками и метаданными и отдает читалкам в браузере, которые работают на телефоне, планшете и компьютере. В читалках есть режим Webtoon, непрерывный режим, который переходит к следующей главе, а также выделения и аннотации в книгах EPUB.

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

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

Хостинг Kavita на Pethost

  1. Вы входите в Pethost — с passkey, через 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?

Положите файлы в папку библиотеки, каждую серию или книгу в отдельную папку, затем добавьте эту папку как библиотеку в разделе «Настройки» → «Libraries». Kavita сразу ее просканирует, а потом снова — когда файлы изменятся.

Kavita или Komga: что выбрать?

Оба отдают комиксы, мангу и книги, включая EPUB и PDF, читалкам в браузере и приложениям с поддержкой OPDS. Собственные читалки Kavita добавляют режим Webtoon, непрерывное чтение с переходом к следующей главе, а также выделения и аннотации в книгах 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:

Еще в категории «Медиа»