Kavita Reader the Ubooquity killer

If you read Manga, ebooks, or Comics… then you should try Kavita. It’s still under development but Majora2007 (Joe) has put quite a lot of work into it so far. I think it’s amazing and is quite easily a replacement for Ubooquity. As much as I like Ubooquity it’s been a dead project for quite some time and is lacking in a few areas. And while Kavita might not have every feature quite yet, like PDFs, it’s all in the works. I’ve been working with Joe and a great group of people in the Discord chat room to beta test new features for the past several weeks. And Kavita has come quite a long way in such a short time. Please join us to help make this project even better. Joe needs developers with C#/ASP.NET, Angular 11 or CSS experience. So please join us in Discord chat even if you’re just there to ask about the project.

If you’re going to use Docker (which I highly recommend) then I have some examples below for using Docker Volumes instead of the bind mounts provided in the instructions. And a big thanks to Kizaing for making the images. He hopped into the Discord one day and volunteered to incorporate Kavita into Docker products for us.

Use a command line start command:

docker run --name kavita -p 5000:5000
-v /your/server/mount:/manga
-v kavita_temp:/kavita/temp
-v kavita_cache:/kavita/cache
-v kavita_data:/kavita/data
-v kavita_logs:/kavita/logs
–restart unless-stopped
-d kizaing/kavita:latest

If you use Portainer and want to use a Stack to quickly deploy Kavita:

version: ‘3.9’
services:
kavita:
image: kizaing/kavita:latest
volumes:
- /your/media/mount:/manga:ro
- kavita_temp:/kavita/temp
- kavita_cache:/kavita/cache
- kavita_data:/kavita/data
- kavita_logs:/kavita/logs
ports:
- “5000:5000”
restart: unless-stopped
volumes:
kavita_temp:
kavita_cache:
kavita_data:
kavita_logs:

version: '3.9'
services:
  kavita:
    image: kizaing/kavita:latest
    volumes:
      - /srv/dev-disk-by-label-3TB2/Media5/Ubooquity:/manga:ro
      - kavita_temp:/kavita/temp
      - kavita_cache:/kavita/cache
      - kavita_data:/kavita/data
      - kavita_logs:/kavita/logs
    ports:
            - "5000:5000"
    restart: unless-stopped
volumes:
  kavita_temp:
  kavita_cache:
  kavita_data:
  kavita_logs:

The video is here for anyone who gets here before seeing it…

An update. As of today 10 May 2021 the Nightly version has been updated to include several feature updates and fixes. Also, thanks to Chris aka Kizaing, you can now create Kavita with only one Docker Volume.

docker run --name kavita -p 5000:5000 \
-v /your/files:/manga \
-v /your/other/files:/books \
-v /your/other/other/files:/content \
-v kavita:/kavita/data \
--restart unless-stopped \
-d kizaing/kavita:nightly

And for Compose/Portainer Stack: (I’ve renamed it :/content:ro in this example, but you can add as many locations as you want with whatever folder name you want)

version: '3.9'
services:
  kavita:
    image: kizaing/kavita:nightly
    volumes:
      - /your/server/files:/content:ro
      - kavita:/kavita/data
    ports:
            - "5000:5000"
    restart: unless-stopped
volumes:
  kavita:

Hello. I’ve been looking for anything that can compete with Ubooquity or at least be on the same level. The thing is I’m having a a little trouble getting the program to run on Ubuntu or Linux Mint. I don’t see any in-depth documentation as to how to actually install and run the program.
I see that there’s detailed installation and setup in Docker but not Linux. Why not. BTW, I’ve tried the regular setup instruction from the Read.MD to the letter …NOTHING HAPPENED. It wouldn’t even execute. Could someone please test this out and post exactly how to get this running in Linux WITHOUT DOCKER.

HI there… I’m not an expert on Linux but I have installed a few things here and there. And it does work on Docker and Windows so I’m sure we can help. I would ask that you head over to the Discord support channel as we’ve got a few folks in there that can certainly help. And your feedback may help other Linux users in the future.

Another great source of information is the new Kavita Wiki… It’s still a work in progress but it is available at https://wiki.kavitareader.com

There have been a few updates recently so I thought I might share my most recent Portainer Stack for using Kavita. Stacks are essentially Docker Compose configurations. So all you have to do is go to the Image and download the latest version, you’ll see that the running instance changes names to gibberish because you aren’t on the new latest you downloaded… Then go to the Stack and in the Editor tab there is the Update Stack button… hit that and it’ll come back up using the new latest Image. Then you can delete the old one.

