Calibre, Calibre-Web & CWA auf deinem Server installieren: Dein E-Book-Management mit Docker

E-Book-Manager Calibre und seine Web-Alternativen Calibre-Web und CWA (Calibre-Web Automated) auf seinem eigenen Server mit Docker installieren. Damit könnt ihr eure E-Book-Bibliothek zentral verwalten und von überall darauf zugreifen.

Calibre, Calibre-Web & CWA auf deinem Server installieren: Dein E-Book-Management mit Docker hero image

Du kannst dir das Setup auch auf Youtube in diesem Video ansehen.

Verbindung zum Server und Docker-Installation prüfen/durchführen

Das Erste, was wir brauchen, ist eine Verbindung zu unserem Server. Ich öffne ein Terminal und verbinde mich per SSH:

ssh deployn@DEINE_SERVER_IP

Ersetzt deployn durch euren Benutzernamen und DEINE_SERVER_IP durch die IP-Adresse eures Servers. Nach der Authentifizierung (ggf. mit yes bestätigen und Passwort eingeben) sind wir verbunden.

Nun prüfen wir, ob Docker und Docker Compose installiert sind:

docker -v
docker compose version

Falls Docker noch nicht installiert ist, holen wir das nach. Für Ubuntu-Server (passt dies ggf. für eure Distribution an) geht das oft so (basierend auf der offiziellen Docker-Dokumentation):

  1. Paketlisten aktualisieren:

    # Add Docker's official GPG key:
    sudo apt-get update
    sudo apt-get install ca-certificates curl
    sudo install -m 0755 -d /etc/apt/keyrings
    sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
    sudo chmod a+r /etc/apt/keyrings/docker.asc
    
    # Add the repository to Apt sources:
    echo \
      "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
      $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
      sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    sudo apt-get update
  2. Docker Engine, CLI, Containerd und Docker Compose Plugin installieren:

    sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Nach der Installation prüfen wir erneut die Versionen:

docker -v
# Erwartete Ausgabe (Beispiel): Docker version 28.1.1, build ...
docker compose version
# Erwartete Ausgabe (Beispiel): Docker Compose version v2.25.1

Optional können wir das gesamte System noch aktualisieren:

sudo apt update && sudo apt upgrade -y

Calibre mit Docker installieren (LinuxServer.io Image)

Wir verwenden das beliebte Docker-Image von LinuxServer.io für Calibre.

  1. Ordner erstellen: Wir legen einen Ordner für unsere Calibre-Konfiguration an.

    mkdir calibre
    cd calibre
  2. docker-compose.yml erstellen: Erstellt eine Datei namens docker-compose.yml.

    nano docker-compose.yml
  3. Inhalt einfügen und anpassen: Kopiert die folgende Konfiguration hinein und passt sie an.

    services:
      calibre:
        image: lscr.io/linuxserver/calibre:latest
        container_name: calibre
        security_opt:
          - seccomp:unconfined #optional
        environment:
          - PUID=1000 # Eure Benutzer-ID
          - PGID=1000 # Eure Gruppen-ID
          - TZ=Europe/Berlin # Eure Zeitzone
          - PASSWORD=asdfasdf # Ein SICHERES Passwort wählen!
          - CLI_ARGS= # Optional: Zusätzliche Calibre CLI Argumente
        volumes:
          - ./config:/config # Pfad zur Konfiguration und Bibliothek auf dem Host
        ports:
          - 8080:8080 # GUI Zugriff
          - 8081:8081 # Calibre Server (optional)
        restart: unless-stopped
  4. Wichtige Anpassungen:

    • PUID/PGID: Prüft eure Benutzer- und Gruppen-ID mit dem Befehl id im Terminal auf eurem Server und passt PUID und PGID entsprechend an (oft ist es 1000).
    • TZ: Setzt eure korrekte Zeitzone (z.B. Europe/Vienna, Europe/Zurich).
    • PASSWORD: Ändert asdfasdf unbedingt in ein starkes, sicheres Passwort! Dieses Passwort wird für den Zugriff auf die Calibre GUI über den Browser benötigt.
    • Volumes: ./config:/config bedeutet, dass im aktuellen Verzeichnis (calibre) ein Unterordner config erstellt wird (falls nicht vorhanden), in dem Calibre seine Konfiguration und die E-Book-Bibliothek ablegt.
  5. Konfigurationsordner erstellen (falls nötig): Da wir ./config gemappt haben, stellen wir sicher, dass dieser Ordner existiert:

    mkdir config
  6. Container starten:

    sudo docker compose up -d

    Docker lädt nun das Calibre-Image herunter (dies kann dauern, es ist recht groß) und startet den Container im Hintergrund (-d).

