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.

Inhaltsverzeichnis
- Verbindung zum Server und Docker-Installation prüfen/durchführen
- Calibre mit Docker installieren (LinuxServer.io Image)
- Calibre – Der erste Test (und die Tücken)
- Calibre-Web – Die leichtgewichtige Alternative
- Calibre-Web – Konfiguration und Nutzung
- CWA (Calibre-Web Automated) – Der moderne Fork
- CWA – Konfiguration und Nutzung
- Wichtiger Hinweis: Backup!
- Ausblick: Reverse Proxy & Co.
- Fazit
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):
-
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
-
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.
-
Ordner erstellen: Wir legen einen Ordner für unsere Calibre-Konfiguration an.
mkdir calibre cd calibre
-
docker-compose.yml
erstellen: Erstellt eine Datei namensdocker-compose.yml
.nano docker-compose.yml
-
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
-
Wichtige Anpassungen:
- PUID/PGID: Prüft eure Benutzer- und Gruppen-ID mit dem Befehl
id
im Terminal auf eurem Server und passtPUID
undPGID
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 Unterordnerconfig
erstellt wird (falls nicht vorhanden), in dem Calibre seine Konfiguration und die E-Book-Bibliothek ablegt.
- PUID/PGID: Prüft eure Benutzer- und Gruppen-ID mit dem Befehl
-
Konfigurationsordner erstellen (falls nötig): Da wir
./config
gemappt haben, stellen wir sicher, dass dieser Ordner existiert:mkdir config
-
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:
- Wählt den Speicherort der Bibliothek (der Standard im Container
/config
ist korrekt, da wir diesen Ordner gemappt haben). - Optional: Wählt euren E-Book-Reader aus.
- 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.
-
Calibre-Container stoppen:
# Sicherstellen, dass wir im 'calibre'-Ordner sind cd /pfad/zu/eurem/calibre-ordner sudo docker compose down
-
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
-
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
-
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 derCalibre 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 eurerdocker-compose-calibre-web.yml
.
- Ports: Wir verwenden Port
8083
, da8080
eventuell noch von anderen Diensten genutzt werden könnte (oder um klar zu trennen).
-
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
- Zugriff: Öffnet
http://DEINE_SERVER_IP:8083
. - Erster Login: Die Standard-Anmeldedaten sind:
- Benutzername:
admin
- Passwort:
admin123
- Benutzername:
- 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”. - Passwort ändern: Geht sofort zu den Admin-Einstellungen -> Benutzer verwalten -> Wählt
admin
aus und ändert das Standardpasswortadmin123
in ein sicheres Passwort! - 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.
-
Neuen Ordner erstellen: Wir erstellen ein separates Verzeichnis für CWA.
cd .. # Zurück zum übergeordneten Verzeichnis mkdir cwa cd cwa
-
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
-
docker-compose.yml
erstellen:nano docker-compose.yml
-
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
-
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.
-
Container starten:
sudo docker compose up -d
CWA – Konfiguration und Nutzung
- Zugriff: Öffnet
http://DEINE_SERVER_IP:8084
. - Erster Login: Standard wie bei Calibre-Web:
- Benutzername:
admin
- Passwort:
admin123
- Benutzername:
- 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. - Passwort ändern: Auch hier: Sofort unter Settings -> Manage Users das Admin-Passwort ändern!
- 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
. Sichertlibrary
undconfig
.
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.