Website-Suche

So installieren Sie Calibre Ebook Server unter Ubuntu 22.04


Dieses Tutorial existiert für diese Betriebssystemversionen

  • Ubuntu 22.04 (Jammy Jellyfish)
  • Ubuntu 20.04 (Focal Fossa)

Auf dieser Seite

  1. Voraussetzungen
  2. Schritt 1 – Firewall konfigurieren
  3. Schritt 2 – Calibre-Server herunterladen und installieren
  4. Schritt 3 – Erstellen Sie eine Calibre-Bibliothek und fügen Sie Ihr erstes Buch hinzu
  5. Schritt 4 – Starten Sie Calibre Server
  6. Schritt 5 – Erstellen Sie eine systemd-Dienstdatei
  7. Schritt 6 – Benutzerauthentifizierung aktivieren
  8. Schritt 7 – Bücher automatisch zur Bibliothek hinzufügen
  9. Schritt 8 – Installieren Sie Nginx
  10. Schritt 9 – Installieren Sie SSL
  11. Schritt 10 – Nginx konfigurieren
  12. Schlussfolgerung

Calibre ist ein kostenloser Open-Source-E-Book-Manager. Es funktioniert als plattformübergreifende Desktop-Anwendung zusammen mit einer Serverkomponente. Die Desktop-Komponente kann Ihre E-Book-Bibliothek auf einem einzigen Gerät verwalten. Und die Serverkomponente ermöglicht Ihnen Folgendes:

  • Greifen Sie von überall auf der Welt auf Ihre Bücher zu.
  • Übertragen Sie Ihre Bücher ganz einfach auf Mobilgeräte.
  • Teilen Sie Bücher mit Ihren Freunden und Ihrer Familie.
  • E-Books direkt im Internet lesen.

In diesem Lernprogramm erfahren Sie, wie Sie den Calibre-Server auf einem Ubuntu 22.04-Computer installieren.

Voraussetzungen

  • A server running Ubuntu 22.04.

  • A non-root user with sudo privileges.

  • The Uncomplicated Firewall(UFW) is enabled and running.

  • A Fully Qualified domain name pointed to the server. For our tutorial, we will be using the domain calibre.example.com.

  • Everything is updated.

    $ sudo apt update && sudo apt upgrade
    

Schritt 1 – Konfigurieren Sie die Firewall

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

Überprüfen Sie den Status der Firewall.

$ sudo ufw status

Sie sollten so etwas wie das Folgende sehen.

Status: active

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

HTTP- und HTTPS-Ports zulassen.

$ sudo ufw allow http
$ sudo ufw allow https

Überprüfen Sie den Status zur Bestätigung erneut.

$ 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 – Laden Sie den Calibre-Server herunter und installieren Sie ihn

Ubuntu 22.04 wird mit Calibre geliefert, 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

Laden Sie das Installationsprogramm für den Calibre-Server herunter.

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

Machen Sie das Installationsskript ausführbar.

$ chmod +x ./linux-installer.sh

Führen Sie das Installationsprogramm aus.

$ sudo ./linux-installer.sh

Sie erhalten einige Warnungen, da das Installationsprogramm einen Desktop und keinen Server erwartet. Es ist sicher, die Warnungen zu ignorieren.

Schritt 3 – Erstellen Sie eine Calibre-Bibliothek und fügen Sie Ihr erstes Buch hinzu

Der nächste Schritt besteht darin, eine Calibre-Bibliothek einzurichten und ihr einige Bücher hinzuzufügen. Für unser Tutorial werden wir das Buch Die Abenteuer von Sherlock Holmes von Arthur Conan Doyle von Project Gutenberg herunterladen.

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

Holen Sie sich immer die Kindle-Version des Buches von der Website. Hier benennen wir die Kindle-Version in filename.mobi um, da das Mobi-Format von Kindle nativ unterstützt wird, weshalb es auf der Website so genannt wird. Es bietet auch bessere Formatierungsmöglichkeiten als die Epub-Version.

Erstellen Sie ein Verzeichnis für die Calibre-Bibliothek.

$ mkdir calibre-library

Fügen Sie das soeben heruntergeladene Buch mit dem Befehl calibredb zur Bibliothek hinzu. Wir haben den Speicherort der Bibliothek im Befehl selbst angegeben.

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

Sie können auf folgende Weise mehrere Bücher auf einmal hinzufügen.

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

Schritt 4 – Starten Sie Calibre Server

Nachdem 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. Sie sollten 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 verfügbar gemacht. Um den Server anzuzeigen, müssen Sie zuerst den Port öffnen. Führen Sie den folgenden Befehl aus, um Port 8080 zu öffnen.

$ sudo ufw allow 8080

Öffnen Sie die URL http://:8080/ in Ihrem Browser und Sie erhalten den folgenden Bildschirm. Der Bildschirm wird je nach Auswahl Ihres Betriebssystemdesigns dunkel oder hell angezeigt.

