ComiXology became Amazon Kindle and lost its identity. Mangadex is great but it's not your collection. Calibre-Web is showing its age. Kavita is the modern self-hosted answer for anyone with a comic, manga, or ebook library: clean web reader, mobile-responsive UI, proper right-to-left manga support, EPUB and PDF and CBR and CBZ all handled in one place, with progress sync and multi-user libraries.

This guide installs Kavita via Docker, sets up HTTPS, configures the file naming Kavita uses to detect series and volumes, walks through metadata fetching from ComicVine and Anilist, and covers the multi-user permission system for shared family libraries with age-gating. By the end you'll have a fast, organised library that works in any browser and on any phone.

🐾 What you'll need:
  • A Linux VPS — Ubuntu 22.04 or Debian 12 (1 GB RAM is plenty)
  • Storage sized to your library — see step 1
  • A domain pointed at the VPS
  • Roughly 25 minutes

For Kavita pre-installed with storage tuned for comic/ebook collections, see our Kavita VPS plans — 100 GB to 2 TB.

1. Library size planning

Comic/manga storage math:

Content typePer filePer series (50 issues / volumes)500 series =
Standard comic CBR/CBZ30–60 MB~2 GB~1 TB
Manga volume (200 pages)50–100 MB~3 GB~1.5 TB
Webtoon vertical scroll30–60 MB~2 GB~1 TB
EPUB ebook500 KB–3 MB~50 MB~25 GB
PDF technical books5–20 MB~500 MB~250 GB

Comics and manga are the storage drivers. Ebooks are negligible. For a serious manga collection (200+ series, full volumes), plan for 1 TB+. The 2 TB plan handles roughly 40,000 comic issues or full collections of 500+ long-running manga series.

2. Prepare the VPS

apt update && apt upgrade -y
apt install -y curl ca-certificates gnupg ufw

ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw --force enable

adduser kavita
usermod -aG sudo kavita
rsync --archive --chown=kavita:kavita ~/.ssh /home/kavita

3. Install Docker

install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
  gpg --dearmor -o /etc/apt/keyrings/docker.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
  https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  tee /etc/apt/sources.list.d/docker.list > /dev/null

apt update
apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
usermod -aG docker kavita

4. Deploy Kavita

su - kavita
mkdir -p ~/kavita/{config,manga,comics,books}
cd ~/kavita

cat > compose.yaml <<'EOF'
services:
  kavita:
    image: jvmilazz0/kavita:latest
    container_name: kavita
    restart: unless-stopped
    ports:
      - "127.0.0.1:5000:5000"
    volumes:
      - ./manga:/manga
      - ./comics:/comics
      - ./books:/books
      - ./config:/kavita/config
    environment:
      TZ: UTC
EOF

docker compose up -d
docker compose logs -f

First boot is fast (~15 seconds). Visit http://localhost:5000 via SSH tunnel to confirm. Once Nginx is up (next step), use the real domain.

5. Nginx reverse proxy + HTTPS

sudo apt install -y nginx certbot python3-certbot-nginx

