docker.recipes

Kavita Reading Server

beginner

Self-hosted digital library for comics, manga, and ebooks with a modern web reader, reading progress tracking, and OPDS support.

Overview

Kavita is a self-hosted digital library server specifically designed for organizing and reading comics, manga, and ebooks through a modern web interface. Originally developed as an alternative to commercial comic reading platforms, Kavita focuses on providing a Netflix-like experience for digital reading materials, complete with metadata scraping, reading progress tracking, and support for multiple file formats including CBZ, CBR, CB7, PDF, and EPUB. The server automatically processes and organizes your media files, extracting metadata and generating thumbnails for an intuitive browsing experience. This Docker deployment creates a complete digital library solution that transforms your collection of comics and ebooks into a professional-grade streaming service. Kavita's web-based reader eliminates the need for multiple reading applications across different devices, while its OPDS (Open Publication Distribution System) support enables integration with external e-readers and reading apps. The server handles file processing, thumbnail generation, and metadata extraction automatically, creating a polished library interface from your existing file collection. This configuration is ideal for comic collectors, manga enthusiasts, and avid readers who want to centralize their digital library while maintaining access across multiple devices. Libraries, educational institutions, and content creators will particularly benefit from Kavita's user management features and reading analytics, while home users can create a personal streaming service for their comic and ebook collections without relying on cloud-based platforms.

Key Features

  • Advanced comic and manga reader with panel-by-panel navigation and fit-to-screen options
  • Automatic metadata extraction and series organization with cover art generation
  • Reading progress synchronization across all devices and user accounts
  • OPDS feed integration for compatibility with external e-reader applications
  • Multi-format support including CBZ, CBR, CB7, PDF, and EPUB files
  • User management system with reading statistics and personalized libraries
  • Smart library scanning with duplicate detection and file organization
  • Responsive web interface optimized for tablets, phones, and desktop browsers

Common Use Cases

  • 1Home comic collectors wanting to digitize and organize their physical collection
  • 2Manga enthusiasts creating a centralized library accessible from multiple devices
  • 3Educational institutions providing digital reading materials to students
  • 4Public libraries offering digital comic and graphic novel collections
  • 5Content creators distributing comics and ebooks to subscribers
  • 6Small publishers managing digital distribution of their catalog
  • 7Reading groups sharing and tracking progress through graphic novels and manga series

Prerequisites

  • Minimum 1GB RAM for processing comic files and generating thumbnails
  • Available port 5000 or ability to modify KAVITA_PORT environment variable
  • Storage location with read/write access for library files (CBZ, CBR, PDF, EPUB)
  • Basic understanding of file organization as Kavita scans folder structures for series detection
  • Modern web browser supporting HTML5 for optimal reading experience

For development & testing. Review security settings, change default credentials, and test thoroughly before production use. See Terms

docker-compose.yml

docker-compose.yml
1services:
2 kavita:
3 image: jvmilazz0/kavita:latest
4 container_name: kavita
5 restart: unless-stopped
6 ports:
7 - "${KAVITA_PORT:-5000}:5000"
8 environment:
9 - TZ=${TZ:-UTC}
10 volumes:
11 - ${LIBRARY_PATH:-./library}:/library
12 - kavita_config:/kavita/config
13
14volumes:
15 kavita_config:

.env Template

.env
1# Kavita Configuration
2KAVITA_PORT=5000
3TZ=UTC
4
5# Path to your comics/manga/ebook library
6LIBRARY_PATH=./library

Usage Notes

  1. 1Access Kavita at http://localhost:5000
  2. 2Create an admin account on first run
  3. 3Add library folders in Settings > Libraries
  4. 4Supports CBZ, CBR, CB7, PDF, EPUB formats
  5. 5Reading progress syncs across devices
  6. 6OPDS feed available for e-reader integration

Quick Start

terminal
1# 1. Create the compose file
2cat > docker-compose.yml << 'EOF'
3services:
4 kavita:
5 image: jvmilazz0/kavita:latest
6 container_name: kavita
7 restart: unless-stopped
8 ports:
9 - "${KAVITA_PORT:-5000}:5000"
10 environment:
11 - TZ=${TZ:-UTC}
12 volumes:
13 - ${LIBRARY_PATH:-./library}:/library
14 - kavita_config:/kavita/config
15
16volumes:
17 kavita_config:
18EOF
19
20# 2. Create the .env file
21cat > .env << 'EOF'
22# Kavita Configuration
23KAVITA_PORT=5000
24TZ=UTC
25
26# Path to your comics/manga/ebook library
27LIBRARY_PATH=./library
28EOF
29
30# 3. Start the services
31docker compose up -d
32
33# 4. View logs
34docker compose logs -f

One-Liner

Run this command to download and set up the recipe in one step:

terminal
1curl -fsSL https://docker.recipes/api/recipes/kavita-reading-stack/run | bash

Troubleshooting

  • Comics not appearing in library: Ensure files are in supported formats (CBZ, CBR, CB7, PDF, EPUB) and folder permissions allow read access
  • Thumbnail generation failing: Check available disk space and ensure container has write permissions to kavita_config volume
  • OPDS feed not accessible: Verify user account has OPDS access enabled in user settings and check firewall rules for port 5000
  • Reading progress not syncing: Confirm user is logged in and browser cookies are enabled for session persistence
  • Slow library scanning: Reduce concurrent scan operations in settings and ensure adequate RAM allocation for large collections
  • Series metadata incorrect: Use the manual metadata refresh option or check folder naming conventions match Kavita's parsing rules

Community Notes

Loading...
Loading notes...

Download Recipe Kit

Get all files in a ready-to-deploy package

Includes docker-compose.yml, .env template, README, and license

Ad Space