Media servers are among the first utilities every computing enthusiast self-hosts at the beginning of their home lab journey – including yours truly. Navidrome and moOde Audio are neat tools for audiophiles looking for a Spotify replacement, while Immich is my top recommendation for folks who want to break free from the cloud-based Google Photos. On the more prominent end of the spectrum, you’ve got Jellyfin, a completely private FOSS service designed to help you manage the TV shows and movies in your digital library.

But since I identify as a bibliophile first and foremost, I’ve got a vast collection of ebooks, spanning everything from comics to graphic novels. Luckily, Kavita serves the same purpose as Jellyfin for my unorganized ebook collection.

👁 Opening a book on Calibre-Web
5 best self-hosted services for bibliophiles

Fancy yourself a bibliophile? Here are five useful apps you can host on your home server

What’s Kavita, anyway?

An ebook management tool with a sleek UI

At its core, Kavita is a self-hosted utility that helps you organize your collection of ebooks, specifically comics, webtoons, manga, and graphic novels. I say that because it’s compatible with CBR, CBZ, CB7, CBT, and a host of other comic-oriented file formats, and comes with a stylish UI that makes your digital collection pop out. On the management front, Kavita lets you divide your ebook repertoire into libraries, and you have the option to set up reading lists for each library.

For the ebooks themselves, you can switch their covers, add related media, modify their metadata, and mark them as read. My favorite feature is the Generate Colorscape option, which creates Jellyfin-like accent colors for each comic based on the cover page’s gradients. Kavita also includes a stat-tracking utility, which keeps tabs on your reading progress, pages read, and hours spent in the app.

Kavita’s UI is accessible from web browsers, though the app also lets you add email addresses for Kindle and other devices that can’t access its interface directly. If you use CBL lists to keep track of the reading order for long-running comic franchises like I do, you’ll be glad to know that Kavita can import .cbl files. It also creates an OPDS URL and an API key to help you access your ebook library from external readers. Me? I prefer Kavita's built-in reader instead…

It's armed with a robust built-in EPUB reader

Confession time: I tend to use a Calibre-Web instance to store and consume my conventional ebooks. Unfortunately, the reader built into the ebook management server is just barely serviceable for comics. Meanwhile, Kavita is simply better if you read comics, webtoons, graphic novels, and everything in between. For example, the Layout menu lets me switch between single, double, and double (reverse) pages – and the last one is especially useful for manga, since that’s the way they’re meant to be read.

There’s also the image brightness, scaling, width overrides, and other minor options to further enhance your reading experience. Not to mention, Kavita includes the good ol’ bookmark utility for folks like me who tend to pick up multiple comics at once.

Deploying a Kavita server

It can be set up on the big three OS families

Most of the self-hosted applications I’ve covered on XDA so far are shipped as Linux packages and aren’t typically available on macOS or Windows. Kavita provides a nice change of pace, as you can install the application on Windows, macOS, and Linux machines.

If you’re on Microsoft’s flagship OS, you have the option to deploy Kavita via its .exe file or by running the scoop bucket add extras and scoop install kavita command (assuming you’ve set up Scoop beforehand) inside the Windows terminal. On macOS and Linux, you’ll have to download their respective packages, unzip them, and run Kavita after making its script executable.

Or you can go the container route

While you could whip up a Kavita server as a normal desktop application, I prefer going down the container rabbit hole. Docker offers the easiest method to do so, as all you have to do is copy the Docker Compose code from this link into the docker-compose.yml file, map the right config and data folders, and spin up the container via the sudo docker compose up -d command.

If you’re on a NAS (which is an amazing host for a storage-hungry service like Kavita) that’s powered by Unraid or TrueNAS Scale, you can use the built-in Kavita templates from their respective app stores to get this ebook management server up and running. Or, you can check out CasaOS, Cosmos, Runtipi, or other containerization platforms, which offer pre-made Docker configs for a host of fun self-hosted services, including Kavita. On Proxmox, you can execute the bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/kavita.sh)" command within the terminal UI to deploy Kavita.

Build a reliable comic book library with Kavita

Regardless of the method you’ve used to deploy Kavita, you’ll have to use the Library tab within the Server section of the Settings page to add your book collection. Since I’d mounted a proper data folder when spinning up the Docker container, I simply selected it as the Media Folder when creating my ebook library. After that, running the Scan library will allow Kavita to detect all the ebooks within the data folder, provided you’ve created individual folders for each volume, issue, or even a collection of multiple issues.

👁 Accessing Papra from a MacBook
This minimal Paperless-ngx alternative is simple and easy to use, and I absolutely love it

Papra may not be perfect, but it packs enough features to help you manage your documents