version: '3.9'
services:
  kavita:
    image: kizaing/kavita:nightly
    environment:
      TZ: "America/Chicago"   
    volumes:
      - /srv/dev-disk-by-label-3TB2/Media5/kavitafiles:/manga:ro
       - kavita:/kavita/config
    ports:
            - "5000:5000"
    restart: unless-stopped
volumes:
  kavita:

I am running Docker on an OpenMediaVault NAS where the files are located… So the source files for the volume are on the same system.

If you use the above (most recent template) for a Portainer Stack based on my video… then the only difference you might notice is when going to select files for a Library you won’t see a “/content” folder it would be “/manga” per the above config.

- /srv/dev-disk-by-label-3TB2/Media5/kavitafiles:/manga:ro

The part on the left of the : is the bind mount where your files are located. In my case this is running on my NAS so that’s a shared folder. The part to the right of the : which in this case is /manga is what will be mapped inside the container, which is why when creating a Library the /manga folder is what will appear. However you can change that to whatever you want. In the video that line had /content. The part right after “:ro” makes it Read Only. Maybe not a necessary step but one I use. Hope that helps.

Hello! I’ve watched your video about installing Kavita using Portainer Stack.
I am trying to follow your steps but can’t really replicate stack code within my personal needs. The thing is that i need to write a path to my D drive on windows where i have my book library stored for Kavita.
I tried making a simple container with docker but my D drive is nowhere to be seen after installation
Then i tried ro do a stack - no luck as well. It’s not even deploying since I am clearly doint somethin wrong.
I tried to ask in the support channel of Kavita Discord but with no luck sadly.
Here are the codes i am using. Thanks in advance!
docker run --name kavita -p 5000:5000
-v /d/Bookshelf:/manga
-v /d/Bookshelf\kavita:/kavita/config
–restart unless-stopped
-e TZ=Russia/Moscow
-d kizaing/kavita:latest

version: ‘3.9’
services:
kavita:
image: kizaing/kavita:latest
volumes:
- d\Bookshelf:/content:ro
- d\Bookshelf:/kavita/data
- d\Bookshelf\kavita:/kavita/config
ports:
- “5000:5000”
restart: unless-stopped
volumes:
kavita:

So I assume you are using Docker for windows? If that is the case there might be settings in Windows for Docker where you select which local drives to make available inside Docker. One that’s there it should just be a matter of getting the syntax correct for using the volume. Since it’s windows I assume it needs to be something like -v d:/folder

Have a look here https://rominirani.com/docker-on-windows-mounting-host-directories-d96f3f056a2c

It’s hard for me to help because I don’t run Docker for windows. I run it in ubuntu and attach a network drive from my NAS for the files.

Yes I am running Docker on Windows.
Unfortunately this guide is outdated. There is no option to share drives in the latest version of Docker for Windows.
There’s another manual from Docker itself but it’s also talking about nonexistent Shared Folders list

Shared folders on demand

You can share a folder “on demand” the first time a particular folder is used by a container.

If you run a Docker command from a shell with a volume mount (as shown in the example below) or kick off a Compose file that includes volume mounts, you get a popup asking if you want to share the specified folder.

You can select to Share it, in which case it is added to your Docker Desktop Shared Folders list and available to containers. Alternatively, you can opt not to share it by selecting Cancel.

Well that on demand seems to be what you need. But yes the syntax does need to change based on the example they show in that article. So you would use
-v d:\Bookshelf:/whatever

And your Volumes section at the very bottom calls out a Docker volume not a “bind mount” like your others but doesn’t seem to be tied to anything. Hope those tips help.

Thank you very much for your attention for me. Really appreciated!
I’ve found the solution to my problem on Youtube and used a guide for installing Jellyfin with Docker. In this guide the compose file was a little bit modified and the directories for config and cache were created manually via command line before running the compose file. It’s now working just fine on my Windows laptop. Now i need to figure out how to install it on my WD NAS.
I will share my results on the Discord server and I am thinking about making a guide for noobs just like me.
Thank’s a lot again!

No problem at all glad you got it figured out.

please Indeed I proceeded to an installation on a docker Nas SYnology but I can’t add books. As soon as I create a library nothing is displayed yet I took good account volume mapping. Please help me