Wie installiere ich Calibre Ebook Server auf Ubuntu 22.04

Calibre ist ein kostenloser und quelloffener E-Book-Manager. Er funktioniert als plattformübergreifende Desktop-Anwendung und als Serverkomponente. Mit der Desktop-Komponente kannst du deine E-Book-Bibliothek auf einem einzigen Gerät verwalten. Und die Serverkomponente ermöglicht es dir:

  • Auf deine Bücher von überall auf der Welt zugreifen.
  • Deine Bücher ganz einfach auf mobile Geräte übertragen.
  • Bücher mit deinen Freunden und deiner Familie teilen.
  • E-Books direkt im Internet lesen.

In diesem Lernprogramm lernst du, wie du den Calibre-Server auf einem Ubuntu 22.04-Rechner installierst.

Voraussetzungen

  • Ein Server, auf dem Ubuntu 22.04 läuft.
  • Ein Nicht-Root-Benutzer mit sudo-Rechten.
  • Die Uncomplicated Firewall (UFW) ist aktiviert und läuft.
  • Ein Fully Qualified Domain Name, der auf den Server zeigt. Für unser Tutorial werden wir die Domain calibre.example.com verwenden.
  • Alles ist auf dem neuesten Stand.
    $ sudo apt update && sudo apt upgrade
    

Schritt 1 – Firewall konfigurieren

Der erste Schritt vor der Installation der Pakete besteht darin, die Firewall so zu konfigurieren, dass HTTP- und HTTPS-Verbindungen zugelassen werden.

Überprüfe den Status der Firewall.

$ sudo ufw status

Du solltest etwas wie das Folgende sehen.

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)

Erlaube HTTP- und HTTPs-Ports.

$ sudo ufw allow http
$ sudo ufw allow https

Überprüfe den Status zur Bestätigung noch einmal.

$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443/tcp                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443/tcp (v6)               ALLOW       Anywhere (v6)

Schritt 2 – Herunterladen und Installieren des Calibre-Servers

Ubuntu 22.04 wird mit Calibre ausgeliefert, aber es ist besser, es direkt zu installieren, um die neueste Version zu erhalten.

Der erste Schritt besteht darin, einige Abhängigkeiten zu installieren.

$ sudo apt install libopengl0 libxkbcommon-x11-0 libegl1 libfontconfig libgl1-mesa-glx

Lade den Calibre Server Installer herunter.

$ wget https://download.calibre-ebook.com/linux-installer.sh

Mache das Installer-Skript ausführbar.

$ chmod +x ./linux-installer.sh

Führe das Installationsprogramm aus.

$ sudo ./linux-installer.sh

Du wirst einige Warnungen erhalten, weil der Installer einen Desktop und keinen Server erwartet. Du kannst die Warnungen getrost ignorieren.

Schritt 3 – Erstelle eine Calibre-Bibliothek und füge dein erstes Buch hinzu

Im nächsten Schritt richtest du eine Calibre-Bibliothek ein und fügst ihr einige Bücher hinzu. Für unser Tutorial laden wir das Buch The Adventures of Sherlock Holmes von Arthur Conan Doyle vom Project Gutenberg herunter.

$ wget http://www.gutenberg.org/ebooks/1661.kindle.noimages -O adventuresofsherlockholmes.mobi

Nimm immer die Kindle-Version des Buches von der Website. Hier benennen wir die Kindle-Version in filename.mobi um, weil das Mobi-Format von Kindle unterstützt wird, weshalb es auf der Website auch so genannt wird. Außerdem bietet es bessere Formatierungsmöglichkeiten als die Epub-Version.

Erstelle ein Verzeichnis für die Calibre-Bibliothek.

$ mkdir calibre-library

Füge das Buch, das du gerade heruntergeladen hast, mit dem Befehl calibredb zu der Bibliothek hinzu. Wir haben den Ort der Bibliothek im Befehl selbst angegeben.

$ calibredb add adventuresofsherlockholmes.mobi --with-library calibre-library/
Added book ids: 1

Du kannst auf folgende Weise mehrere Bücher auf einmal hinzufügen.

$ calibredb add *.mobi --with-library calibre-library/

Schritt 4 – Calibre Server starten

Jetzt, da wir unsere Bücher fertig haben, ist es an der Zeit, den Calibre-Server zu starten.

$ calibre-server calibre-library

Der Befehl calibre-server nimmt den Speicherort der Bibliothek als Argument. Du solltest eine ähnliche Ausgabe sehen.

calibre server listening on 0.0.0.0:8080
OPDS feeds advertised via BonJour at: your_server_ip port: 8080

