Docker Install


The Kavita team offers multiple different ways to run with docker:

  • - Only offers stable versions. Does not have a nightly branch.
  • Github Container Registry - Another option in case you don't want to use dockerhub.
  • Kavita Stable - Only stable versions going forward. Do not use the :nightly tag here as it is not updated anymore.
  • Kavita Nightly - Nightly builds used to help test features and new additions. If your going to run this version please join the Discord.

Docker run

Running your Kavita server in docker is super easy! We have worked with LinuxServer to provide an official image that supports easy user mappings and S6 compatibility. See the instructions at DockerHub

Important: This command is just a template. Change /your/manga/directory and /kavita/data/directory
Also change the volume bind path in the host

Note: In the volume bind parameter -v, the text after ":" is the virtual directory that will be created inside the docker container. (mind the : in between)

Note: We now also offer an image on the GitHub Container Registry at the tag it is identical to the image on DockerHub. Only available for nightly images at this time

Note: The value for TZ can be found via timedatectl show or find yours in a list of timezones (locally: timedatectl list-timezones).

docker run --name kavita -p 5000:5000 \
-v /your/manga/directory:/manga \
-v /kavita/data/directory:/kavita/config \
--restart unless-stopped \
-e TZ=Your/Timezone \
-d jvmilazz0/kavita:latest

Docker compose

Using docker compose lets you save your container config setup.

Also makes it easier to update your container if you don't use a container manager (portainer, watchtower) Create a docker-compose.yml file with the following:

Important: This command is just a template. Change the values to fit your needs

Note The way volumes work is: <path in your host> : <path inside the container> (mind the : in between)

Note: The value for TZ can be found via timedatectl show or find yours in a list of timezones (locally: timedatectl list-timezones).

        image: jvmilazz0/kavita:latest    # Using the stable branch from the offical repo.
        container_name: kavita
            - ./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
            - TZ=Your/Timezone
            - "5000:5000" # Change the public port (the first 5000) if you have conflicts with other services
        restart: unless-stopped

Execute docker-compose up -d in your terminal after moving to the folder where the file is at

You don't need to call it manga, you can name it anything that works for you. Kavita supports more than just Manga.

Important When creating a library, do not select the first manga, comics or epub you see. Navigate to / then you can select manga, comics or epub. Doing otherwise will result in your library being empty

Updating Kavita

IMPORTANT: If you are updating from a really old version you need to upgrade every 2 versions at a time. Doing otherwise you risk to having to restart with a fresh db
To do so use as image tag jvmilazz0/kavita:<version_tag_here> or<version_tag_here> if using the GitHub registry
Check available tags in the dockerhub tags page
Look for stable tags would just be x.y.z

You can run the following commands:

docker pull jvmilazz0/kavita:latest

Then run the command you used to first create docker.

docker run ...

If you used a docker-compose file, in your terminal head to where the file is allocated and run the command again

docker-compose up -d
# New docker versions have compose integrated as a sub-command.
docker compose up -d

Access Kavita

Browse to http://localhost:5000 to start using Kavita from any device inside your network. (change localhost to the host IP where your docker instance is at)

Please continue in first time setup wiki page