Klicken Sie auf den Calibre-Library-Link, um das Buch anzuzeigen, das Sie im vorherigen Schritt hinzugefügt haben.

Schließen Sie den Server, indem Sie auf Ihrem Terminal die Tastenkombination Strg + C drücken.

Sie können einen anderen Port verwenden, um den Calibre-Server verfügbar zu machen. Verwenden Sie dazu den folgenden Befehl. Sie müssen sicherstellen, dass der Port in der Firewall geöffnet ist.

$ calibre-server calibre-library --port 7654

Schritt 5 – Erstellen Sie eine systemd-Dienstdatei

Damit der Calibre-Server persistent verarbeitet und Neustarts überlebt, müssen Sie eine systemd-Dienstdatei dafür erstellen.

Erstellen Sie eine Datei namens calibre-server.service im Verzeichnis /etc/sytemd/system/ und öffnen Sie sie zur Bearbeitung.

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

Fügen Sie den folgenden Code darin 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 Schreibzugriff, um neue Bücher zur Bibliothek hinzuzufügen. Dies liegt daran, dass Sie keine Bücher mit dem Befehl calibredb hinzufügen können, während der Server läuft.

Ersetzen Sie im obigen Code durch den Benutzernamen Ihres Linux-Systems. Speichern und schließen Sie die Datei, indem Sie Strg+W drücken und Y eingeben, wenn Sie dazu aufgefordert werden.

Laden Sie den Dienstdämon neu, um die Dienstdatei zu aktivieren.

$ sudo systemctl daemon-reload

Aktivieren und starten Sie den Calibre-Dienst.

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

Überprüfen Sie 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 – Aktivieren Sie die Benutzerauthentifizierung

Sie können Calibre eine Benutzerauthentifizierung hinzufügen, um zu verhindern, dass Ihre Bibliothek für andere verfügbar ist. Stoppen Sie zuerst den Calibre-Server.

$ sudo systemctl stop calibre-server

Calibre verwendet eine SQLite-Datenbank zum Speichern von Benutzeranmeldeinformationen. Starten Sie das Calibres-Benutzerverwaltungsskript, um einen Benutzer hinzuzufügen.

$ sudo calibre-server --manage-users

Sie erhalten vier Optionen und werden nach Ihrer Wahl gefragt. Drücken Sie 1, um einen neuen Benutzer hinzuzufügen, und geben Sie den Benutzernamen und das Kennwort 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 müssen Sie die Dienstdatei bearbeiten, um die Authentifizierung zu überprüfen. Öffnen Sie die Datei zum Bearbeiten.

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

Fügen Sie das Flag --enable-auth am Ende der Zeile hinzu, 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
...

Speichern und schließen Sie die Datei, indem Sie Strg+W drücken und Y eingeben, wenn Sie dazu aufgefordert werden.

Laden Sie den Service-Daemon neu und starten Sie den Service.

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

Wenn Sie die Bibliotheks-URL öffnen, werden Sie zur Eingabe Ihres Benutzernamens und Kennworts aufgefordert, bevor Sie darauf zugreifen können. Geben Sie Ihre Anmeldeinformationen ein und klicken Sie auf die Schaltfläche Anmelden, um auf die Bibliothek zuzugreifen.

Schritt 7 – Bücher automatisch zur Bibliothek hinzufügen

Mit Calibre können Sie Bücher mithilfe eines Cron-Jobs automatisch zur Bibliothek hinzufügen. Dazu sucht es in regelmäßigen Abständen in einem Verzeichnis nach neuen Büchern und fügt diese dann der Bibliothek hinzu. Dies ist der schnellste Weg, um Bücher hinzuzufügen, wo Sie sie einfach in das Verzeichnis hochladen können und sie bald ohne manuellen Eingriff in der Bibliothek erscheinen.

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

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

Laden Sie das Buch Krieg und Frieden von Leo Tolstoi von Project Gutenberg in dieses Verzeichnis herunter.

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

Wie Sie bemerken, laden wir dieses Mal eine Version herunter, die Bilder enthält. Es variiert von Buch zu Buch über Projekt Gutenberg. Einige haben Image-Versionen verfügbar, andere nicht. Calibre funktioniert mit beiden Formaten gut.

Öffnen Sie den Crontab-Editor.

$ crontab -e

Wenn Sie Crontab zum ersten Mal verwenden, werden Sie 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]:

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

Fügen Sie den folgenden Befehl am Ende der Datei hinzu.

*/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//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. Ersetzen Sie durch den Benutzernamen Ihres Linux-Systems und fügen Sie Ihre Calibre-Anmeldeinformationen an den entsprechenden Stellen hinzu.