Dadurch wird der Calibre-Server an Port 8080 geöffnet. Um den Server zu sehen, musst du zuerst den Port öffnen. Führe den folgenden Befehl aus, um Port 8080 zu öffnen.

$ sudo ufw allow 8080

Öffne die URL http://<yourserverIP>:8080/ in deinem Browser und du erhältst den folgenden Bildschirm. Der Bildschirm wird je nach dem Thema deines Betriebssystems dunkel oder hell angezeigt.

Calibre Server Startseite

Klicke auf den Link calibre-library, um das Buch anzuzeigen, das du im vorherigen Schritt hinzugefügt hast.

Calibre Server Bibliotheksansicht

Schließe den Server, indem du die Tasten Strg + C auf deinem Terminal drückst.

Du kannst einen anderen Port verwenden, um den Calibre-Server freizugeben. Verwende dazu den folgenden Befehl. Du musst sicherstellen, dass der Port in der Firewall geöffnet ist.

$ calibre-server calibre-library --port 7654

Schritt 5 – Erstelle eine systemd-Dienstdatei

Damit der Prozess des Calibre-Servers dauerhaft läuft und Neustarts übersteht, musst du eine systemd-Dienstdatei für ihn erstellen.

Erstelle eine Datei namens calibre-server.service im Verzeichnis /etc/sytemd/system/ und öffne sie zum Bearbeiten.

$ sudo nano /etc/systemd/system/calibre-server.service

Füge den folgenden Code in die Datei ein.

[Unit]
Description=Calibre Server
After=network.target

[Service]
Type=simple
User=<username>
Group=<username>
ExecStart=/opt/calibre/calibre-server /home/<username>/calibre-library --enable-local-write

[Install]
WantedBy=multi-user.target

Das --enable-local-write Flag gibt dem Server Schreibrechte, um neue Bücher zur Bibliothek hinzuzufügen. Das liegt daran, dass du mit dem Befehl calibredb keine Bücher hinzufügen kannst, während der Server läuft.

Ersetze <username> im obigen Code durch deinen Benutzernamen für das Linux-System. Speichere und schließe die Datei, indem du Strg+W drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Lade den Service-Daemon neu, um die Servicedatei zu aktivieren.

$ sudo systemctl daemon-reload

Aktiviere und starte den Calibre-Dienst.

$ sudo systemctl enable calibre-server
$ sudo systemctl start calibre-server

Überprüfe den Status des Dienstes.

$ sudo systemctl status calibre-server
? calibre-server.service - Calibre Server
     Loaded: loaded (/etc/systemd/system/calibre-server.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2022-07-25 07:23:42 UTC; 15s ago
   Main PID: 1877 (BonJour)
      Tasks: 13 (limit: 2241)
     Memory: 53.3M
        CPU: 762ms
     CGroup: /system.slice/calibre-server.service
             ??1877 /opt/calibre/bin/calibre-server /home/<username>/calibre-library --enable-local-write

Jul 25 07:23:42 calibre systemd[1]: Started Calibre Server.
Jul 25 07:23:42 calibre calibre-server[1877]: QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-<username>'
Jul 25 07:23:42 calibre calibre-server[1877]: calibre server listening on 0.0.0.0:8080
Jul 25 07:23:43 calibre calibre-server[1877]: OPDS feeds advertised via BonJour at: 69.28.84.201 port: 8080

Schritt 6 – Aktiviere die Benutzerauthentifizierung

Du kannst die Benutzerauthentifizierung zu Calibre hinzufügen, um deine Bibliothek vor dem Zugriff durch Dritte zu schützen. Stoppe zunächst den Calibre-Server.

$ sudo systemctl stop calibre-server

Calibre verwendet eine SQLite-Datenbank, um Benutzeranmeldeinformationen zu speichern. Starte das Benutzerverwaltungsskript von Calibre, um einen Benutzer hinzuzufügen.

$ sudo calibre-server --manage-users

Dir werden vier Optionen angeboten und du wirst nach deiner Wahl gefragt. Drücke 1, um einen neuen Benutzer hinzuzufügen, und gib den Benutzernamen und das Passwort ein, um das Hinzufügen eines neuen Benutzers abzuschließen.

1) Add a new user
2) Edit an existing user
3) Remove a user
4) Cancel

What do you want to do? [1-4]: (Press 1)
Enter the username: howtoforge
Enter the new password for howtoforge:
Re-enter the new password for howtoforge, to verify:
User howtoforge added successfully!

Als Nächstes musst du die Servicedatei bearbeiten, um die Authentifizierung zu überprüfen. Öffne die Datei zum Bearbeiten.

