Kavita is a fast, open-source reading server for manga, comics (CBZ/CBR/CB7), ebooks (EPUB, PDF) and light novels. It scans your folders, groups files into series and volumes, and gives you a polished web reader with progress tracking, collections, reading lists and multiple users. It’s lightweight enough for a small VPS.

Ebook-focused alternative: Calibre-Web.

Requirements

  • 1 vCPU and 1 GB RAM for a personal library. Scanning large libraries and generating covers uses more CPU briefly.
  • Disk for your files. Comics are large (20–200 MB per volume). See storage VPS.

Install with Docker

# /opt/kavita/compose.yaml
services:
  kavita:
    image: jvmilazz0/kavita:latest
    restart: unless-stopped
    environment:
      TZ: Etc/UTC
    volumes:
      - ./config:/kavita/config
      - /srv/library/manga:/manga
      - /srv/library/comics:/comics
      - /srv/library/books:/books
    ports:
      - "127.0.0.1:5000:5000"
cd /opt/kavita && docker compose up -d

Open the site, and create the admin account on the first visit. Do this right away.

Organise files so Kavita understands them

Kavita relies on folder and file names. Use one folder per series:

/manga/
  One Example Series/
    One Example Series Vol. 01.cbz
    One Example Series Vol. 02.cbz
    One Example Series Ch. 015.cbz
/books/
  Author Name/
    Book Title.epub
  • Put volume and chapter numbers in the file names (Vol. 01, Ch. 015).
  • Embedded metadata (ComicInfo.xml in comics, EPUB metadata) improves titles, authors and genres.
  • Tools like Komga’s naming guides, Mylar or Tachiyomi/Mihon exports help keep things tidy.

Upload files with rsync or SFTP. See rsync and SFTPGo.

Libraries

Server Settings → Libraries → Add library: choose the type (Manga, Comic, Book, Light Novel) and the folder. The type changes parsing rules and the reader behaviour. Kavita scans automatically when folders change, and you can trigger a scan manually after big uploads.

Users and permissions

  • Invite users by email or create them directly, and give each access to specific libraries.
  • Age rating restrictions per user (based on metadata) for shared family servers.
  • Users get their own progress, want-to-read list, collections and reading lists.

Reading

  • The web reader supports manga mode (right-to-left), webtoon (vertical scroll), double-page spreads, and an EPUB reader with font and theme settings.
  • OPDS feeds (per user, with an API key in the URL) work in Panels, Chunky, KOReader and other apps. Treat the OPDS URL as a password.
  • KOReader can sync progress with Kavita.

HTTPS with Nginx

server {
    server_name read.example.com;
    location / {
        proxy_pass http://127.0.0.1:5000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
    # listen 443 ssl; certbot --nginx -d read.example.com
}

Kavita uses SignalR (WebSockets) for live updates. See Nginx WebSocket proxy.

Performance tips

  • Keep the config folder (database, covers cache) on fast SSD storage.
  • Prefer CBZ over CBR (ZIP is faster to read than RAR).
  • WebP or AVIF images inside archives cut size and bandwidth a lot.

Content and legality

Host only content you have the right to store and share. Keep the server private (accounts only), and don’t run a public library of copyrighted content. That leads to abuse complaints. See the legal policies.

Backups and updates

  • Back up ./config (database, settings, user progress). Your library files should have their own backup. See backup strategy.
  • Update with docker compose pull && docker compose up -d. See updating self-hosted apps.

Quick reference

Item Value
Port 5000
Config/database /kavita/config
Library types Manga, Comic, Book, Light Novel
Naming one folder per series; Vol. NN, Ch. NNN
OPDS per-user URL with API key

Related: Jellyfin and Navidrome.

  • Self-Hosting
  • Docker
  • Media Server