How to Install Kavita (A Fast Reader for Comics, Manga and Ebooks on Every Device)

Comics, manga and ebooks on every device with your place saved: Kavita. Series and volumes detected from folders, a web reader that's actually good.

Calibre-Web (86) manages a book library well; it's a poor place to read comics. Kavita is built for reading: CBZ/CBR comic archives, manga (right-to-left, webtoon scrolling), EPUBs with a proper reflowable reader, PDFs — in the browser, on any device, remembering your page. It scans folders into series and volumes, tracks reading progress per user, and the kids can have their own accounts with age ratings. Fast, in one container.

Quick reference

TaskWhat
Folder~/docker/kavita/compose.yaml
Webhttp://server-ip:5000 → mapped to 5002 here (Frigate has 5000)
Libraries/comics, /manga, /books mounted read-only
Folder layoutSeries Name/Series Name v01.cbz or Series/Vol 1/ch 001.cbz
Usersadmin → Settings → Users; age rating restrictions
Appsthe web reader (PWA); OPDS for Panels, Chunky, Moon+, KOReader

1. The compose file

mkdir -p ~/docker/kavita/config && cd ~/docker/kavita
nano compose.yaml

services:
kavita:
image: jvmilazz0/kavita:latest
container_name: kavita
ports:
- "5002:5000"
environment:
TZ: Europe/London
volumes:
- ./config:/kavita/config
- /mnt/data/media/Comics:/comics:ro
- /mnt/data/media/Manga:/manga:ro
- /mnt/data/media/Books:/books:ro
restart: unless-stopped

docker compose up -d
sudo ufw allow from 192.168.1.0/24 to any port 5002

Open http://192.168.1.50:5002, register the first account (admin).

2. Organise the files

Kavita's parser is good but likes structure:

Comics/
Saga/
Saga v01.cbz
Saga v02.cbz
Calvin and Hobbes/
Calvin and Hobbes - The Complete Collection.cbz
Manga/
One Piece/
One Piece v001.cbz
One Piece - Chapter 1050.cbz
Books/
Pratchett, Terry/
Guards! Guards!.epub

v01/vol 1 for volumes, ch 12/c012 for chapters, a folder per series. CBZ (a zip of images) is the comic format to prefer; CBR (rar) works; folders of loose images get zipped by Kavita's own tooling or zip -r series.cbz *.jpg. ComicInfo.xml inside archives (from ComicTagger) gives rich metadata.

3. Libraries

Settings → Libraries → Add: name Comics, type Comic, folder /comics. Then Manga (type Manga — enables right-to-left and chapter handling) and Books (type Book). Scan. Series appear with covers extracted from the first page; Metadata comes from the files and can be edited per series (genres, age rating, summary).

4. Read

Click a series → a volume → Read. The reader: fit to width/height, single or double page, manga direction, webtoon continuous scroll, page thumbnails, bookmarks, and your position saved per user per device. EPUBs open in a reflow reader with font, size, margins, dark mode and a progress bar. PDFs render with the built-in viewer. The web app installs to a phone's home screen and works offline for the current book.

5. Family accounts

Settings → Users → Invite (needs email, 49) or create directly. Per user: which libraries, an age rating ceiling (series tagged Teen aren't visible to the Everyone account), and whether they can download. Reading lists and Collections (Settings) make "Summer reading" or "Read in order" sets. Want to read per user.

6. Apps via OPDS

Settings → Account → OPDS → Enable; the URL http://server/api/opds/ goes into Panels or Chunky (iOS), Moon+ or Tachiyomi-style readers (Android), KOReader on an e-reader. They browse and download from Kavita; progress syncs back for apps that support the Kavita API.

Behind the proxy

comics.example.com → 127.0.0.1:5002 (28), HTTPS, client_max_body_size 0 isn't needed (read-only), but increase timeouts for big CBZ page loads. VPN or public behind Kavita's own login — both fine.

Troubleshooting

Series split into several, or volumes missing. The filename pattern; rename to Series vNN.cbz and rescan. The Parser docs list what it understands.

Scan finds nothing. The mount path, or permissions (Kavita runs as root in the image by default; a user: line needs the folders readable).

Pages load slowly. CBR (rar) is slower than CBZ; huge page images — the reader's quality setting, or convert.

EPUB shows raw text. A DRM'd or malformed file; Calibre (86) can convert it.

Wrapping up

One container with the collections mounted read-only, folders named by series and volume, a library per type, accounts with age ratings. Comics and manga get a reader that respects the format, the kids get their own shelf, and your page is remembered on the tablet in bed and the phone on the bus.

Call us