🐳 Kavita

Kavita is a fast, feature rich, cross platform reading server. Built with the goal of being a full solution for all your reading needs. Setup your own server and share your reading collection with your friends and family.

Docker Ready Ports: 5000 11,377 stars
1. Pull Image docker pull Kareadita/Kavita:latest
2. 1-Click Launch Command docker run -d --name Kavita -p 5000:5000 --restart always Kareadita/Kavita:latest
Dockerfile
#This Dockerfile creates a build for all architectures

#Image that copies in the files and passes them to the main image
FROM ubuntu:noble AS copytask

ARG TARGETPLATFORM

#Move the output files to where they need to be
RUN mkdir /files
COPY _output/*.tar.gz /files/
COPY UI/Web/dist/browser /files/wwwroot
COPY copy_runtime.sh /copy_runtime.sh

RUN chmod +x /copy_runtime.sh
RUN /copy_runtime.sh
RUN chmod +x /Kavita/Kavita

#Production image
FROM ubuntu:noble

COPY --from=copytask /Kavita /kavita
COPY --from=copytask /files/wwwroot /kavita/wwwroot
COPY Kavita.Server/config/appsettings.json /tmp/config/appsettings.json

#Installs program dependencies
ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update \
  && apt-get install -y libicu-dev libgdiplus curl tzdata libjemalloc2 \
  && rm -rf /var/lib/apt/lists/*

COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh

EXPOSE 5000

WORKDIR /kavita

HEALTHCHECK --interval=30s --timeout=15s --start-period=30s --retries=3 CMD curl -fsS http://localhost:5000/api/health || exit 1

# Enable detection of running in a container
ENV DOTNET_RUNNING_IN_CONTAINER=true
# Set the time zone
ENV TZ=UTC

ENTRYPOINT [ "/bin/bash" ]
CMD ["/entrypoint.sh"]