Zum Inhalt

Kavita per Docker als eigene E-Book-Bibliothek einrichten

Veröffentlicht am 22. August 2026 · Geschätzte Lesezeit: 4 Minuten

Kavita stellt E-Books, Comics und Manga aus deinen eigenen Ordnern in einer übersichtlichen Weboberfläche bereit. Der Container liest die Mediendateien ein, während Benutzerkonten, Lesefortschritt und Vorschaubilder getrennt im Konfigurationsordner liegen. Die Einrichtung dauert ungefähr 20 Minuten; ein großer erster Scan kann länger benötigen.

Voraussetzungen

  • Ein Linux-Server mit Docker und Docker Compose
  • Der Port 5000 ist im Heimnetz frei
  • Eigene, legal vorliegende E-Books, Comics oder Manga
  • Ausreichend Speicherplatz für Medien, Vorschaubilder und Backups
  • Eine feste IP-Adresse für den Docker-Server

1. Ordner vorbereiten

Führe diesen Befehl auf dem Docker-Server aus. Er legt Projekt-, Konfigurations- und Medienordner in deinem Benutzerverzeichnis an:

mkdir -p ~/docker/kavita/config ~/medien/{buecher,comics,manga} && cd ~/docker/kavita

Kopiere danach einige Testdateien in die passenden Ordner unter ~/medien. Kavita verändert die Originaldateien in dieser Anleitung nicht.

2. Compose-Datei anlegen

Lege im Ordner ~/docker/kavita eine Datei compose.yaml mit folgendem Inhalt an:

services:
  kavita:
    image: jvmilazz0/kavita:latest
    container_name: kavita
    restart: unless-stopped
    environment:
      TZ: Europe/Berlin
    ports:
      - "5000:5000"
    volumes:
      - ./config:/kavita/config
      - ${HOME}/medien/buecher:/books:ro
      - ${HOME}/medien/comics:/comics:ro
      - ${HOME}/medien/manga:/manga:ro

${HOME} wird von Docker Compose durch dein Benutzerverzeichnis ersetzt. Die drei Medienordner sind mit :ro nur lesbar eingebunden. Der Pfad /kavita/config im Container darf laut offizieller Vorlage nicht geändert werden.

Aktuelles offizielles Image verwenden

Verwende jvmilazz0/kavita:latest. Das frühere Image kizaing/kavita wird nicht mehr unterstützt. Bei einer Migration vom LinuxServer.io-Image liegt dessen Konfiguration unter /config; die offizielle Kavita-Abbildung erwartet dagegen /kavita/config.

3. Konfiguration prüfen und starten

Prüfe im Projektordner die Compose-Syntax und die aufgelösten Pfade:

docker compose config --quiet

Starte Kavita im Hintergrund:

docker compose up -d

Kontrolliere den Container:

docker compose ps

Bei einem Startfehler zeigen die letzten Protokollzeilen meist die Ursache:

docker compose logs --tail=100 kavita

4. Administratorkonto einrichten

Öffne im Heimnetz http://<server-ip>:5000. Ersetze <server-ip> durch die feste IP-Adresse des Docker-Servers. Folge dem Einrichtungsassistenten und lege das erste Administratorkonto mit einem langen, einmaligen Passwort an.

Kein direkter Zugriff aus dem Internet

Leite Port 5000 nicht im Router weiter. Für Fernzugriff verwendest du ein privates VPN oder einen korrekt eingerichteten HTTPS-Reverse-Proxy. Gib anderen Personen eigene Konten statt das Administratorkonto zu teilen.

5. Bibliotheken hinzufügen

Öffne als Administrator die Bibliotheksverwaltung und lege nacheinander passende Bibliotheken an. Verwende dabei die Pfade im Container:

  • Bücher: /books
  • Comics: /comics
  • Manga: /manga

Starte anschließend einen Scan. Die Host-Pfade ~/medien/... werden in der Kavita-Oberfläche nicht angezeigt, weil der Container nur die eingebundenen Pfade kennt.

6. Funktion und Rechte prüfen

Öffne ein eingelesenes Testbuch oder einen Comic und blättere einige Seiten. Schließe den Browser, melde dich erneut an und kontrolliere, ob der Lesefortschritt erhalten geblieben ist.

Prüfe zusätzlich, ob der Container die Medien tatsächlich nur lesen kann. Dieser Befehl muss mit einer Meldung über ein schreibgeschütztes Dateisystem abbrechen:

docker compose exec kavita sh -c 'touch /books/kavita-schreibtest'

Falls wider Erwarten eine Datei erstellt wurde, entferne sie auf dem Host und kontrolliere, ob am Bücher-Mount in compose.yaml wirklich :ro steht.

7. Backup und Wiederherstellung

Kavita legt eigene Datenbanksicherungen standardmäßig unter config/backups ab. Für einen vollständigen Rückweg sicherst du den gesamten Konfigurationsordner. Stoppe den Container kurz:

docker compose stop kavita

Erstelle ein datiertes Archiv im Projektordner:

tar czf "kavita-config-$(date +%F).tar.gz" config

Starte Kavita danach wieder:

docker compose start kavita

Prüfe den Inhalt des Archivs:

tar tzf "kavita-config-$(date +%F).tar.gz" | head

Sichere die Mediendateien unabhängig davon an einem zweiten Ort. Zur Wiederherstellung stoppst du Kavita, entpackst das Archiv zurück in den Projektordner und startest den Container wieder. Eine interne Datenbanksicherung aus config/backups wird laut offizieller Anleitung bei gestopptem Kavita in den Ordner config entpackt.

8. Aktualisieren und zurückkehren

Erstelle zuerst das Backup aus Schritt 7. Lade dann das aktuelle stabile Image:

docker compose pull

Ersetze den Container mit unveränderter Konfiguration:

docker compose up -d

Kontrolliere Bibliotheken und Lesefortschritt. Bei Problemen stellst du das Konfigurationsarchiv wieder her. Wechsle nicht von einer Nightly-Ausgabe auf eine ältere stabile Ausgabe, da eine zurückgestufte Datenbank unlesbar sein kann.

9. Typische Fehler

  • Bibliothek bleibt leer: Verwende in Kavita /books, /comics oder /manga und nicht den Pfad des Docker-Hosts.
  • Port 5000 ist belegt: Prüfe mit sudo ss -ltnp | grep ':5000' oder ändere nur die linke Zahl, zum Beispiel auf 5001:5000.
  • Dateien erscheinen nach Änderungen nicht: Starte in der Bibliotheksverwaltung einen erzwungenen Scan und kontrolliere Dateirechte auf dem Host.
  • Konfiguration ist nach dem Neustart verschwunden: Prüfe den Mount ./config:/kavita/config und ob du den Stack aus dem richtigen Projektordner startest.
  • Alte CPU erzeugt fehlerhafte Vorschaubilder: Prüfe, ob der Prozessor die von Kavita benötigte Befehlssatzerweiterung SSE4.2 unterstützt.

10. Quellen und Videos

Fertig

Kavita stellt deine Bücher, Comics und Manga jetzt im Heimnetz bereit. Öffne http://<server-ip>:5000, melde dich an und rufe ein Testmedium auf. Bleiben Bibliothek und Lesefortschritt nach docker compose restart erhalten, funktioniert auch die dauerhafte Konfiguration.