Zum Hauptinhalt springen
S-EDV news
← Alle Anleitungen
📘 Anleitung Cloud / Hosting 12.06.2026 · 8 min Lesezeit

Kavita mit Docker installieren: Schneller Reading-Server für Comics, Manga und eBooks

Kavita ist ein browserbasierter Reading-Server für Comics, Manga und eBooks, ohne externe Datenbank und mit OPDS für E-Reader. So richten Sie Kavita mit Docker Compose auf einem Linux-Host ein.

Geprüft am 30.09.2026 · für kavita 0.9.1.4

WerbelinksMit * markierte Links sind Werbelinks: Bei einem Kauf erhalten wir eine Provision, der Preis bleibt gleich. Als Amazon-Partner verdiene ich an qualifizierten Verkäufen. Mehr dazu

Leseecke am Abend mit E-Reader, Tablet und Bücherstapel auf einem Beistelltisch, im Hintergrund ein kleiner Heimserver im Regal

Kavita ist ein selbst gehosteter Reading-Server für Comics (CBR, CBZ), Manga, Webtoons und eBooks (EPUB, PDF). Über den Reader im Browser lesen Sie Ihre digitale Bibliothek auf jedem Gerät im Heimnetz, ohne Abo und ohne Cloud-Abhängigkeit. E-Reader-Apps wie KOReader oder Moon+ Reader binden Sie per OPDS an. Diese Anleitung führt Sie per Docker Compose auf einem Linux-Host bis zum laufenden Server, mit Prüfung nach jedem Schritt.

Voraussetzungen

  1. Linux-Host (x86_64, arm64 oder arm/v7), VM oder NAS mit Docker-Unterstützung, alternativ Windows oder macOS mit Docker Desktop
  2. Docker Engine ab 20.10 mit Compose-Plugin v2 (Befehl docker compose ohne Bindestrich). Fehlt Docker noch, folgen Sie zuerst der Grundlagenanleitung Docker und Docker Compose auf Linux installieren
  3. Mediendateien (CBR, CBZ, EPUB, PDF) auf dem Host-Dateisystem
  4. Freier Port 5000 (oder ein frei gewählter externer Port)
  5. Für den Zugriff von außen ein Reverse Proxy mit HTTPS, etwa Caddy als Reverse Proxy oder Traefik (für diese Anleitung nicht nötig)
  6. RAM: etwa 256 bis 512 MB im Betrieb; CPU-Last gering, da kein Transcoding

Eckdaten im Überblick

EigenschaftWert
Offizielles Imageghcr.io/kareadita/kavita (Spiegel auf Docker Hub: jvmilazz0/kavita)
Stabiler Tag0.9.1 bzw. latest (Stand September 2026: v0.9.1.4)
Nightly-Tagnightly (kein Wechsel zurück auf latest ohne neues Release)
Architekturenlinux/amd64, linux/arm64, linux/arm/v7
Port Web-UI und OPDS5000 (intern, extern frei wählbar)
DatenbankSQLite, eingebettet, kein externer DB-Container nötig
Config-Pfad (offizielles Image)/kavita/config (fest vorgegeben, nicht ändern)
ProjektstatusBeta (bis Version 1.0.0)
Volume (Beispiel)Container-PfadZweck
./manga/mangaManga-Bibliothek (Host-Pfad frei wählbar)
./comics/comicsComics-Bibliothek
./books/bookseBooks (EPUB, PDF)
./kavita-config/kavita/configSQLite-DB, Logs, Einstellungen (Pflicht)
UmgebungsvariableStandardwertPflicht?
TZEurope/BerlinNein, aber empfohlen

Schritt 1: Projektordner und Verzeichnisstruktur anlegen

Legen Sie einen eigenen Ordner für Kavita an. Das Beispiel verwendet /opt/kavita, ~/kavita funktioniert ebenso.

sudo mkdir -p /opt/kavita
sudo chown "$USER": /opt/kavita
cd /opt/kavita

# Unterordner für Medien und Konfiguration anlegen
mkdir -p manga comics books kavita-config

Liegen Ihre Mediendateien bereits an einem anderen Ort (z. B. /mnt/media/manga), müssen Sie die Medienordner nicht anlegen; Sie tragen die vorhandenen Pfade in Schritt 2 in die .env ein.

Verifizieren: ls /opt/kavita zeigt die Unterordner manga, comics, books und kavita-config.

Schritt 2: .env-Datei mit Konfiguration anlegen

Alle anpassbaren Werte stehen in der .env. Kavita braucht keine Passwörter oder Datenbankverbindungen als Umgebungsvariablen, nur Zeitzone und Host-Pfade.

# /opt/kavita/.env

# Externer Port (Host-Seite); Kavita lauscht intern immer auf 5000
KAVITA_PORT=5000

# Medienpfade auf dem Host (an Ihre Struktur anpassen)
MANGA_PATH=/opt/kavita/manga
COMICS_PATH=/opt/kavita/comics
BOOKS_PATH=/opt/kavita/books

# Konfigurationsverzeichnis (SQLite-Datenbank, Logs)
CONFIG_PATH=/opt/kavita/kavita-config

# Zeitzone
TZ=Europe/Berlin

Der Container-Pfad (/manga, /comics, /books) bleibt immer gleich; Sie ändern nur den Host-Pfad links vom Doppelpunkt.

Verifizieren: cat /opt/kavita/.env zeigt alle Werte, und ls auf jeden eingetragenen Pfad liefert keinen Fehler No such file or directory.

Schritt 3: compose.yaml erstellen

Legen Sie die Compose-Datei im Projektordner ab. Das Image aus der GitHub Container Registry (ghcr.io/kareadita/kavita) pflegt das Kavita-Projekt selbst; es unterliegt keinen Docker-Hub-Ratenlimits.

# /opt/kavita/compose.yaml

services:
  kavita:
    image: ghcr.io/kareadita/kavita:0.9.1
    container_name: kavita
    restart: unless-stopped
    ports:
      - "${KAVITA_PORT:-5000}:5000"
    volumes:
      - ${MANGA_PATH:-./manga}:/manga
      - ${COMICS_PATH:-./comics}:/comics
      - ${BOOKS_PATH:-./books}:/books
      - ${CONFIG_PATH:-./kavita-config}:/kavita/config
    environment:
      - TZ=${TZ:-Europe/Berlin}

Hinweise zur compose.yaml:

  1. Der Container-Pfad /kavita/config ist fest vorgegeben. Ändern Sie nur den linken (Host-)Teil des Volume-Mounts.
  2. Der Tag 0.9.1 hält Sie auf der Versionsreihe 0.9.1 und verhindert ungeplante Sprünge; latest folgt dem stabilen Release-Kanal. Wer nightly nutzt, kann wegen inkompatibler Datenbankmigrationen nicht ohne Weiteres auf latest zurückwechseln.
  3. Weitere Medienbibliotheken (z. B. /novels) binden Sie über zusätzliche Volume-Einträge ein.

Verifizieren: docker compose -f /opt/kavita/compose.yaml config gibt die aufgelöste Konfiguration ohne Fehlermeldung aus; die Werte aus der .env sind eingesetzt.

Schritt 4: Container starten

cd /opt/kavita
docker compose up -d

Docker lädt das Image, erstellt den Container und startet ihn im Hintergrund.

Verifizieren: docker compose ps zeigt in der Spalte STATUS den Wert Up und unter PORTS 0.0.0.0:5000->5000/tcp. docker compose logs kavita zeigt keine Fehler zu Port oder Volume. curl -I http://localhost:5000 antwortet mit 200 OK.

Schritt 5: Admin-Konto und erste Bibliothek einrichten

Rufen Sie im Browser http://<host-ip>:5000 auf. Beim ersten Start fragt Kavita Benutzername, E-Mail-Adresse und Passwort für das Admin-Konto ab. Erledigen Sie das sofort nach dem Start: Bis dahin kann jeder im Netz, der die Seite zuerst aufruft, das Admin-Konto anlegen.

Nach der Anmeldung öffnen Sie Einstellungen > Bibliotheken im Admin-Bereich und legen die Bibliotheken an:

  1. Auf „Bibliothek hinzufügen“ klicken
  2. Typ wählen (Manga, Comic oder Book)
  3. Den Container-Pfad eintragen, z. B. /manga oder /books
  4. Speichern; Kavita startet sofort einen Scan

In der Web-UI tragen Sie immer die Container-Pfade ein, nicht die Host-Pfade. Bei großen Bibliotheken dauert der Scan einige Minuten.

Verifizieren: Nach dem Scan erscheinen Ihre Serien und Bücher in der Bibliotheksübersicht. Bleibt die Bibliothek leer, prüfen Sie den Mount mit docker compose exec kavita ls /manga; eine leere Ausgabe bedeutet einen falschen Host-Pfad in der .env.

Schritt 6: OPDS für externe E-Reader einrichten

Kavita stellt jedem Benutzer eine eigene OPDS-URL mit seinen Berechtigungen bereit. Damit binden Sie Apps wie KOReader, Moon+ Reader, Panels oder Suwatte an.

Prüfen Sie zuerst als Admin, ob in den Server-Einstellungen OPDS aktivieren eingeschaltet ist; sonst zeigt Kavita den Hinweis „OPDS ist auf diesem Server nicht aktiviert“. Die OPDS-URL finden Sie anschließend unter Einstellungen > Authentifizierungsschlüssel / OPDS. Das Format lautet:

http://<host>:5000/api/opds/<ihr-api-key>

Der API-Key in der URL übernimmt die Authentifizierung. Behandeln Sie die URL deshalb wie ein Passwort und geben Sie sie nur an eigene Geräte weiter.

Verifizieren: curl -s "http://localhost:5000/api/opds/<ihr-api-key>" | head -5 gibt den Beginn eines XML-Dokuments aus (<?xml und <feed).

Schritt 7: Updates und Backup

Sichern Sie vor jedem Update das Config-Verzeichnis mit SQLite-Datenbank, Einstellungen und Logs:

# Container stoppen, Config sichern, neu starten
cd /opt/kavita
docker compose stop kavita
sudo mkdir -p /backup
sudo tar -czf /backup/kavita-config-$(date +%F).tar.gz -C /opt/kavita kavita-config
docker compose start kavita

Für ein Update innerhalb der Versionsreihe ziehen Sie das Image neu; für eine neue Reihe (z. B. 0.9.2) passen Sie vorher den Tag in der compose.yaml an und lesen die Release Notes:

docker compose pull && docker compose up -d

Eine Backup-Strategie für den gesamten Server beschreibt die Anleitung 3-2-1-Backup-Strategie umsetzen.

Verifizieren: tar -tzf /backup/kavita-config-*.tar.gz | head listet Dateien aus kavita-config/. Nach dem Update zeigt docker compose ps den Status Up, und unter Einstellungen > Server steht die neue Versionsnummer.

Troubleshooting: typische Fehler

  1. Bibliothek bleibt nach dem Scan leer: Der Host-Pfad existiert nicht oder enthält keine unterstützten Formate. Prüfen Sie mit docker compose exec kavita ls /manga, korrigieren Sie den Pfad in der .env und starten Sie mit docker compose up -d neu.
  2. OPDS-App meldet Fehler oder leeren Katalog: OPDS ist in den Server-Einstellungen deaktiviert, oder der API-Key wurde neu erzeugt. Schalten Sie OPDS ein und übernehmen Sie die aktuelle URL.
  3. Keine Verbindung oder HTTP 502 hinter dem Reverse Proxy: Der Container läuft nicht. Prüfen Sie docker compose ps; bei Status Exited lesen Sie docker compose logs kavita.
  4. Port 5000 belegt: Fehlermeldung address already in use. Ändern Sie den externen Port in der .env (KAVITA_PORT=5001) und führen Sie docker compose up -d aus. Unter macOS belegt der AirPlay-Empfänger Port 5000.
  5. Leere Datenbank nach Image-Wechsel: Das LinuxServer.io-Image nutzt /config statt /kavita/config. Passen Sie den Volume-Mount an und spielen Sie bei Bedarf das Backup ein.
  6. Wechsel von nightly auf latest scheitert: Beim Start erscheinen Fehler zu Datenbankmigrationen. Spielen Sie das Backup vor dem Nightly-Wechsel ein oder bleiben Sie bis zum nächsten stabilen Release auf nightly.
  7. Dateirechte beim LinuxServer.io-Image: Das offizielle Image läuft als root, Dateirechte sind dort selten ein Problem. Beim LinuxServer.io-Image setzen Sie PUID und PGID auf den Besitzer der Mediendateien.

Häufige Fragen

Brauche ich eine externe Datenbank (PostgreSQL oder MySQL)?

Nein. Kavita legt eine SQLite-Datenbank im Config-Verzeichnis (/kavita/config) an. Ein Datenbankcontainer ist weder nötig noch vorgesehen.

Welches Image soll ich nehmen: ghcr.io oder Docker Hub?

Beide sind offiziell und inhaltlich gleich. ghcr.io/kareadita/kavita liegt in der GitHub Container Registry, jvmilazz0/kavita ist der Spiegel auf Docker Hub, den auch das Kavita-Wiki verwendet. Die GHCR-Variante vermeidet die Pull-Ratenlimits von Docker Hub.

Wie verbinde ich meinen E-Reader per OPDS?

Aktivieren Sie OPDS in den Server-Einstellungen, kopieren Sie die persönliche OPDS-URL unter Einstellungen > Authentifizierungsschlüssel / OPDS und tragen Sie sie in die App ein (z. B. KOReader, Moon+ Reader, Panels, Suwatte). Ein separates Passwort ist nicht nötig, siehe Schritt 6.

Kann ich mehrere Medienbibliotheken einbinden?

Ja. Ergänzen Sie in der compose.yaml weitere Volume-Einträge, z. B. ${NOVELS_PATH:-./novels}:/novels. Nach docker compose up -d fügen Sie den Pfad in der Web-UI als Bibliothek hinzu.

Wie funktioniert das Update?

docker compose pull && docker compose up -d lädt das Image und erstellt den Container neu. Datenbank und Einstellungen im Config-Verzeichnis bleiben erhalten; sichern Sie es vorher (Schritt 7).

Unterstützt Kavita Single Sign-On?

Ja. Kavita unterstützt die Anmeldung per OpenID Connect (OIDC); die Einrichtung erfolgt in den Admin-Einstellungen der Web-UI. Passende Identity-Provider beschreibt die Anleitung Single Sign-On für den Self-Hosted-Stack.

Was passiert, wenn ich den Container lösche?

Solange das Config-Verzeichnis (kavita-config) auf dem Host bleibt, bleiben Datenbank, Einstellungen, Benutzer und Bibliotheken erhalten. Sie können den Container jederzeit neu erstellen.

Fazit

Kavita kommt ohne Datenbankcontainer und ohne Pflicht-Umgebungsvariablen aus; die Einrichtung erfolgt im Browser. Reader im Browser, OPDS für E-Reader und Benutzerverwaltung mit Rollen machen Ihre Comic-, Manga- oder eBook-Sammlung im Heimnetz zugänglich. Wegen des Beta-Status bis Version 1.0.0 gilt: vor jedem Update das Config-Verzeichnis sichern. Für eine reine eBook-Bibliothek mit Kindle-Versand ist Calibre-Web mit Docker eine Alternative.

Weiterführende Anleitungen und Quellen

  1. Docker und Docker Compose auf Linux installieren (Ubuntu/Debian)
  2. Calibre-Web mit Docker installieren: Web-Oberfläche für die eBook-Bibliothek
  3. Jellyfin mit Docker: eigener Media-Server ohne Abo
  4. Caddy als Reverse Proxy einrichten: Anfänger-Anleitung mit automatischem HTTPS
  5. Docker Compose absichern: Secrets, Healthchecks, Non-Root und Read-Only

Offizielle Quellen: Kavita Wiki: Docker-Installation, GitHub: Kareadita/Kavita