$ sudo nano /etc/systemd/system/calibre-server.service

Füge das Flag --enable-auth am Ende der Zeile ein, die mit ExecStart beginnt, um die Benutzerauthentifizierung zu aktivieren.

...
ExecStart=/opt/calibre/calibre-server "/home/<username>/calibre-library" --userdb "/home/<username>/.config/calibre/server-users.sqlite" --enable-local-write --enable-auth
...

Speichere und schließe die Datei, indem du Strg+W drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Lade den Service Daemon neu und starte den Dienst.

$ sudo systemctl daemon-reload
$ sudo systemctl start calibre-server

Wenn du die URL der Bibliothek öffnest, wirst du aufgefordert, deinen Benutzernamen und dein Passwort einzugeben, bevor du auf die Bibliothek zugreifen kannst. Gib deine Anmeldedaten ein und klicke auf die Schaltfläche Anmelden, um auf die Bibliothek zuzugreifen.

Calibre Server Authentifizierungsaufforderung

Schritt 7 – Automatisches Hinzufügen von Büchern zur Bibliothek

Calibre ermöglicht es dir, Bücher automatisch über einen Cron-Job zur Bibliothek hinzuzufügen. Dazu wird ein Verzeichnis in regelmäßigen Abständen nach neuen Büchern durchsucht und diese dann der Bibliothek hinzugefügt. Das ist der schnellste Weg, Bücher hinzuzufügen, denn du kannst sie einfach in das Verzeichnis hochladen und sie werden bald in der Bibliothek erscheinen, ohne dass du manuell eingreifen musst.

Der erste Schritt besteht darin, ein Überwachungsverzeichnis zu erstellen.

$ mkdir ~/calibre-watch
$ cd ~/calibre-watch

Lade das Buch War and Peace von Leo Tolstoy in dieses Verzeichnis von Project Gutenberg herunter.

$ wget https://www.gutenberg.org/ebooks/2600.kindle.images -O warandpeace.mobi

Wie du siehst, laden wir diesmal eine Version herunter, die Bilder enthält. Das variiert von Buch zu Buch bei Project Gutenberg. Bei einigen sind Bilder verfügbar, bei anderen nicht. Calibre funktioniert mit beiden Formaten gut.

Öffne den Crontab-Editor.

$ crontab -e

Wenn du die Crontab zum ersten Mal verwendest, wirst du aufgefordert, einen Editor auszuwählen.

no crontab for <username> - using an empty one

Select an editor.  To change later, run 'select-editor'.
  1. /bin/nano        <---- easiest
  2. /usr/bin/vim.basic
  3. /usr/bin/vim.tiny
  4. /bin/ed

Choose 1-4 [1]:

Gib 1 ein, um den Nano-Editor auszuwählen, da er am einfachsten zu bedienen ist.

Füge den folgenden Befehl am Ende der Datei ein.

*/5 * * * * calibredb add /home/<username>/calibre-watch/ -r --with-library http://localhost:8080#calibre-library --username mycalibreuser --password StrongPassword! && rm -r /home/<username>/calibre-watch/*

Dieses Skript fügt alle Dateien im Verzeichnis /home/<username>/calibre-watch zur Calibre-Bibliothek hinzu und löscht alle Originaldateien, da sie nicht mehr benötigt werden. Der obige Job wird alle 5 Minuten ausgeführt. Ersetze <username> durch deinen Linux-System-Benutzernamen und füge deine Calibre-Zugangsdaten an den entsprechenden Stellen ein.

Speichere und schließe die Datei, indem du Strg+W drückst und Y eingibst, wenn du dazu aufgefordert wirst. Warte ein paar Minuten und lade die Calibre-Serverseite erneut, um zu sehen, dass das Buch, das du gerade hinzugefügt hast, in der Bibliothek erscheint.

Schritt 8 – Nginx installieren

Ubuntu 22.04 wird mit einer älteren Version von Nginx ausgeliefert. Um die neueste Version zu installieren, musst du das offizielle Nginx-Repository herunterladen.

Importiere den Signierschlüssel von Nginx.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Füge das Repository für die stabile Version von Nginx 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

Aktualisiere die System-Repositories.

$ sudo apt update

Installiere Nginx.

$ sudo apt install nginx

Überprüfe die Installation.

$ nginx -v
nginx version: nginx/1.22.0

Schritt 9 – SSL installieren

Im Moment ist Calibre über einen HTTP-Port und eine IP-Adresse zugänglich. Um es besser abzusichern, werden wir den Zugriff über eine eigene Domain mit einem SSL-Zertifikat ermöglichen.