Speichern und schließen Sie die Datei, indem Sie Strg+W drücken und Y eingeben, wenn Sie dazu aufgefordert werden. Warten Sie ein paar Minuten und laden Sie die Calibre-Server-Site neu, um zu sehen, dass das Buch, das Sie gerade hinzugefügt haben, in der Bibliothek erscheint.

Schritt 8 – Installieren Sie Nginx

Ubuntu 22.04 wird mit einer älteren Version von Nginx ausgeliefert. Um die neueste Version zu installieren, müssen Sie das offizielle Nginx-Repository herunterladen.

Nginxs-Signaturschlüssel importieren.

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

Fügen Sie 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

Aktualisieren Sie die System-Repositorys.

$ sudo apt update

Nginx installieren.

$ sudo apt install nginx

Überprüfen Sie die Installation.

$ nginx -v
nginx version: nginx/1.22.0

Schritt 9 – Installieren Sie SSL

Derzeit wird Calibre über eine IP-Adresse auf einem HTTP-Port angezeigt. Um es besser zu sichern, werden wir den Zugriff über eine dedizierte Domain mit einem SSL-Zertifikat ermöglichen.

Wir müssen Certbot installieren, um das SSL-Zertifikat für Calibre zu generieren. Sie können Certbot entweder über das Ubuntus-Repository installieren oder die neueste Version mit dem Snapd-Tool abrufen. Wir werden die Snapd-Version verwenden.

Ubuntu 22.04 wird standardmäßig mit Snapd geliefert. Führen Sie die folgenden Befehle aus, um sicherzustellen, dass Ihre Version von Snapd auf dem neuesten Stand ist.

$ sudo snap install core

Certbot installieren.

$ sudo snap install --classic certbot

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

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

Führen Sie den folgenden Befehl aus, um ein SSL-Zertifikat zu generieren.

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

Der obige Befehl lädt ein Zertifikat in das Verzeichnis /etc/letsencrypt/live/calibre.example.com auf Ihrem Server herunter.

Generieren Sie ein Diffie-Hellman-Gruppenzertifikat.

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

Öffnen Sie die Datei /etc/letsencrypt/renewal/calibre.example.com.conf zum Bearbeiten.

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

Fügen Sie unten den folgenden Code ein.

pre_hook = systemctl stop nginx
post_hook = systemctl start nginx

Speichern Sie die Datei, indem Sie Strg + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.

Wir haben das SSL-Zertifikat mit der eigenständigen Option von Certbot generiert. Es führt seinen Webserver aus, um das Zertifikat zu erstellen, was bedeutet, dass Nginx während der Erneuerung abgeschaltet werden sollte. Die Befehle pre_hook und post_hook werden vor und nach der Erneuerung ausgeführt, um den Nginx-Server automatisch herunterzufahren und neu zu starten, wodurch kein manueller Eingriff erforderlich ist.

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

$ sudo certbot renew --dry-run

Wenn Sie keine Fehler sehen, sind Sie fertig. Ihr Zertifikat wird automatisch verlängert.

Schritt 10 – Konfigurieren Sie Nginx

Öffnen Sie die Datei /etc/nginx/nginx.conf zum Bearbeiten.

$ sudo nano /etc/nginx/nginx.conf

Fügen Sie die folgende Zeile vor der Zeile include /etc/nginx/conf.d/*.conf; hinzu.

server_names_hash_bucket_size  64;

Speichern Sie die Datei, indem Sie Strg + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.

Erstellen und öffnen Sie die Datei /etc/nginx/conf.d/calibre.conf zum Bearbeiten.

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

Fügen Sie den folgenden Code darin ein. Ersetzen Sie calibre.example.com durch Ihren Domänennamen. Wir haben den Wert der Variablen client_max_body_size auf 50 MB festgelegt. Sie können es gemäß Ihren Anforderungen ä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;
}

Speichern Sie die Datei, indem Sie Strg + X drücken und Y eingeben, wenn Sie dazu aufgefordert werden.

Überprüfen Sie Ihre Nginx-Konfiguration.

$ sudo nginx -t

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

$ sudo systemctl restart nginx

Besuchen Sie https://calibre.example.com in Ihrem Browser, um auf Calibre zuzugreifen. Sie können sehen, dass das über Cron hinzugefügte Buch auch in der Bibliothek verfügbar ist.

Fazit

Damit ist unser Tutorial zur Installation von Calibre Server auf einem Ubuntu 22.04-Rechner mit Nginx abgeschlossen. Wir haben Calibre auch konfiguriert, um die grundlegende Authentifizierung zu aktivieren und Unterstützung für das automatische Hinzufügen neuer Bücher hinzuzufügen. Calibre Server wird mit vielen Befehlszeilentools ausgeliefert. Um mehr darüber zu erfahren, können Sie die Calibre-Dokumentation besuchen. Wenn Sie Fragen haben, posten Sie sie in den Kommentaren unten.

Verwandte Artikel: