Kavita is a reading room for your ebooks, comics and manga. Put the files on your server, and everyone in the house can read them in a browser or an e-reader app, with their place kept in every book.
On this page
Good to know before you install
Kavita has no upload page: copy books, comics and manga into the app's folders of those names on the server, then scan the library in Kavita.
At a glance#
- What it is
- Ebook, Comic & Manga Reader Media
- Where it opens
- Web Interface
On its own port at
http://your-server:port, orbooks.your-domainonce you have a domain - Updates
- Automatic A backup is taken first, and it rolls back if the update fails
- Backups
- Included Part of the daily backup when that's switched on
- Copies
- One per server
What it's good for#
If you've collected EPUBs, PDFs or comic archives over the years, they're probably scattered across a laptop, a phone and an old USB stick. Kavita gathers them into one library with covers, series and reading lists, and lets you read them in any browser. Each person has their own account, so your bookmarks and "continue reading" shelf aren't mixed up with anyone else's, and Kavita remembers where you stopped whichever device you pick up.
It's built for series, which is why comics and manga readers like it: volumes and chapters are grouped and put in order for you.
Kavita or Audiobookshelf?
Audiobookshelf is the one for audiobooks and podcasts. Kavita is for things you read with your eyes, and it's much the better choice for comics and manga.
Signing in#
A new Kavita has no accounts, and upstream's own setup asks whoever opens it first to make the admin. LibrePortal doesn't leave that door open. While the install runs, Kavita is only reachable from the server itself; LibrePortal makes the admin account through Kavita's own first-run step, checks that it can sign in with it, and only then lets anyone else reach the app.
The account is called admin, and its password is in the Login Details shown when the install finishes. Press Welcome on the app's page to see it again. Then open Kavita with the Web Interface button.
LibrePortal also sets up three empty libraries while it's there, Books, Comics and Manga, so your first visit isn't a blank page.
If the install couldn't make the account
If something went wrong (Kavita didn't answer within three minutes, say), the install says so and leaves Kavita reachable from the server only, so nobody else can claim it. The simplest fix is to uninstall it and install it again. Only restart it to open it up once you know the admin account exists.
Getting your books in#
Kavita has no upload page. It reads files from folders on the server, and each library is one folder in Kavita's app folder:
| Library | Folder on the server | What goes in it |
|---|---|---|
| Books | /libreportal-containers/kavita/books |
EPUB and PDF |
| Comics | /libreportal-containers/kavita/comics |
CBZ and CBR archives, and images |
| Manga | /libreportal-containers/kavita/manga |
CBZ and CBR archives, and images |
(If you've moved Kavita to another disk, the folders moved with it.)
The one rule that trips people up: every series needs a folder of its own. Kavita ignores files sitting loose at the top of a library folder. A single novel counts as a series of one, so it gets a folder too:
books/
Terry Pratchett - Mort/
Mort.epub
comics/
Saga/
Saga v01.cbz
Saga v02.cbz
The folders belong to Docker's own user on the server, dockerinstall, so copy files in with sudo and hand them to that user. From a folder of books in your home directory, for example:
sudo rsync -a --chown=dockerinstall:dockerinstall ~/Books/ /libreportal-containers/kavita/books/
Kavita watches these folders, so new files usually appear by themselves after a short while. If they don't, open the library in Kavita and use Scan Library from its menu.
Kavita only ever reads these folders. It won't rename, tag or delete your files.
Adding people#
Give everyone their own account, so their reading progress stays theirs. Use the Tools tab:
- Open Kavita's page in LibrePortal and go to Tools.
- Run Create User Account with a username. The email is optional; without one, Kavita uses the username in its place. Leave the password empty and one is made for you; tick Make admin only for people who should manage the server with you.
- Send them the address and their password.
New accounts can see every library to begin with. If a library shouldn't be shared (the manga collection that isn't for the children, say), edit that person on Kavita's own Users page, where you can also set an age rating limit.
Reset User Password works for anyone, including admin; when you reset admin through it, LibrePortal keeps its own copy of the password in step, which it needs because the Tools sign in as admin to do their work. So change the admin password with the tool rather than inside Kavita. List Users, Set Admin Status and Delete User Account do what they say. The last two won't touch admin, for the same reason.
Reading on an e-reader or phone#
Kavita's web reader works well on a phone or tablet browser, and remembers your page. If you'd rather use an app, Kavita speaks OPDS, the standard catalogue format that many reading apps understand. It's switched on in a new Kavita.
Each person has their own OPDS address, with a private key built into it, in their account settings in Kavita, with a button to copy it. Paste that into the app as a new OPDS catalogue. KOReader, which runs on many Kobo, PocketBook and Android devices, is a good choice: Kavita's own documentation lists it as able to sync your reading progress back as well.
Treat that OPDS address like a password, because anyone who has it can browse your library as you.
That's why Kavita's port is open to anyone who can reach your server, with no extra login in front: e-readers have to sign in on the same port, and they can't get past a second login. If you only read at home, you can make it private and use the LibrePortal VPN when you're away. With a domain, Kavita answers at books.your-domain.
Good to know#
- Updates are automatic. It installs on 0.9.1 and takes new builds of that version, and from this release it also climbs to newer versions on its own, one at a time, one step a day, with a backup taken and checked before each. You can move it up yourself with Upgrade on its Updates tab, or hold it on its current version by setting it to Manual. See Updates.
- Backups include everything in Kavita's app folder: its database, everyone's reading progress, covers and settings, and the
books,comicsandmangafolders too. A large comic collection makes for a large first backup, so check your backup location has room. After that, only new files add to it. - One per server. Kavita can't run as several copies side by side, because LibrePortal's Tools and admin setup find it by its container name.
Addresses and ports#
Kavita has one port. LibrePortal picks a free port number for each when you install, so yours will differ from anyone else's. The Config tab's Network section shows them, and the app's Open button uses the right one. "Anyone" means it's reachable from wherever your server is reachable; you can make it private later.
| What it is | Who can reach it | With a domain |
|---|---|---|
| Web Interface | Anyone | books.your-domain |
Settings#
In its config file#
Kavita's own settings aren't on the Config tab yet. They live in the app's config file, described here so you know they exist. How to change them.
| Setting | What it does | Starts as |
|---|---|---|
NameCFG_KAVITA_DISPLAY_NAME |
What this app is called on your dashboards. Leave empty to use its usual name | Empty |
Show on the LibrePortal DashboardCFG_KAVITA_SHOW_ON_DASHBOARD |
Whether this app gets a shortcut on the front page of the LibrePortal WebUI, separate from any Dashy dashboard Choices: true, false |
true |
Usage statisticsCFG_KAVITA_TELEMETRY |
Whether Kavita may send usage numbers about this library to kavitareader.com Choices: true, false |
false |
Tools#
Kavita's Tools tab has 5 buttons for jobs you'd otherwise need a terminal for. Each one runs as a task, so you can watch it on the Tasks page and read what it did. More about Tools.
Set a new password for an existing user. Leave blank to generate one.
Add a new user. Tick "Make admin" for full rights.
List every active user.
Remove a user and their reading progress. LibrePortal's own admin cannot be removed.
Promote or demote a user.
Works with#
These are the other apps Kavita knows how to work with. Once it's installed, its page shows the same list with whether each one is connected. How this works.
- Grafana: Shows dashboards for the apps that have one. works with every app
- Prometheus: Collects metrics from the apps that can export them. works with every app
- Uptime Kuma: Watches your apps and shows when one goes down. works with every app
Privacy and security#
All clear Kavita is your own comic and book library. LibrePortal switches off the anonymous usage statistics it would send to its makers.
What leaves this server#
- Update and changelog checks use GitHub
- Kavita+ lookups, only if you enter a paid licence
What LibrePortal turns off#
- Anonymous usage statistics to kavitareader.com (switchable in Config)
Licence: GPL-3.0. Audited: 21 October 2026. See the privacy of every app and the Promise.
Sources#
- raw.githubusercontent.com/Kareadita/Kavita/develop/Kavita.Database/Seed.cs
- raw.githubusercontent.com/Kareadita/Kavita/develop/Kavita.Services/StatsService.cs
- raw.githubusercontent.com/Kareadita/Kavita/develop/Kavita.Common/Configuration.cs
- raw.githubusercontent.com/Kareadita/Kavita/develop/Kavita.Services/VersionUpdaterService.cs
Under the hood#
- It runs this image:
jvmilazz0/kavita:0.9.1@sha256:31181a32f0dda73cae68721867028a7253d57881b58bea5754cd9e578e75421a. - It can sit behind Authelia's sign-in once Authelia is installed.
- Its own project and documentation: github.com/Kareadita/Kavita
Ports, settings, tools and connections on this page are read from LibrePortal v0.10.97's app catalogue each time the guide is built.