Wir müssen Certbot installieren, um das SSL-Zertifikat für Calibre zu erstellen. Du kannst Certbot entweder über das Repository von Ubuntu installieren oder die neueste Version mit dem Snapd-Tool herunterladen. Wir werden die Snapd-Version verwenden.

Bei Ubuntu 22.04 ist Snapd standardmäßig installiert. Führe die folgenden Befehle aus, um sicherzustellen, dass deine Version von Snapd auf dem neuesten Stand ist.

$ sudo snap install core

Installiere Certbot.

$ sudo snap install --classic certbot

Verwende den folgenden Befehl, um sicherzustellen, dass der Certbot-Befehl ausgeführt werden kann, indem du einen symbolischen Link zum Verzeichnis /usr/bin erstellst.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Führe den folgenden Befehl aus, um ein SSL-Zertifikat zu erzeugen.

$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m name@example.com -d calibre.example.com

Mit dem obigen Befehl wird ein Zertifikat in das Verzeichnis /etc/letsencrypt/live/calibre.example.com auf deinem Server heruntergeladen.

Erstelle ein Diffie-Hellman-Gruppenzertifikat.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Öffne die Datei /etc/letsencrypt/renewal/calibre.example.com.conf zur Bearbeitung.

$ sudo nano /etc/letsencrypt/renewal/calibre.example.com.conf

Füge den folgenden Code am Ende der Datei ein.

pre_hook = systemctl stop nginx
post_hook = systemctl start nginx

Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Wir haben das SSL-Zertifikat mit der Standalone-Option von Certbot erstellt. Es lässt seinen Webserver laufen, um das Zertifikat zu erstellen, was bedeutet, dass Nginx während der Erneuerung abgeschaltet sein sollte. Die Befehle pre_hook und post_hook werden vor und nach der Erneuerung ausgeführt, um den Nginx-Server automatisch abzuschalten und neu zu starten, sodass kein manuelles Eingreifen erforderlich ist.

Um zu überprüfen, ob die SSL-Erneuerung einwandfrei funktioniert, führe einen Probelauf des Prozesses durch.

$ sudo certbot renew --dry-run

Wenn du keine Fehler siehst, ist alles in Ordnung. Dein Zertifikat wird automatisch erneuert.

Schritt 10 – Nginx konfigurieren

Öffne die Datei /etc/nginx/nginx.conf zum Bearbeiten.

$ sudo nano /etc/nginx/nginx.conf

Füge die folgende Zeile vor der Zeile include /etc/nginx/conf.d/*.conf; ein.

server_names_hash_bucket_size  64;

Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Erstelle und öffne die Datei /etc/nginx/conf.d/calibre.conf zum Bearbeiten.

$ sudo nano /etc/nginx/conf.d/calibre.conf

Füge den folgenden Code in die Datei ein. Ersetze calibre.example.com durch deinen Domainnamen. Wir haben den Wert der Variable client_max_body_size auf 50 MB festgelegt. Du kannst ihn nach deinen Bedürfnissen ändern.

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 calibre.example.com;

    client_max_body_size 50M;

    access_log  /var/log/nginx/calibre.access.log;
    error_log   /var/log/nginx/calibre.error.log;

    ssl_certificate      /etc/letsencrypt/live/calibre.example.com/fullchain.pem;
    ssl_certificate_key  /etc/letsencrypt/live/calibre.example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/calibre.example.com/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  calibre.example.com;
    return 301   https://$host$request_uri;
}

Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.

Überprüfe deine Nginx-Konfiguration.

$ sudo nginx -t

Starte den Nginx-Server neu, um die Konfigurationsdateien zu aktivieren.

$ sudo systemctl restart nginx

Besuche https://calibre.example.com in deinem Browser, um auf Calibre zuzugreifen. Du kannst sehen, dass das über Cron hinzugefügte Buch auch in der Bibliothek verfügbar ist.

Calibre Bibliothek aktualisieren

Fazit

Damit ist unsere Anleitung zur Installation von Calibre Server auf einem Ubuntu 22.04 Rechner mit Nginx abgeschlossen. Außerdem haben wir Calibre so konfiguriert, dass eine grundlegende Authentifizierung möglich ist und das automatische Hinzufügen neuer Bücher unterstützt wird. Calibre Server wird mit einer Reihe von Kommandozeilen-Tools ausgeliefert. Um mehr darüber zu erfahren, kannst du die Calibre-Dokumentation besuchen. Wenn du Fragen hast, schreibe sie unten in die Kommentare.

Das könnte dich auch interessieren …