In dieser Anleitung installieren wir einen Calibre Server auf einer aktuellen Linux Distribution (Ubuntu 22.04 / Debian 11). Calibre ist ein E-Book-Manager, der uns eine plattformübergreifende Webanwendung für unsere E-Book-Sammlung zur Verfügung stellt. Nach der Installation auf den eigenen Server können Bibliotheken erstellt werden und beliebig viele Bücher hinzugefügt und verwaltet werden.
Die Software „Calibre“ zählt zu den beliebtesten Serveranwendungen für die Verwaltung von großen E-Book-Sammlungen. Nach der Installation und Erstkonfigurationen können wir auf unsere Bücher-Sammlung über die lokale IP-Adresse oder den eingepflegten Domainnamen zugreifen. Das erfolgt über einen beliebigen Internetbrowser. Calibre wird als Open-Source-Software angeboten und ist vollständig kostenlos verwendbar.
Zu erwähnen sind die kostenfreien Applikationen für Smartphones und Tablets. Einmal auf dem Gerät installiert können wir auf die E-Book-Sammlung unseres Servers von überall auf der Welt zugreifen, sofern wir die Ports im Router für den Zugriff über das Internet freigegeben haben.
Die folgenden Formate für E-Books können der Calibre-Bibliothek nach der Installation auf einen Server mit Linux Debian / Ubuntu hinzugefügt werden: PDF, MOBI, CHM, EPUB
Inhaltsverzeichnis: Einen Calibre-Server auf dem eigenen Linux-Host installieren (Anleitung)
Vorbereitungen und Voraussetzungen für die Installation von Calibre auf Linux Ubuntu/Debian nach dieser Anleitung für den eigenen Server
Die Installation von einem Calibre-Server nach dieser Anleitung setzt ein paar Bedingungen voraus. Es wird ein Root-Zugang benötigt, eine aktive Internetverbindung und einen vollqualifizierten Domainnamen. Dazu empfiehlt es sich, vor dem Beginn der Installation die Paketquellen zu aktualisieren, damit wir die jeweils neuste Software während des Installationsprozesses beziehen.
Hinweis: Einige Befehle aus diesem Tutorial werden mit dem sudo-Prompt ausgeführt, dieser ist jedoch nur für Linux Ubuntu 22.04 notwendig. Möchtest du den Calibre-Server auf Linux Debian 11 installieren, führe die Befehle einfach ohne sudo aus.
Voraussetzungen:
- Einen virtuellen oder physischen Server mit Ubuntu 22.04 / Debian 11
- Serverzugriff mit Root-Rechten
- Eine aktive Internetverbindung
- Aktualisierungen wurden auf dem Server durchgeführt
Führe vor Beginn der Installation eine Systemaktualisierung durch:
sudo apt update && sudo apt upgrade
Calibre-Server-Software herunterladen und Abhängigkeiten installieren (Schritt 1.)
Im ersten Schritt installieren wir die notwendigen Abhängigkeiten für den Betrieb von Calibre. Führe dafür den folgenden Befehl aus:
sudo apt install libopengl0 libxkbcommon-x11-0 libegl1 libfontconfig libgl1-mesa-glx
Ist die Installation der Abhängigkeiten abgeschlossen, können wir die neuste Version von Calibre mit dem folgenden Befehl für unseren Server herunterladen:
wget https://download.calibre-ebook.com/linux-installer.sh
Damit das Installationsskript auf dem Calibre-Server ausgeführt werden kann, müssen wir das Skript mit dem folgenden Befehl ausführbar machen:
chmod +x ./linux-installer.sh
Führe jetzt das Skript für die Installation von Calibre unter Linux aus:
sudo ./linux-installer.sh
Hinweis: Warnungen, die während der Installation ausgegeben werden, können in den meisten Fällen ignoriert werden. Diese resultieren daraus, da wir keine grafische Oberfläche auf dem Server haben und der E-Book-Manager Calibre standesgemäß eine Desktopumgebung erwartet.
Auf dem Calibre-Server eine Bibliothek für die Büchersammlung anlegen und eine Anleitung, wie Bücher über die Shell hinzugefügt werden können (Schritt 2.)
Als Nächstes legen wir eine Bibliothek für den Calibre-Server an. Es können beliebig viele Bibliotheken für E-Books erstellt werden. Ob alle Bücher nach der Installation in ein und derselben Bibliothek Platz finden sollen oder ob du diese nach Genre und Kategorie einsortieren möchtest, bleibt natürlich dir überlassen.
Eine Bibliothek für Calibre anlegen:
mkdir Bibliothek
Alle in diesem Verzeichnis kopierten Dateien werden in das virtuelle Bücherregal aufgelistet. Es existieren verschiedene Möglichkeiten, Bücher zu deiner Calibre-Bibliothek hinzuzufügen. Ob du die E-Book-Formate von einer eingebundenen Netzwerkfreigabe in das Verzeichnis kopierst oder das Buch direkt aus dem Internet beziehst. Das kann z.B. mit dem folgenden Befehl erfolgen:
Ein Buch herunterladen (Beispiel):
wget http://www.urldesbuches.de/buchtitel.epub
Das Buch zu deiner Bibliothek hinzufügen:
calibredb add buchtitel.epub --with-library Bibliothek/ Added book ids: 1
Tipp: Um viele Bücher aus deinem Verzeichnis zu deiner Bibliothek gleichzeitig hinzuzufügen, kannst du z.B. den folgenden Befehl verwenden (es werden alle Bücher, die im .epub-Format vorliegen, der Bibliothek hinzugefügt):
calibredb add *.epub --with-library Bibliothek/
Wir gehen später noch etwas tiefer in die Materie ein. Da zeige ich dir, welche Möglichkeiten es für die Implementierung von einzelnen E-Books auf deinen Calibre-Server gibt oder wie sich ganze Sammlungen automatisiert in die Bibliothek importieren lassen.
Installation von Calibre unter Linux erfolgreich abgeschlossen: Wie der Server gestartet werden kann (Schritt 3.)
Um den soeben installierten Calibre-Server mit der angelegten Bibliothek zu starten, kannst du den folgenden Befehl verwenden:
calibre-server Bibliothek
Standesgemäß lauscht die E-Book-Management-Software auf den Port 8080. Begebe dich nun an einen Client im selben lokalen Netzwerk und rufe die Calibre-Webanwendung über einen Browser deiner Wahl auf.
Beispiel-IP-Adresse für den Zugriff auf die Calibre-Weboberfläche:
192.168.178.159:8080
Optionale Firewall Konfigurationen (Schritt 4.)
Dieser Schritt ist optional und hängt davon ab, ob eine Firewall auf euren Linux-Server installiert wurde und welches Betriebssystem auf dem Host läuft. War der Zugriff auf die Weboberfläche im vorherigen Schritt bereits möglich, ist der Server höchstwahrscheinlich nicht durch eine Firewall geschützt.
Solltest du deinen Server für den Zugriff von außen über das Internet freigeben wollen, empfehle ich die Inbetriebnahme einer Firewall, um alle anderen Ports nach außen hin zu schließen. Für Ubuntu können wir die UFW-Firewall verwenden und für Debian empfiehlt sich die Verwendung von iptables.
Calibre-Port für Ubuntu freigeben (UFW-Firewall):
sudo ufw allow 8080
Calibre-Port für Debian freigeben (iptables-Firewall):
iptables -I INPUT 1 -i eth0 -p tcp --dport 8080 -j ACCEPT
Anschließend muss der Dienst für die Firewall einmal neu gestartet werden. Damit die Änderung wirksam wird und die beschriebenen Ports für den Zugriff freigegeben sind.
Einen anderen Port für Calibre konfigurieren:
Du musst nicht den Standard-Port „8080“ für Calibre verwenden. Möchtest du einen anderen Port für deinen Calibre-Server verwenden, kannst du den folgenden Befehl verwenden:
calibre-server Bibliothek --port 1337
Eine Konfigurationsdatei für den Calibre-Server erstellen (Schritt 5.)
In diesem Abschnitt legen wir eine Konfigurationsdatei für Calibre an. Diese ist wichtig, damit wir Bücher über die Weboberfläche zu unserer Bibliothek hinzufügen können. Das macht die Bedienung sehr viel komfortabler. Sollte der Calibre-Server noch ausgeführt werden, kannst du diesen mit der folgenden Tastenkombination beenden, damit die Shell wieder für Eingaben freigegeben wird:
Calibre-Server beenden:
STRG + C (Tastenkombination)
Erstelle mit dem Nano-Editor eine Konfigurationsdatei:
sudo nano /etc/systemd/system/calibre-server.service
Kopiere die folgende Konfiguration und füge den Inhalt in die mit dem Nano-Editor geöffnete Datei ein:
[Unit]
Description=Calibre Server
After=network.target
[Service]
Type=simple
User=benutzername
Group=benutzername
ExecStart=/opt/calibre/calibre-server /home/benutzername/Bibliothek --enable-local-write
[Install]
WantedBy=multi-user.target
Hilfestellung für die Anlegung einer Calibre-Konfigurationsdatei:
Ergänze die fettgedruckten Werte innerhalb der Datei mit deinem eigenen Linux-Benutzernamen in der Zeile „User“, mit dem Login-Namen von deinem Linux-Server. Schreibe diesen auch in die Zeile „ExecStart“ hinter dem /home-Verzeichnis, wie in der Beispielkonfiguration angegeben.
Speichere die Änderungen ab (STRG +S) und verlasse den Nano-Editor wieder (STRG + X).
Die Calibre-Server-Konfiguration übernehmen:
sudo systemctl daemon-reload
Starte jetzt den Calibre-Service und füge die Anwendung zur automatischen Systemstart-Routine deines Servers hinzu:
sudo systemctl enable calibre-server
sudo systemctl start calibre-server
Überprüfe nun, ob der Calibre-Server seinen Dienst aufgenommen hat:
sudo systemctl status calibre-server
Benutzer für Calibre verwalten: Die Benutzerauthentifizierung aktivieren (Schritt 6.)
Verwenden mehrere Benutzer denselben Calibre-Server kann es empfohlen sein, für jeden Benutzer einen eigenen Account anzulegen. So können auch Authentifikationen hinterlegt werden, welcher Benutzer auf welchen Bibliotheken Zugriff erhalten soll. Das geht relativ unkompliziert, da wir hierfür ein vorkonfiguriertes Skript verwenden können.
Einstellungen innerhalb der Benutzerverwaltung (User-Management) funktionieren nur, wenn der Calibre-Server-Dienst nicht läuft. Beende also zuerst den Service:
sudo systemctl stop calibre-server
Die Benutzerverwaltung aufrufen:
sudo calibre-server --manage-users
Wie auf dem Screenshot ersichtlich, stehen uns vier Optionen für die Verwaltung von Calibre-Benutzer zur Verfügung. Erstelle einen neuen Benutzer mit der Taste [1].
Gebe einen Benutzernamen ein:…
Gebe ein neues Passwort für den Benutzer ein:…
Die Authentifikation am Calibre-Server nur mit einem gültigen Benutzerkonto aktivieren:
Damit nicht jeder x-beliebige Client auf die in der Calibre-Anwendung eingepflegten E-Books zugreifen kann, haben wir soeben einen Benutzer angelegt. Jetzt müssen wir noch aktivieren, dass eine Authentifizierung erforderlich ist, wann immer wir auf die Bibliothek zugreifen möchten.
Verwende den Nano-Editor und konfiguriere die Calibre-Server.service-Datei wie angegeben:
sudo nano /etc/systemd/system/calibre-server.service
Füge am Ende der Zeile „ExecStart=/opt/calibre/calibre-server[…] — enable-local-write den Zusatz „–enable-auth“ hinzu:
Kopiere diese Aufforderung und füge sie wie beschrieben ans Ende der besagten Zeile ein:
--enable-auth
Speichere die Änderungen ab (STRG + S) und verlasse den Nano-Editor wieder (STRG + X). Starte den daemon-service einmal neu, damit die Änderung wirksam wird und starte anschließend den calibre-server mit den folgenden Befehlen:
sudo systemctl daemon-reload
sudo systemctl start calibre-server
Ab jetzt ist eine Anmeldung mit dem soeben erstellten Benutzerkonto erforderlich, sobald die Webanwendung „Calibre“ über den Browser aufgerufen wird. Sollten eine Anmeldung über die Weboberfläche nicht möglich sein, rufe wieder die Benutzerverwaltung über die Shell auf und überprüfe die gesetzten Berechtigungen und das für Calibre vergebene Passwort.
Den Calibre-Server mit der E-Book-Bibliothek starten:
calibre-server Bibliothek
Bücher zu deiner Calibre-Bibliothek hinzufügen (Schritt 7.)
Es gibt verschiedene Möglichkeiten, Bücher in Form von E-Books zu deiner Bibliothek hinzuzufügen. Die bequemste Variante ist die Hinzufügung von E-Books über die Weboberfläche. Öffne dafür einfach deine Bibliothek und klicke auf das obere Kreuz-Symbol auf der linken Seite im Browser.
Anschließend können entweder einzelne Bücher oder per Drag-and-drop mehrere E-Book-Formate gleichzeitig zu deiner Calibre-Bibliothek hinzugefügt werden.
Eine weitere Möglichkeit wäre die Implementierung von E-Books über die Shell:
calibredb add Meinlieblingsbuch.mobi --with-library Bibliothek/ Added book ids: 1
Möchtest du diese Prozesse automatisieren, empfiehlt es sich z.B. eine Netzwerkfreigabe auf deinem Calibre-Server zu mounten und mittels Cronjob alle dort befindlichen Inhalte in gewissen Zeitabständen automatisch der Bibliothek hinzuzufügen. Diese Variante zeigt ihre Stärken bei einer sehr großen Ansammlung von Büchern. So werden alle in dem Verzeichnis eingefügten E-Books alle 5 Minuten zu deinem Server hinzugefügt.
Dafür erstellen wir ein Verzeichnis für die Ablage von Büchern, die automatisiert in der Bibliothek eingefügt werden sollen:
mkdir calibre-books
Erstelle einen Cronjob:
crontab -e
Klicke die Taste [1] für die Implementierung des neuen Cronjobs mit der Verwendung des Nano-Editors.
Kopiere den folgenden Inhalt und füge ihn in die Datei ein:
*/5 * * * * calibredb add /home/<username>/calibre-books/ -r --with-library http://localhost:8080#Bibliothek --username calibreuser --password calibrepasswort && rm -r /home/<username>/calibre-books/*
Hinweise für die Bearbeitung:
Ergänze die fettgedruckten Werte mit deinem Usernamen und dein Passwort für den Zugriff auf den Calibre-Server. Alle 5-Minuten werden alle E-Books in dem Verzeichnis „calibre-books“ zu deiner Bibliothek hinzugefügt. Nach dem erfolgreichen Import werden die originalen Dateien gelöscht.
Speichere die Änderungen ab (STRG + S) und verlasse den Nano-Editor wieder (STRG + X).
Tipp aus der Praxis:
Gebe das Verzeichnis „calibre-books“ für andere Clients im selben Netzwerk frei. So kannst du die E-Books direkt vom Windows- oder Linux-Client in den Ordner kopieren, und der soeben angelegte Crontab übernimmt den Rest.
Einen Calibre-Server installieren: Verwende Nginx für die Erreichbarkeit über einen Domainnamen (Schritt 8.)
Unser installierter Calibre-Server ist aktuell nur über die lokale IP-Adresse erreichbar. Verwenden wir einen VPN-Server, können wir ohne weiteres jetzt schon über das Internet auf die in der Bibliothek hinterlegten Bücher zugreifen. Möglich wäre auch die Freigabe des Ports 8080 im Router und die Einpflegung eines kostenlosen DynDNS-Dienstes.
Möchten wir ein SSL-Zertifikat für unseren Calibre-Server verwenden, um den Internetverkehr über HTTPS zu verschlüsseln und eine Erreichbarkeit über eine richtige Domain realisieren, empfiehlt sich die Installation eines Nginx-Webservers. Die neuste Version von Nginx beziehen wir wie folgt.
Importiere den offiziellen GPG-Schlüssel:
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \ | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
(Nur Ubuntu) Füge das offizielle Nginx-Repository (stable) zu den Paketquellen hinzu:
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \ http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \ | sudo tee /etc/apt/sources.list.d/nginx.list
(Nur Debian) Füge das offizielle Nginx-Repository (stable) zu den Paketquellen hinzu:
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \ http://nginx.org/packages/debian `lsb_release -cs` nginx" \ | sudo tee /etc/apt/sources.list.d/nginx.list
Aktualisiere die Repositorys:
sudo apt update
Installiere den Webserver Nginx:
sudo apt install nginx
Ein SSL-Zertifikat für den Calibre-Server installieren (Schritt 9.)
Wir installieren in diesem Abschnitt ein kostenloses SSL-Zertifikat von Let’s Encrypt mit der Standalone-Option von Certbot. Dafür installieren wir die notwendigen Abhängigkeiten und beziehen anschließend ein gültiges Zertifikat. Du benötigst eine gültige E-Mail-Adresse für die Registrierung.
Nach der einmaligen Einrichtung wird das Zertifikat nach Ablauf vollständig automatisiert neu bezogen.
Wir verwenden für die Installation das Snap-Werkzeug:
sudo snap install core
Certbot installieren:
sudo snap install --classic certbot
Ein gültiges SSL-Zertifikat generieren:
sudo ln -s /snap/bin/certbot /usr/bin/certbot
Achtung! Ändere die E-Mail-Adresse und die zu zertifizierende Domain innerhalb dieser Befehlszeile.
Calibre-Konfigurationsdatei mit dem Nano-Editor öffnen:
sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m deine@mailadresse.de -d deine.domain.de
Generiere ein Zertifikat der Deffie-Hellman-Gruppe:
sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Die automatische Erneuerung des SSL-Zertifikats einrichten:
Navigiere in das folgende Verzeichnis und öffne die Konfigurationsdatei für deine Domain (.conf) mit dem Nano-Editor:
cd /etc/letsencrypt/renewal/
sudo nano /etc/letsencrypt/renewal/deine-domain.conf
Füge diese beiden Codezeilen am Ende dieser Datei ein:
pre_hook = systemctl stop nginx post_hook = systemctl start nginx
Speichere die Änderungen ab (STRG +S) und verlasse den Editor wieder (STRG +X). Dieser Schritt war notwendig, damit der Nginx-Webserver während der Erneuerung des kostenlosen SSL-Zertifikats für unseren Calibre-Server einmal kurz neu gestartet wird, da es sonst zu einer Fehlermeldung führt und die Anweisung nicht durchgeführt werden kann.
Überprüfe, ob die Einrichtung erfolgreich verlaufen ist:
sudo certbot renew --dry-run
Werden keine Fehlermeldungen vom System ausgegeben, ist davon auszugehen, dass die Konfiguration erfolgreich verlaufen ist.
Abschließende Nginx-Konfigurationen für Calibre (Schritt 10.)
Öffne zunächst die Nginx-Konfigurationsdatei mit dem Nano-Editor:
sudo nano /etc/nginx/nginx.conf
Suche die Zeile „/etc/nginx/conf.d/*.conf;“ und füge die angegebene Zeile mit dem Parameter exakt vor dieser Zeile in die Datei ein:
server_names_hash_bucket_size 64;
Speichere die Änderungen ab (STRG +S) und verlasse die Datei wieder (STRG +X).
Die Komplettinstallation unseres Calibre-Servers ist fast abgeschlossen. Abschließend müssen wir nur noch den Nginx-Webserver konfigurieren. Ich habe die Konfiguration schon so weit angepasst, dass du lediglich den Domainnamen austauschen musst.
Öffne die Datei mit dem Nano-Editor und kopiere den Inhalt der Konfiguration wie angegeben. Ergänze alle Zeilen mit „deine-domain.de“ durch die Domain, über die du deinen eigenen Server erreichen möchtest.
Calibre-Konfigurationsdatei mit dem Nano-Editor öffnen:
sudo nano /etc/nginx/conf.d/calibre.conf
Konfiguration (Code) kopieren und in die Datei einfügen:
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
http2_push_preload on; # Enable HTTP/2 Server Push
# Enable TLSv1.3's 0-RTT. Use $ssl_early_data when reverse proxying to
# prevent replay attacks.
#
# @see: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_early_data
ssl_early_data on;
server_name deine-domain.de;
client_max_body_size 100M;
access_log /var/log/nginx/calibre.access.log;
error_log /var/log/nginx/calibre.error.log;
ssl_certificate /etc/letsencrypt/live/deine-domain.de/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/deine-domain.de/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/deine-domain.de/chain.pem;
ssl_session_timeout 5m;
ssl_session_cache shared:MozSSL:10m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1;
ssl_stapling on;
ssl_stapling_verify on;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
# enforce HTTPS
server {
listen 80;
listen [::]:80;
server_name deine-domain.de;
return 301 https://$host$request_uri;
}
Sobald die Konfiguration erfolgreich kopiert wurde und du die Domain gegen deine eigene ausgetauscht hast, kannst du die Änderungen speichern (STRG +S) und den Editor wieder schließen (STRG + X).
Führe den folgenden Befehl aus, damit die Änderungen wirksam werden:
sudo nginx -t
Starte den Nginx-Webserver jetzt neu:
sudo systemctl restart nginx
Hat alles funktioniert, kannst du deinen Calibre-Server jetzt über den eingepflegten Domainnamen über den Browser aufrufen. Bedenke jedoch, dass die Ports für Webanwendungen (80/443) für die IP-Adresse deines Serverhosts im Router freigegeben werden müssen. Gleiches gilt für die integrierte Firewall.
Verwendest du mehrere Server innerhalb deines Netzwerkes, die über diese Ports erreichbar sein sollen, kommst du über die Installation eines Reverse-Proxy-Servers nicht drumherum. Eine Anleitung wie das funktioniert findest du auf meinem Blog: Einen Reverse-Proxy mit dem Nginx-Proxy-Manager installieren. Bedenke auch, dass noch ein Eintrag an deinem DNS-Server erfolgen muss. An diesem Schritt ist die Installation von Calibre unter Linux Ubuntu 22.04 und Debian 11 fertig abgeschlossen.
Tolle Sache!
Ich nutze die Calibre Desktop-Version schon länger, unter Ubuntu.
Auch den Calibre Server.
Aber den Server als Standallone zu betreiben habe ich schon lange gesucht – für meinen Ubuntu Server.
Diese Anleitung hier klappt einwandfrei und auf Anhieb.
Vielen Dank!
Noch eine unbescheidene Frage – wie siehts mit der Installation von Plugins im Serverbetrieb aus?
Habe bisher diese Möglichkeit nur beim Desktopbetrieb gefunden.