Calibre – Der erste Test (und die Tücken)

Nach dem Start können wir die Auslastung prüfen:

# Systemauslastung allgemein
htop

# Docker Container spezifisch
sudo docker stats

# Logs anschauen (Ctrl+C zum Beenden)
sudo docker compose logs -f

In meinem Fall verbrauchte Calibre direkt nach dem Start ca. 360 MB RAM. Die Logs sollten keine gravierenden Fehler zeigen.

Nun versuchen wir, auf die Weboberfläche zuzugreifen: Öffnet euren Browser und gebt http://DEINE_SERVER_IP:8080 ein.

Ihr solltet zur Anmeldung aufgefordert werden:

  • Benutzername: abc (Standardbenutzer, wenn nicht anders konfiguriert)
  • Passwort: Das Passwort, das ihr in der docker-compose.yml festgelegt habt (z.B. asdfasdf - hoffentlich habt ihr ein besseres gewählt!).

Nach erfolgreicher Anmeldung startet der Calibre-Einrichtungsassistent:

  1. Wählt den Speicherort der Bibliothek (der Standard im Container /config ist korrekt, da wir diesen Ordner gemappt haben).
  2. Optional: Wählt euren E-Book-Reader aus.
  3. Schließt die Einrichtung ab.

Calibre startet nun seine vollständige Desktop-Oberfläche im Browser. Ihr seht eine leere Bibliothek und eventuell einen “Quick Start Guide”.

Achtung Performance: In meinem Test führte das Öffnen des Buches zu einer sehr hohen CPU- und RAM-Auslastung, die meinen kleinen Testserver überforderte und zeitweise unerreichbar machte. Ein Server-Neustart (sudo reboot) war nötig. Die volle Calibre-GUI über Web-VNC ist sehr ressourcenhungrig! Für den reinen Lese- und Verwaltungsbetrieb ist dies oft nicht die ideale Lösung.

Das Wichtigste an diesem Schritt war jedoch, dass Calibre im gemappten ./config-Ordner die Bibliotheksstruktur angelegt hat, insbesondere die metadata.db-Datei.

# Im 'calibre'-Ordner auf dem Host:
ls config/
# Sollte u.a. "Calibre Library" anzeigen
ls config/'Calibre Library'/
# Sollte u.a. "metadata.db" anzeigen

Calibre-Web – Die leichtgewichtige Alternative

Da die volle Calibre-GUI zu schwerfällig ist, stoppen wir den Calibre-Container und installieren stattdessen Calibre-Web. Dies ist eine schlanke Webanwendung, die auf die von Calibre erstellte metadata.db zugreift.

  1. Calibre-Container stoppen:

    # Sicherstellen, dass wir im 'calibre'-Ordner sind
    cd /pfad/zu/eurem/calibre-ordner
    sudo docker compose down
  2. docker-compose-calibre-web.yml erstellen: Wir erstellen eine neue Compose-Datei für Calibre-Web, um die Konfigurationen getrennt zu halten.

    nano docker-compose-calibre-web.yml
  3. Inhalt einfügen und anpassen:

    services:
      calibre-web:
        image: lscr.io/linuxserver/calibre-web:latest
        container_name: calibre-web
        environment:
          - PUID=1000 # Eure Benutzer-ID
          - PGID=1000 # Eure Gruppen-ID
          - TZ=Europe/Berlin # Eure Zeitzone
          - DOCKER_MODS=linuxserver/mods:calibre-web-update-calibre # Optional: Ermöglicht In-App-Updates für Calibre-Metadaten-Tools
          - OAUTHLIB_RELAX_TOKEN_SCOPE=1 # Optional: Für bestimmte OAuth-Logins nötig
        volumes:
          - ./calibre-web-config:/config # Neuer Ordner für Calibre-Web Konfiguration
          - ./config:/books # Pfad zur bestehenden Calibre-Bibliothek!
        ports:
          - 8083:8083 # Port für Calibre-Web
        restart: unless-stopped
  4. Wichtige Anpassungen:

    • PUID/PGID/TZ: Wie bei Calibre anpassen.
    • Volumes:
      • ./calibre-web-config:/config: Hier speichert Calibre-Web seine eigene Konfiguration. Wir erstellen diesen Ordner (mkdir calibre-web-config).
      • ./config:/books: Das ist der entscheidende Punkt! Wir mappen den Ordner mit der Calibre Library, den Calibre zuvor im ./config-Ordner erstellt hat, in den Container unter /books. So greift Calibre-Web auf dieselbe Bibliothek zu. Stellt sicher, dass der Pfad ./config/Calibre Library korrekt ist, relativ zu eurer docker-compose-calibre-web.yml.
    • Ports: Wir verwenden Port 8083, da 8080 eventuell noch von anderen Diensten genutzt werden könnte (oder um klar zu trennen).
  5. Container starten:

    sudo docker compose -f docker-compose-calibre-web.yml up -d

    Das Calibre-Web-Image ist deutlich kleiner und startet schneller.

