If you have a digital library that contains a variety of mediums (cbr/cbz,pdf,epub) and you want a system that allows you to read on the web and share with your friends and family, Kavita might be the solution you are looking for! 📖
Kavita was originally designed as a Manga reader but has since expanded to include all kinds of content. It is licensed on the GPL-3.0 license and can be selfhosted on all popular platforms.
Purchasing Comics and Other Content
I have taken advantage of Humble Bundles in the past to slowly build up a library of Comics and eBooks.
All examples in this post reflect my personal collection which I have purchased.
Try a Demo to see if it's right for you!
Username: demouser Password: Demouser64
Getting Started in Docker
Kavita provides example docker run and docker compose commands on their main homepage and in their documentation. A very basic example is shown below:
version: '3.9' services: kavita: image: kizaing/kavita:latest # Change latest to nightly for latest develop builds (can't go back to stable) container_name: kavita volumes: - ./manga:/manga # Manga is just an example you can have the name you want. See the following - ./comics:/comics # Use as many as you want - ./books:/books # - ./data:/kavita/config # Change './data if you want to have the config files in a different place. # /kavita/config must not be changed environment: - TZ=Your/Timezone ports: - "5000:5000" # Change the public port (the first 5000) if you have conflicts with other services restart: unless-stopped
You can have as many volume mounts as you need. I personally chose to do one for eBooks and one for comics. Within those two categories, I can then create a more detailed folder structure based on series.
After I got Kavita up and running, I had a problem with my comics not showing up in my library. At this point, I hadn't explored their documentation and had instead just thrown my files into my comics folder (root folder).
After some faffing about, I found my way to their documentation and saw this very important bit of information of how the scanning mechanism works:
Kavita expects all series to be nested in a folder. The ideal layout is:
Library Root ┠── Series Name A │ ┠── Series Name A - v01.cbz │ ⋮ │ ┠── Series Name A - v06.cbz │ ┖── Specials │ ┖── Artbook 1.cbz │ ┖── Series Name B ┠── Series Name B - v01.cbz ⋮ ┠── Series Name B - v06.cbz ┖── Specials ┖── Artbook 1.cbz
Ebooks are controlled entirely around the metadata that is written to the file.
eBooks are primarily parsed by metadata within the epub file (opf). Filenames are used only for Volume and Series, but metadata overrides everything. eBooks do not fall back to folders for parsing. Kavita scans ebooks in a 2 pass process. The first pass tries to parse from the filename. If volume and series name can be parsed, then it is treated like a manga or comic. If not enough information is present, the internal epub metadata is used. Within the metadata, certain tags are used to group them into a collection, like "Expanse". Calibre eBook Management software can be used to edit epub metadata to include Series, Volume, and Title so that series with multiple books parse correctly into the same series. Calibre
Most of my eBooks from Humble bundle were super weird and didn't work right away in Kavita. Humble bundle delivered them as
zip files which technically an
.epub is a type of zip, but I found I had to do some wrangling with Calibre and Sigil to get things to work appropriately.
I worked with a few people in the community to trouble shoot some issues and these are the steps we followed:
- Rename the file extension from
- Import the file into Calibre and convert it to
epubthen download metadata in Calibre
- Open the
epubfile in Sigil and use
F7to test for issues
- Correct issues and save file
- Upload file to Kavita and rescan library
I found success with most of my eBooks following these steps. It really boils down to how well the package was delivered. I also found that I had to point my library mount to the root eBook folder for it to find my books.
After restructuring my folders, everything started to work!
The Reading Experience
Reading Comics was fantastic. I used landscape on my phone and portrait/landscape on my iPad mini. Syncing between devices was seamless and I read several hundred pages of various comics during this testing phase.
eBooks were a little more troublesome. I found that I couldn't use the "tap pagination" feature reliably. This means that when you reach the bottom of a page, you tap in the margins and the expected behavior is that you advance to the next page and are placed at the top. The current behavior is that you advance to the next page, but you go to a similar location to the previous page (near the bottom). I did open a bug report with the project to address this issue.
Final Notes and Thoughts
I really enjoyed my experience with this project and if I stick with it, I plan to help support the project.
We cover a lot of projects on Noted and if you are in a position to contribute time, talent or treasure to help a project that you use regularly, I encourage you to do so this year.
Returning value (time, talent, treasure) to projects that you use helps keep the projects we depend on healthy and active. Detailed and courteous bug reports are one way that I attempt to contribute to many projects. You don't need to be a dev or provide monetary contributions to return value to a project. Being active and helpful in the community is a great way to give back. If you'd like to get involved in the Kavita community, they have a Discord that you can join. Monetary links to help support the project are also included below.