Website-Suche

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.

Verwandte Artikel: