Your Comic Library, Your Rules
Kavita is a free, open-source media server built specifically for comics, manga, and books. Unlike general-purpose media servers that treat comic files as an afterthought, Kavita was designed from the ground up to handle CBZ, CBR, PDF, and EPUB formats with proper metadata parsing, reading progress tracking, and a clean browser-based reader. If you have a growing digital collection scattered across hard drives and cloud folders, Kavita gives that library a permanent, organized home on hardware you control.
The setup process is approachable for anyone comfortable with the command line or basic Docker usage. You do not need to be a systems administrator. Within an hour, you can have a fully functional server accessible from any browser on your local network – or remotely, if you configure external access. This guide walks through the complete process: installation, library configuration, and getting your first collection visible and readable.

Prerequisites and Installation
Kavita runs on Linux, Windows, macOS, and ARM-based devices like the Raspberry Pi. The Docker installation method is the most portable and easiest to update, so that is what this guide focuses on. Before starting, make sure Docker and Docker Compose are installed on your host machine. Your comic files should already be organized in a directory – Kavita reads your existing folder structure, so a setup like /media/comics/Marvel or /media/manga/One Piece will map cleanly into series within the app.
Create a directory for Kavita’s configuration data. A good default is /opt/kavita/config. Then create a docker-compose.yml file with the following content. Set the PUID and PGID values to match your current user (run id in the terminal to find them), map your comics directory under volumes, and expose port 5000. A minimal compose file looks like this:
version: ‘3’
services:
kavita:
image: jvmilazz0/kavita:latest
container_name: kavita
volumes:
– /your/comics:/comics
– /opt/kavita/config:/kavita/config
environment:
– PUID=1000
– PGID=1000
ports:
– 5000:5000
restart: unless-stopped
First Login and Library Setup
Run docker compose up -d and navigate to http://localhost:5000 in your browser. The first time you open Kavita, it prompts you to create an admin account. Use a strong password – if you ever expose this server to the internet, this account is your only gate. After logging in, go to the Admin Dashboard and open the Libraries section. Click “Add Library,” name it (for example, “Manga” or “Western Comics”), set the type to match your content, and point it at the container path you mounted – in this example, /comics.
Kavita will immediately begin scanning that directory. Depending on how many files you have, the initial scan can take anywhere from a few seconds to several minutes. Series are grouped automatically based on folder names, and Kavita pulls metadata from embedded ComicInfo.xml files when they exist. If your files do not have embedded metadata, Kavita can still display them – it just relies on folder and file names for organization. You can trigger a metadata refresh manually from the library settings to pull cover art and descriptions from its connected metadata providers.

Reading, Progress Tracking, and Remote Access
The built-in reader handles both left-to-right Western comics and right-to-left manga, and you can set the default reading direction per library. The reader supports single page, double page, and webtoon (vertical scroll) modes. Progress is saved automatically – if you close a chapter halfway through, Kavita picks up exactly where you left off. For manga readers specifically, the webtoon mode is genuinely well-implemented, making long-scroll series like tower-format manhwa much easier to read than a traditional page flipper would allow.
User accounts are worth setting up even if you are the only person using the server. Kavita’s reading lists, bookmarks, and want-to-read queues are all tied to individual accounts. If you share access with family members or friends, each person gets their own progress tracking, which prevents a household reading the same series from overwriting each other’s position. Accounts can be restricted to specific libraries, so you can give a child access only to the all-ages section without exposing the rest of your collection.
For remote access, the cleanest approach is to put Kavita behind a reverse proxy using Nginx Proxy Manager or Caddy, combined with a domain name or a service like Cloudflare Tunnel. This gives you HTTPS without exposing a raw port to the internet. If you already have a WireGuard VPN server running on your home network, you can skip the public exposure entirely and just connect through the VPN – Kavita will appear as though it’s local. That approach is simpler and avoids having to harden a public-facing web service.
Kavita also supports OPDS, which is an open catalog standard compatible with apps like Chunky, Moon+ Reader, and Panels on mobile. Once you enable OPDS in the admin settings and generate an API key, you can point any OPDS-compatible reader app at your server and browse or download files directly to your phone. This is useful when you want to read offline on a tablet during travel without manually syncing files beforehand. The OPDS feed URL follows the format http://your-server:5000/api/opds/your-api-key, and most apps accept it in a single field during setup.

One practical detail worth knowing: Kavita does not transcode or convert files. It serves them as-is, which means your reader app or browser handles the rendering. For most CBZ and PDF files, this is fine. But if you have a mix of formats and some older CBR files created with unusual compression, a small number of readers may struggle. Running a one-time batch conversion of CBR to CBZ using a tool like 7-Zip or comictagger before adding files to your library eliminates most compatibility edge cases before they become a frustration mid-read.
Frequently Asked Questions
What file formats does Kavita support?
Kavita supports CBZ, CBR, PDF, and EPUB formats, making it suitable for Western comics, manga, and light novels in a single server.
Can I access Kavita outside my home network?
Yes. You can expose Kavita via a reverse proxy with HTTPS, or access it privately through a VPN, which avoids exposing the server publicly.





