So greifen Sie mit dem Calibre-Server aus der Ferne auf Ihre E-Book-Bibliothek zu
Calibre ist ohne Zweifel der am besten ausgestattete E-Book-Manager für Linux und andere Betriebssysteme. Die Anwendung ist völlig kostenlos und Open Source: Sie ermöglicht uns die einfache Organisation, Konvertierung und Synchronisierung unserer E-Books mit einer Vielzahl von Geräten und E-Book-Readern. Calibre verfügt über einen integrierten Medienserver, der für den Fernzugriff auf eine Bibliothek verwendet werden kann.
In diesem Tutorial erfahren Sie, wie Sie Calibre in einigen der am häufigsten verwendeten Linux-Distributionen installieren und wie Sie den Calibre-Server starten und konfigurieren.
In diesem Tutorial lernen Sie:
- So installieren Sie Calibre
- So starten und konfigurieren Sie den Calibre-Server
- So lassen Sie Bibliotheksänderungen für lokale Verbindungen oder bestimmte IPs zu
- So aktivieren Sie die Authentifizierung auf dem Calibre-Server
- So verschlüsseln Sie die Kommunikation mit dem Calibre-Server mithilfe von https
- So erstellen Sie einen Systemd-Dienst zum Starten und Aktivieren des Calibre-Servers beim Booten
Calibre installieren
Calibre ist kostenlose Open-Source-Software. Es ist hauptsächlich in Python geschrieben und wird aktiv auf Github weiterentwickelt. Die Anwendung ist im offiziellen Repository aller wichtigen Linux-Distributionen verfügbar. Um Calibre auf Debian und Debian-basierten Distributionen zu installieren, müssen wir lediglich den folgenden Befehl ausführen:
$ sudo apt install calibre
Wenn man über Debian-basierte Distributionen spricht, ist es erwähnenswert, dass die Installation von Calibre auf Raspberry Pi OS Bullseye zum Zeitpunkt des Schreibens fehlerhaft ist, da das als Abhängigkeit erforderliche Paket „qtwebengine“ auf der armv6-Architektur nicht unterstützt wird. Wenn Sie ein aktuelles RPI-Modell (>= 3) und ein arm64-System verwenden, sollten Sie in der Lage sein, die Flatpak-Version von Calibre zu installieren (siehe unten).
Um Calibre auf Fedora zu installieren, können wir dnf
verwenden:
$ sudo dnf install calibre
Die Installation von Calibre auf Archilinux ist genauso einfach, da die Anwendung im „Extra“-Repository verfügbar ist:
$ sudo pacman -S calibre
Mit Ausnahme von Archlinux, wo Anwendungen immer auf dem neuesten Stand gehalten werden, kann die in den Distributions-Repositorys verfügbare Version von Calibre recht alt sein. Zum Zeitpunkt des Verfassens dieses Artikels ist beispielsweise die neueste Version von Calibre 6.23.0, die in Fedora-Repositories verfügbare Version ist jedoch 5.43.0 (auf Debian Stable bleiben wir bei Version 5.12.0 hängen!). Um die neueste Version von Calibre verteilungsunabhängig zu installieren, können wir Flatpaks verwenden.
Calibre als Flatpak installieren
Um das Calibre-Flatpak zu installieren, müssen wir zunächst sicherstellen, dass flatpak
selbst in unserem System installiert ist. Bei Verwendung von Debian:
$ sudo apt install flatpak
Auf Fedora und Fedora-basierten Distributionen:
$ sudo dnf install flatpak
Unter Archlinux stattdessen:
$ sudo pacman -S flatpak
Der nächste Schritt besteht darin, sicherzustellen, dass das „Flathub“-Repository als Softwarequelle verfügbar ist. In den folgenden Beispielen führen wir Flatpak-bezogene Aktionen als unprivilegierte Benutzer durch, daher ist die Software nicht systemweit verfügbar. Dies hat den Vorteil, dass keine Rechteausweitung erforderlich ist, und ist die ideale Lösung, wenn Sie Calibre auf einem Einzelbenutzercomputer verwenden. Wenn Sie jedoch eine systemweite Installation durchführen möchten, können Sie den Befehlen einfach sudo
voranstellen und das Flag --user
weglassen. Um das Flathub-Repo hinzuzufügen, führen wir Folgendes aus:
$ flatpak --user remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
Um Calibre tatsächlich zu installieren, führen wir stattdessen Folgendes aus:
flatpak --user --assumeyes install flathub com.calibre_ebook.calibre
Im obigen Befehl wird die Option --assumeyes
verwendet, um die interaktive Eingabeaufforderung automatisch zu bejahen. Möglicherweise möchten Sie es weglassen, um die Calibre-Flatpak-Abhängigkeiten zu überprüfen, bevor Sie sie tatsächlich installieren.
Starten des Calibre-Servers
Um den Calibre-Server über die Calibre-GUI zu starten, müssen wir lediglich im Hauptmenü auf Verbinden/Teilen -> Content-Server starten klicken:
An diesem Punkt sollten wir in der Lage sein, unsere Bibliothek unter localhost:8080
zu erreichen:
Um den Calibre-Server auf einem Headless-System zu starten, können wir das CLI-Dienstprogramm Caliber-Server
ausführen und den Pfad der Calibre-Bibliothek als Argument übergeben:
$ calibre-server /path/to/library
Wenn Sie stattdessen die Flatpak-Version von Calibre verwenden:
$ flatpak --command="sh" run com.calibre_ebook.calibre -c "calibre-server /path/to/library"
Grundsätzlich sollte der Befehl als Argument an die Option -c
übergeben werden: Dies gilt für alle Befehle, über die wir ab hier berichten werden.
Verwalten des Calibre-Servers
Der Calibre-Server kann sowohl über die GUI, über Einstellungen -> Über das Internet teilen als auch über das CLI-Dienstprogramm verwaltet werden. In diesem Tutorial konzentrieren wir uns auf Letzteres.
Ändern des Server-Ports
Um den vom Server verwendeten Port zu ändern, können wir die Option --port
verwenden. Um den Calibre-Server beispielsweise auf Port 8000 überwachen zu lassen, würden wir Folgendes ausführen:
$ calibre-server --port=8000 /path/to/library
Den Server im Daemon-Modus ausführen
Um den Server als Daemon auszuführen, sodass er im Hintergrund arbeitet, können wir die Option --daemonize
verwenden:
$ calibre-server --daemonize /path/to/library
Ermöglichen lokaler Bibliotheksänderungen über die Weboberfläche
Wenn die Authentifizierung deaktiviert ist (Standard), wird der Server im schreibgeschützten Modus ausgeführt. Das bedeutet, dass alle über die Weboberfläche an der Bibliothek vorgenommenen Änderungen unwirksam sind. Um dieses Verhalten zu ändern und „Schreibrechte“ für Anfragen zu gewähren, die von demselben Computer stammen, auf dem der Server läuft, können wir die Option --enable-local-write
verwenden:
$ calibre-server --enable-local-write /path/to/library
Authentifizierung einrichten
Um die Authentifizierung zu ermöglichen, müssen wir zunächst die Datenbank erstellen, die die Benutzer enthält, die zum Zugriff auf den Calibre-Server berechtigt sind. Dazu können wir Caliber-Server
mit der Option --manage-users
ausführen und den Pfad angeben, in dem wir die Datenbank speichern möchten, indem wir ihn als übergeben Argument für --userdb
. Dadurch wird eine interaktive Anleitung aufgerufen, mit der wir neue Benutzer hinzufügen, bearbeiten und entfernen können:
$ calibre-server --manage-users --userdb=calibre_users.sqlite
1) Add a new user
2) Edit an existing user
3) Remove a user
4) Cancel
What do you want to do? [1-4]: 1
In diesem Fall haben wir nur als Beispiel angegeben, dass die Datenbank im aktuellen Arbeitsverzeichnis erstellt werden soll, als „kalibre_users.sqlite“. Um einen neuen Benutzer hinzuzufügen, haben wir den ersten Eintrag im Menü ausgewählt und bestätigt und dann einen Benutzernamen und ein Passwort angegeben:
Enter the username: calibreuser
Enter the new password for calibreuser:
Re-enter the new password for calibreuser, to verify:
User calibreuser added successfully!
Um nun die Authentifizierung tatsächlich zu aktivieren, müssen wir den Server mit der Option --enable-auth
starten und erneut den Pfad der Datenbank angeben:
$ calibre-server --userdb=calibre_users.sqlite --enable-auth /path/to/library
Um auf die Bibliothek zuzugreifen, müssen wir nun den zuvor festgelegten Benutzernamen und das Passwort angeben:
Um eine bestimmte IP nach einer vordefinierten Anzahl fehlgeschlagener Authentifizierungen zu sperren, können wir den Server mit der zusätzlichen Option --ban-after
starten und die Anzahl der fehlgeschlagenen Authentifizierungsversuche angeben, die die Sperre auslösen.
Ermöglicht Änderungen von bestimmten IPs ohne Authentifizierung
Als teilweise Alternative zur Authentifizierung können wir den Server mit der Option --trusted-ips
starten und dabei eine durch Kommas getrennte Liste von IP-Adressen übergeben, die Änderungen vornehmen dürfen. Angenommen, wir möchten Schreibvorgänge von der IP 192.168.0.40
autorisieren. Wir würden Folgendes ausführen:
$ calibre-server --trusted-ips=192.168.0.40 /path/to/calibre/library
Zugriffsanfragen protokollieren
Standardmäßig protokolliert der Calibre-Server keine Zugriffsanfragen. Wenn wir diese Funktion aktivieren möchten, müssen wir lediglich die Option --access-log
verwenden und den Pfad der Protokolldatei als Argument übergeben. Um beispielsweise den Server auszuführen und Zugriffe auf eine Datei im aktuellen Arbeitsverzeichnis zu protokollieren, würden wir Folgendes ausführen:
$ calibre-server --access-log=calibre_access.log /path/to/library
HTTPS aktivieren
Für maximale Sicherheit möchten wir die Kommunikation mit dem Server verschlüsseln. Der einfachste Weg, dies zu tun, besteht darin, den Pfad des SSL/TLS-Zertifikats und des privaten Schlüssels direkt als Argumente für --ssl-certfile
und -ssl-keyfile
anzugeben. Optionen bzw. Um ein gültiges Zertifikat zu erhalten, können Sie Let’s encrypt verwenden. Um nur einige Tests durchzuführen, möchten Sie möglicherweise alternativ ein selbstsigniertes Zertifikat erstellen. Sobald wir ein Zertifikat und einen privaten Schlüssel erhalten haben, können wir Folgendes ausführen:
$ calibre-server --ssl-certfile=/path/to/certificate --ssl-keyfile=/path/to/keyfile /path/to/library
Wir können über denselben Port, den wir zuvor angegeben haben, auf den Server zugreifen. Wir müssen lediglich das Protokoll in der Adresse auf „https://“ ändern.
Erstellen eines Systemd-Dienstes für Calibre-Server
Alle großen Linux-Distributionen haben Systemd als Init-System übernommen. Wenn wir möchten, dass der Calibre-Server beim Booten automatisch gestartet wird, müssen wir eine service
-Einheit dafür erstellen. Hier ist ein Beispiel für eine mögliche Konfiguration. Um zu vermeiden, dass der Server als Root ausgeführt wird, können wir zunächst einen dedizierten Benutzer erstellen:
$ sudo useradd --system --shell /usr/sbin/nologin calibre-server
Mit dem obigen Befehl haben wir einen System-Benutzer erstellt. Da Systembenutzer nicht dazu gedacht sind, sich interaktiv am System anzumelden, setzen wir seine Shell auf /usr/sbin/nologin
. Jetzt möchten wir das Verzeichnis erstellen, in dem wir die Serverprotokolle speichern, und seinen Besitz dem Benutzer „Caliber-Server“ und der Gruppe „Caliber-Server“ zuweisen:
$ sudo mkdir /var/log/calibre-server
sudo chown calibre-server:calibre-server /var/log/calibre-server
Für ein sauberes Setup verschieben wir unsere gemeinsam genutzte Bibliothek in ein globales Verzeichnis, sagen wir, wir möchten sie unter /srv/kalibre
verschieben:
$ sudo mkdir /srv/calibre
sudo mv /path/to/library /srv/calibre
Wir verschieben die Benutzerdatenbank, das SSL/TLS-Zertifikat und den entsprechenden privaten Schlüssel in dasselbe Verzeichnis:
$ sudo mv /path/to/database /srv/calibre
sudo mv /path/to/certificate.pem /path/to/privatekey.pem /srv/calibre
Schließlich weisen wir den Besitz dieses Verzeichnisses und aller seiner Unterverzeichnisse dem Benutzer „Caliber-Server“ und der Gruppe „Caliber-Server“ zu:
$ sudo chown -R calibre-server:calibre-server /srv/calibre
Wir können jetzt die Systemd-Dienstdatei als /etc/systemd/system/scale-server.service
erstellen:
[Unit]
Description=Start calibre content server
After=network.target
[Service]
Type=simple
User=calibre-server
Group=calibre-server
ExecStart=/usr/bin/calibre-server --userdb=/srv/calibre/database --enable-auth --access-log=/var/log/calibre-server/access_log --ssl-certfile=/srv/calibre/certificate.pem --ssl-keyfile=/sr
v/calibre/privatekey.pem /srv/calibre/library
[Install]
WantedBy=multi-user.target
Um den Dienst zu starten und beim Booten automatisch zu aktivieren, können wir Folgendes ausführen:
$ sudo systemctl enable --now calibre-server.service
Einrichten der Firewall
Sobald der Server betriebsbereit ist, müssen wir den Datenverkehr über die entsprechenden Ports zulassen, um externen Zugriff zu ermöglichen. Wie wir vorgehen, hängt davon ab, welchen Firewall-Manager wir verwenden. Wenn wir beispielsweise UFW verwenden, um Datenverkehr über Port 8080 von überall aus zuzulassen, würden wir Folgendes ausführen:
$ sudo ufw allow 8080/tcp
Wenn wir stattdessen firewalld verwenden, um Datenverkehr zur Standard-Zone dauerhaft zuzulassen, würden wir Folgendes ausführen:
$ sudo firewall-cmd --add-port 8080/tcp --permanent
sudo firewall-cmd --reload
Schlussfolgerungen
In diesem Tutorial haben wir gelernt, wie man eine Calibre-Server-Instanz einrichtet und eine Calibre-Bibliothek teilt. Wir haben gesehen, wie man Änderungen von lokalen Verbindungen oder von bestimmten IP-Adressen zulässt, wie man die Authentifizierung aktiviert, wie man Zugriffsanfragen protokolliert und schließlich, wie man einen Systemd-Dienst erstellt, um den Server beim Booten automatisch zu starten.