sudo tee /etc/nginx/sites-available/kavita <<'EOF'
server {
    listen 80;
    server_name comics.example.com;

    client_max_body_size 500M;
    proxy_read_timeout 300s;

    location / {
        proxy_pass http://127.0.0.1:5000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}
EOF

sudo ln -s /etc/nginx/sites-available/kavita /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
sudo certbot --nginx -d comics.example.com

Visit https://comics.example.com — Kavita's first-run wizard. Create the admin account (first user becomes admin). Pick a strong password — this account has full library access.

6. Create libraries

Kavita supports multiple library types, each with different defaults:

In the admin panel: Libraries+ Add Library. For each library:

Kavita scans the folder, detects series, and adds books to the library. The first scan takes ~1 minute per 100 books.

🐾 Pre-installed with comic-tuned storage

Our Kavita VPS plans ship with Kavita pre-installed and storage tiered for comic/manga libraries — NVMe for fast browsing, HDD for big archives. From $7.99/mo.

See Kavita VPS Plans →

7. File naming and series detection

Kavita auto-detects series, volumes, and chapters from filenames. The patterns that just work:

# Manga — series with volumes
/manga/
└── One Piece/
    ├── One Piece Vol. 01.cbz
    ├── One Piece Vol. 02.cbz
    └── ...

# Manga — series with chapters
/manga/
└── Chainsaw Man/
    ├── Chainsaw Man Ch. 001.cbz
    ├── Chainsaw Man Ch. 002.cbz
    └── ...

# Comics — issues
/comics/
└── Batman/
    ├── Batman 001 (2016).cbr
    ├── Batman 002 (2016).cbr
    └── ...

# Light novels with volumes
/books/
└── Re_Zero/
    ├── Re_Zero Vol. 1.epub
    ├── Re_Zero Vol. 2.epub
    └── ...

Common pitfalls:

8. Metadata fetching

Kavita pulls cover art, descriptions, character lists, and tags from:

Configure under SettingsMetadata. For ComicVine you'll need a free API key from comicvine.gamespot.com. Anilist, Mangadex, and OpenLibrary are key-less.

For a series with bad metadata: open the series page, click Edit, search for the right title, pick the correct match. Kavita overwrites cover and details. Manual override is also available — type whatever description you want.

9. Manga and right-to-left reading

Kavita has a proper manga reader. In a manga library, the default reading direction is right-to-left and double-page spreads work correctly (page 5 on the left, page 4 on the right — Japanese convention).

Per-user override: ProfileReading Preferences. Options:

The webtoon mode is particularly well-implemented — endless vertical scroll with progress saved by scroll position. Lezhin / Tappytoon converts can keep their reading experience identical.

10. Multi-user and age-gating

Each user has their own:

Create users under Users+ Invite User. Email-based invite — they sign up with their own password.

For families with kids: set up Age Restriction on the child's account. Series tagged Mature/Explicit get hidden from them automatically. Tag content via the metadata fetch (Anilist returns age ratings) or manually under each series.

11. Reference: formats, alternatives

Supported file formats

FormatWhat it isBest for
CBRRAR archive of imagesOlder comic distributions
CBZZIP archive of imagesModern standard, faster to read
CB77-Zip archive of imagesSmaller files, slower to open
PDFStandard PDFTechnical books, scanned content
EPUBStandard ebook formatNovels, light novels, anything text-heavy

Kavita is happy with all of them. For best performance, prefer CBZ over CBR — ZIP is faster to seek than RAR for the random-access page-flipping use case.

Kavita vs Komga vs Calibre-Web

KavitaKomgaCalibre-Web
Comics + manga✅ Excellent✅ Excellent⚠️ Limited
Ebooks (EPUB)✅ Built-in reader⚠️ Basic✅ Excellent
Manga RTL reading✅ Native✅ Native
Mobile UI✅ Responsive web⚠️ Web only⚠️ Web only
Best forMixed librariesPure comic/mangaPure ebook

Kavita is the best balance if you have mixed content (some comics, some manga, some novels). Komga edges Kavita on comic-only setups. Calibre-Web is the right answer if you're ebook-only.

Performance considerations

Kavita scans the library on a schedule and during file changes. Initial scan of 5,000+ items takes 10–20 minutes. Subsequent incremental scans (new files) finish in seconds. Storage IOPS matters more than CPU here — NVMe libraries scan dramatically faster than HDD.

Image-heavy file formats (uncompressed PNG inside CBZ) can be slow to load on the reader. Convert to WebP or JPEG inside the CBZ for faster page turns. Tools like KCC (Kindle Comic Converter) handle this conversion in bulk.

Per-plan capacity

PlanLibrary sizeConcurrent readers
Starter ($7.99, 100 GB)~2,000 comic issues or 50 manga series5+ simultaneous
Pro ($15.99, 500 GB)~10,000 issues or 250 manga series20+ simultaneous
Premium ($35.99, 2 TB HDD)40,000+ issues or 500+ manga series50+ simultaneous

OPDS support

Kavita exposes an OPDS (Open Publication Distribution System) feed at https://comics.example.com/api/opds/<api-key>/. Third-party reader apps that support OPDS (Chunky, Panels, Moon+ Reader Pro, Yomu) can pull your library and read offline. Useful for iOS where dedicated apps are sparse.

FAQ

Kavita vs Komga — which one?

Both are excellent for comics and manga. Kavita has better ebook support (EPUB reader, light novel handling); Komga is more focused on comics with a slightly faster reader. For mixed libraries (comics + manga + novels) Kavita wins. For pure comic-only collections, either works — Komga has been around longer with a slightly larger plugin ecosystem.

Will it work for Western comics from ComiXology?

Yes, once you've gotten the files into CBR or CBZ format. ComiXology uses its own format that requires extraction. The legal path: only for comics you've purchased and downloaded. Tools that strip DRM are widely available but their legality varies by jurisdiction.

Can I use this with Tachiyomi (the Android manga app)?

Yes — Kavita has Tachiyomi extension support. Add Kavita as a source in Tachiyomi, paste your server URL and API key, and your library appears alongside online sources. Reading progress syncs back to Kavita.

How does the EPUB reader compare to Calibre?

Calibre has more features (typography control, bookmarks, annotations export). Kavita's reader is simpler but works in any browser without a desktop app. For serious ebook reading, pair Kavita with KOReader / Moon+ Reader Pro via OPDS — Kavita serves files, KOReader reads them.

What about webcomics and webtoons?

Set the library to type Manga and configure the user's reading direction to Up-to-down (Webtoon). Kavita handles the vertical-scroll format properly with continuous-scroll mode. Convert webcomic sources to CBZ archives organised by chapter for clean importing.

How do I get metadata for obscure manga?

Mangadex has the broadest catalogue, including doujinshi and obscure series. Anilist is great for mainstream titles. For truly rare content, manual editing is your friend — every field in Kavita is editable. Bulk-edit via the API for large changes.

🐱
OliveVPS Team

We've migrated ~3,500 manga volumes and ~12,000 comic issues to Kavita over the past 18 months. Setup took 25 minutes; the harder part was renaming a decade of inconsistently-named files into formats the scanner liked. The Premium 2 TB plan still has 400 GB free.