Skip to main content

Run with Docker


The Docker images are published on:

Version tags

This image provides various versions that are available via tags.

latestlatest commit
MAJOR.xlatest MAJOR version, for example 0.x
x.y.zversion x.y.z


Here are some example snippets to help you get started creating a container.


docker create \
--name=komga \
--user 1000:1000 \
-p 25600:25600 \
--mount type=bind,source=/path/to/config,target=/config \
--mount type=bind,source=/path/to/data,target=/data \
--restart unless-stopped \

Then start the container:

docker start komga


version: '3.3'
image: gotson/komga
container_name: komga
- type: bind
source: /path/to/config
target: /config
- type: bind
source: /path/to/data
target: /data
- type: bind
source: /etc/timezone #alternatively you can use a TZ environment variable, like TZ=Europe/London
target: /etc/timezone
read_only: true
- 25600:25600
user: "1000:1000"
# remove the whole environment section if you don't need it
- <ENV_VAR>=<extra configuration>
restart: unless-stopped


Container images are configured using parameters passed at runtime (such as those above). These parameters are separated by a colon and indicate external:internal respectively. For example, -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 outside the container.

-p 25600:25600The port for the Komga APIs and web interface
--user 1000:1000User:Group identifier - see below for explanation
--mount type=bind,source=/path/to/config,target=/configDatabase and Komga configurations
--mount type=bind,source=/path/to/data,target=/dataLocation of your data directory on disk. Choose a folder that contains both your books and your preferred import location for hardlinks to work.
-e ENV_VAR=valueAny configuration environment variable

User / Group Identifiers

When using volumes (-v flags) permissions issues can arise between the host OS and the container, we avoid this issue by allowing you to specify the user ID and group ID.

Ensure any volume directories on the host are owned by the same user you specify and any permissions issues will vanish like magic.

In this instance UID=1000 and GID=1000, to find yours use id <your_user> as below:

$ id <your_user>
uid=1000(jdoe) gid=1000(jdgroup) groups=1000(jdgroup)

Increase memory limit

By default the java process will be limited in the maximum amount of memory (RAM) it can use, usually 1gb. If you encounter some OutOfMemoryException in the logs you probably need to increase the maximum memory Komga can use.

To do so, you can use the JAVA_TOOL_OPTIONS=-Xmx<limit> environment variable, where <limit> can be any amount like 2048m, 4g etc. For example to run Komga with a maximum of 4gb of memory:


Support info

  • Shell access whilst the container is running: docker exec -it komga /bin/bash
  • To monitor the logs of the container in realtime: docker logs -f komga


Below are the instructions for updating containers:

Via Docker Run/Create

  • Update the image: docker pull gotson/komga
  • Stop the running container: docker stop komga
  • Delete the container: docker rm komga
  • Recreate a new container with the same docker create parameters as instructed above (if mapped correctly to a host folder, your /config folder and settings will be preserved)
  • Start the new container: docker start komga
  • You can also remove the old dangling images: docker image prune

Via Docker Compose

  • Update all images: docker-compose pull
    • or update a single image: docker-compose pull komga
  • Let compose update all containers as necessary: docker-compose up -d
    • or update a single container: docker-compose up -d komga
  • You can also remove the old dangling images: docker image prune

Automatic updates

You can use Watchtower to automatically update your containers.