Calibre-Web – Konfiguration und Nutzung

  1. Zugriff: Öffnet http://DEINE_SERVER_IP:8083.
  2. Erster Login: Die Standard-Anmeldedaten sind:
    • Benutzername: admin
    • Passwort: admin123
  3. Datenbankpfad konfigurieren: Nach dem Login werdet ihr aufgefordert, den Pfad zur Calibre-Datenbank anzugeben. Klickt auf den Button zum Auswählen, navigiert im Container zum Ordner /books (den wir gemappt haben) und wählt dort den Ordner mit der Bibliothek aus. Klickt auf “Save”.
  4. Passwort ändern: Geht sofort zu den Admin-Einstellungen -> Benutzer verwalten -> Wählt admin aus und ändert das Standardpasswort admin123 in ein sicheres Passwort!
  5. Uploads aktivieren (optional):
    • Geht zu Admin -> Grundlegende Konfiguration bearbeiten -> Feature Konfiguration.
    • Setzt einen Haken bei Uploads aktivieren. Speichern.
    • Geht zurück zu Admin -> Benutzer verwalten -> Wählt admin aus.
    • Setzt einen Haken bei Hochladen erlauben. Speichern.
    • Nun sollte oben rechts ein Upload-Button erscheinen.

Jetzt könnt ihr eure Bibliothek sehen (inklusive des Quick Start Guides, falls er noch da ist). Ihr könnt Bücher hochladen:

  • Einzelne Dateien: Klickt auf “Upload” und wählt eine Datei (z.B. EPUB, PDF).
  • Weitere Formate zum Buch hinzufügen: Öffnet ein Buch, geht zu “Metadaten bearbeiten” -> “Buchformat hinzufügen” und ladet dort weitere Formate (PDF, MOBI etc.) hoch. So werden sie demselben Bucheintrag zugeordnet. (Beim direkten Upload mehrerer Dateien werden sie sonst als separate Bücher erkannt).

Calibre-Web ist deutlich ressourcenschonender als die volle Calibre-GUI und bietet eine gute Weboberfläche zum Lesen und Verwalten.

CWA (Calibre-Web Automated) – Der moderne Fork

CWA ist ein Fork von Calibre-Web mit einigen zusätzlichen Features und einem etwas moderneren Ansatz, z.B. bei der automatischen Verarbeitung von Büchern in einem “Watch”-Ordner.

  1. Neuen Ordner erstellen: Wir erstellen ein separates Verzeichnis für CWA.

    cd .. # Zurück zum übergeordneten Verzeichnis
    mkdir cwa
    cd cwa
  2. Benötigte Ordner anlegen:

    mkdir config # Für die CWA-Konfiguration
    mkdir books  # Der "Watch"-Ordner für neue Bücher
    # Der eigentliche Bibliotheksordner wird von CWA innerhalb von 'config' oder einem separaten Mapping verwaltet. Im Beispiel unten nutzen wir ein separates Mapping.
    mkdir library # Hier wird CWA die strukturierte Bibliothek ablegen
  3. docker-compose.yml erstellen:

    nano docker-compose.yml
  4. Inhalt einfügen und anpassen (Beispiel basierend auf Crocodilestick):

    services:
      calibre-web-automated:
        image: crocodilestick/calibre-web-automated:latest
        container_name: cwa
        environment:
          - PUID=1000 # Eure Benutzer-ID
          - PGID=1000 # Eure Gruppen-ID
          - TZ=Europe/Berlin # Eure Zeitzone
        volumes:
          - ./config:/config             # CWA Konfigurationsdaten
          - ./library:/calibre-library   # Hier wird die CWA-Bibliothek gespeichert
          - ./books:/cwa-book-ingest     # Der "Watch"-Ordner für neue Uploads
        ports:
          - 8084:8083 # Port für CWA (wir nehmen 8084, da 8083 von Calibre-Web belegt ist)
        restart: unless-stopped
  5. Wichtige Anpassungen:

    • PUID/PGID/TZ: Wie gehabt.
    • Volumes:
      • ./config:/app/config: CWA-spezifische Konfigurationsdateien.
      • ./library:/library: Hier legt CWA die verarbeiteten Bücher in einer Calibre-ähnlichen Struktur ab.
      • ./books:/books: Bücher, die in diesen Ordner auf dem Host kopiert werden, sollten von CWA automatisch erkannt und in die /library importiert werden (konfigurierbar).
    • Ports: Wir ändern den Host-Port auf 8084, um Konflikte zu vermeiden.
  6. Container starten:

    sudo docker compose up -d

CWA – Konfiguration und Nutzung

  1. Zugriff: Öffnet http://DEINE_SERVER_IP:8084.
  2. Erster Login: Standard wie bei Calibre-Web:
    • Benutzername: admin
    • Passwort: admin123
  3. Datenbankpfad konfigurieren: CWA sollte automatisch erkennen, dass noch keine Datenbank existiert und eine neue im gemappten /calibre-library-Volume anlegen. Falls gefragt, gebt /calibre-library an.
  4. Passwort ändern: Auch hier: Sofort unter Settings -> Manage Users das Admin-Passwort ändern!
  5. Nutzung:
    • Die Oberfläche ähnelt Calibre-Web (man kann auch zum hellen Theme wechseln).
    • Uploads sind standardmäßig oft schon aktiviert.
    • Ihr könnt Bücher hochladen oder Dateien in den gemappten ./books-Ordner auf dem Host legen, CWA sollte sie verarbeiten.
    • CWA hat erweiterte Konverter-Optionen und Funktionen zur Metadaten-Suche.
    • Das Hinzufügen mehrerer Formate zu einem Buch erfolgt wie bei Calibre-Web über “Edit Metadata” -> “Upload another format”.
    • CWA verbraucht tendenziell etwas mehr RAM als das Standard-Calibre-Web.

Wichtiger Hinweis: Backup!

Egal ob ihr Calibre-Web oder CWA nutzt, eure wertvollen E-Books liegen nun in den gemappten Ordnern auf eurem Host-System!

  • Bei Calibre-Web: Die Bücher liegen im Ordner ./calibre/config/Calibre Library. Die Konfiguration von Calibre-Web selbst liegt in ./calibre/calibre-web-config. Sichert beide regelmäßig!
  • Bei CWA: Die Bücher liegen im Ordner ./cwa/library. Die Konfiguration liegt in ./cwa/config. Der Upload-Ordner ist ./cwa/books. Sichert library und config.

Ausblick: Reverse Proxy & Co.

Um eure Calibre-Web- oder CWA-Instanz sicher und bequem über eine Domain (z.B. ebooks.meine-domain.de) erreichbar zu machen, solltet ihr einen Reverse Proxy wie Nginx Proxy Manager, Traefik oder Caddy verwenden. Das ermöglicht HTTPS und versteckt die Ports.

Falls ihr keine feste öffentliche IPv4-Adresse habt, könnten Lösungen wie Pangolin interessant sein.

Fazit

Mit Docker könnt ihr Calibre, Calibre-Web oder CWA relativ einfach auf eurem Server betreiben. Während die volle Calibre-GUI sehr ressourcenhungrig ist, bieten Calibre-Web und CWA hervorragende, leichtgewichtige Alternativen für die Verwaltung und den Zugriff auf eure E-Book-Bibliothek über den Browser. Wählt die Lösung, die am besten zu euren Bedürfnissen und eurer Server-Performance passt.

Ich hoffe, dieses Tutorial hat euch gefallen.

Diesen Beitrag teilen:

Diese Website verwendet Cookies. Diese sind notwendig, um die Funktionalität der Website zu gewährleisten. Weitere Informationen finden Sie in der Datenschutzerklärung