Comment installer le serveur d’Ebook Calibre sur Ubuntu 20.04

Calibre est un gestionnaire d’e-books gratuit et open-source. Il est livré sous la forme d’une application de bureau multiplateforme ainsi que d’un composant serveur et peut être utilisé pour gérer ta bibliothèque d’e-books.

Configurer calibre comme serveur te permet d’accéder à tes livres de n’importe où dans le monde et te permet de les partager avec tes amis et ta famille. Tu peux aussi les transférer sur tes appareils mobiles pour les lire plus tard. Le serveur Calibre te permet aussi de lire des e-books directement sur le Web.

Dans ce tutoriel, tu apprendras comment installer et utiliser un serveur de livres électroniques Calibre sur un serveur basé sur Ubuntu 20.04.

Conditions préalables

  1. Un serveur basé sur Ubuntu 20.04 avec un utilisateur ayant les privilèges sudo.

  2. Tiens le serveur à jour.

    $ sudo apt update && sudo apt upgrade
    

Configurer le pare-feu

Ubuntu 20.04 est livré avec Uncomplicated Firewall(UFW) par défaut. Si ce n'est pas le cas, installe-le d'abord.

$ sudo apt install ufw

Active le port SSH.

$ sudo ufw allow "OpenSSH"

Active le pare-feu.

$ sudo ufw enable

Active les ports 8080 qui sont utilisés par le serveur Calibre.

$ sudo ufw allow 8080

Vérifie l'état du pare-feu.

$ sudo ufw status
Status: active

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

Télécharge et installe le serveur calibre

Ubuntu 20.04 est livré avec calibre mais il est préférable de l'installer directement depuis leur site pour obtenir la dernière version.

Tout d'abord, tu dois installer certaines dépendances.

$ sudo apt install libfontconfig libgl1-mesa-glx

Télécharge le programme d'installation du serveur calibre.

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

Définis le script de l'installateur comme exécutable.

$ chmod +x ./linux-installer.sh

Exécute le programme d'installation.

$ sudo ./linux-installer.sh

Tu recevras quelques avertissements car le programme d'installation s'attend à un système Desktop et non à un serveur headless. Tu peux les ignorer en toute sécurité.

Crée une bibliothèque et ajoute ton premier livre

Pour notre tutoriel, nous allons télécharger un livre du Projet Gutenberg à titre d'exemple. Le Projet Gutenberg est un énorme dépôt de livres gratuits et du domaine public.

Exécute la commande suivante pour télécharger ton premier livre. Dans l'esprit de la récente fête d'Halloween, téléchargeons une histoire d'horreur, "The turn of the screw" de Henry James.

$ wget http://www.gutenberg.org/ebooks/209.kindle.noimages -O turnofthescrew.mobi

Crée un répertoire pour ta bibliothèque calibre.

$ mkdir calibre-library

Ajoute le livre que tu viens de télécharger à ta bibliothèque calibre à l'aide de la commande calibredb.

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

Il est maintenant temps de lancer calibre.

Lance le serveur calibre

Exécute la commande suivante pour démarrer le serveur de contenu calibre.

$ calibre-server calibre-library

calibre-server est la commande utilisée pour démarrer le serveur et calibre-library est le nom du répertoire que nous venons de créer et qui sera utilisé par le serveur pour charger l'interface.

Tu devrais voir une sortie similaire.

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

Lance l'URL http://<yourserverip>:8080 dans ton navigateur et tu verras l'écran par défaut de calibre.

Page d'accueil par défaut du serveur Calibre

Clique sur calibre-library et tu verras le livre The turn of the screw que tu viens de télécharger.

Page de la bibliothèque du serveur Calibre

Tu peux arrêter le serveur en appuyant sur Ctrl+C sur la ligne de commande.

Le serveur Calibre utilise le port 8080 par défaut. Tu peux le changer en modifiant la commande pendant le lancement.

$ calibre-server calibre-library --port 7530

Tu peux ensuite vérifier en lançant l'URL http://<yourserverip>:7530 dans ton navigateur.

Tu devras également autoriser le port via le pare-feu.

$ sudo ufw allow 7530

Créer un service pour le serveur calibre

Tu voudrais probablement que calibre fonctionne toujours, même après le redémarrage du serveur. Pour cela, tu devras créer un service pour calibre qui le lancera automatiquement au démarrage.

Crée un fichier /etc/systemd/system/calibre-server.service et ouvre-le pour le modifier à l'aide de l'éditeur Nano.

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

Colle le code suivant.

## startup service
[Unit]
Description=calibre content 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

Remplace <username> par l'utilisateur système réel sur ton serveur Ubuntu.

Enregistre et ferme le fichier en appuyant sur Ctrl+W et en saisissant Y lorsque tu y es invité.

Active et démarre le service calibre.

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

Tu peux vérifier en redémarrant le service.

$ sudo reboot

Attends quelques minutes et ouvre http://<yourserverip>:8080 dans le navigateur pour vérifier que calibre fonctionne.

Ajoute l'authentification de l'utilisateur au serveur calibre

Pour l'instant, toute personne qui connaît l'IP de ton serveur peut accéder au serveur calibre. Nous pouvons changer cela en ajoutant l'authentification de l'utilisateur au serveur.

Tout d'abord, arrête le serveur calibre.

$ sudo systemctl stop calibre-server

Démarre le script de gestion des utilisateurs de calibre. Tu peux indiquer le chemin où la base de données des utilisateurs sera stockée. Elle est stockée sous la forme d'une base de données SQLite.

$ sudo calibre-server --userdb /home/<username>/.config/calibre/server-users.sqlite --manage-users
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
Enter the username: howtoforge
Enter the new password for howtoforge:
Re-enter the new password for howtoforge, to verify:
User howtoforge added successfully!

Saisis 1 pour créer un nouvel utilisateur et choisis un mot de passe fort.

Ensuite, nous devons modifier le service calibre que nous avons configuré précédemment.

Ouvre le fichier du service.

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

Ajoute le drapeau --enable-auth à la fin de la ligne commençant par ExecStart pour activer l'authentification de l'utilisateur.

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

Enregistre et ferme le fichier en appuyant sur Ctrl+W et en entrant Y lorsque tu y es invité.

Actualise le démon de service pour recharger le fichier de service modifié et redémarre le service.

sudo systemctl daemon-reload
sudo systemctl start calibre-server

La prochaine fois que tu lanceras le site, il te sera demandé le nom d'utilisateur et le mot de passe avant d'accéder à la bibliothèque.

Connexion utilisateur au serveur Calibre

Ajouter automatiquement des livres à ta bibliothèque

Nous pouvons créer un dossier de veille qui sera suivi par le serveur Calibre. Ainsi, chaque fois que tu ajouteras un nouveau livre au dossier, il sera automatiquement ajouté à la bibliothèque Calibre.

Crée un dossier de veille et passe à celui-ci.

$ mkdir ~/watchbooks
$ cd ~/watchbooks

Télécharge un nouveau livre dans le dossier à l'aide de la commande suivante.

$ wget http://www.gutenberg.org/ebooks/514.epub.noimages -o littlewomen.epub

Ensuite, ouvre l'éditeur Crontab.

$ crontab -e

Ajoute la ligne suivante à la fin.

*/5 * * * * calibredb add /home/<username>/watchbooks/ -r --with-library http://localhost:8080#calibre-library --username calibreuser --password YourPassword && rm -r /home/<username>/watchbooks/*

Ce script ajoutera tous les fichiers du répertoire /home/<username>/watchbooks à la bibliothèque Calibre et supprimera tous les fichiers originaux puisqu'ils ne sont plus nécessaires.

La tâche cron s'exécutera toutes les 5 minutes. Attends quelques minutes et recharge le site du serveur calibre pour voir le livre que tu viens d'ajouter apparaître dans la bibliothèque.

Installer Nginx

Dans cette étape, nous allons installer le serveur web Nginx pour servir le serveur calibre par proxy. Ainsi, tu pourras y accéder via un nom de domaine, par exemple, calibre.yourdomain.com. Tu n'auras pas non plus à te soucier de spécifier des numéros de port. Et le fait d'avoir Nginx comme proxy nous permet de servir le site sur SSL.

Exécute la commande suivante pour installer Nginx.

$ sudo apt install nginx

Ouvre les ports 80 et 443 et ferme le port 8080 car il n'est plus nécessaire.

$ sudo ufw allow "Nginx Full"
$ sudo ufw delete allow 8080

Nginx Full est un profil d'application pour le pare-feu ufw qui ouvrira automatiquement les ports 80 et 443.

$ sudo ufw status
Status: active

To                         Action      From

--                         ------      ----

OpenSSH                    ALLOW       Anywhere
Nginx Full  		   ALLOW       Anywhere	
OpenSSH (v6)               ALLOW       Anywhere (v6)
Nginx Full		   ALLOW       Anywhere (v6)

Installer SSL

Nous allons installer SSL en utilisant le service Let's Encrypt.

Pour cela, installe Certbot.

$ sudo apt install certbot

Arrête Nginx car il va interférer avec le processus Certbot.

$ sudo systemctl stop nginx

Génère le certificat. Nous devons également créer un certificat DHParams.

$ export LDOMAIN="calibre.yourdomain.com"
$ export LEMAIL="[email protected]"
$ sudo certbot certonly --standalone -d $LDOMAIN --preferred-challenges http --agree-tos -n -m $LEMAIL --keep-until-expiring 
$ sudo systemctl start nginx
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Nous devons également configurer une tâche cron pour le renouvellement automatique du SSL. Pour ouvrir l'éditeur crontab, exécute la commande suivante

$ sudo crontab -e

La commande ci-dessus ouvre l'éditeur crontab.

Colle la ligne suivante en bas.

25 2 * * * /usr/bin/certbot renew --quiet --pre-hook “systemctl stop nginx” --post-hook “systemctl start nginx”

La tâche cron ci-dessus exécutera certbot à 2 h 25 tous les jours. Tu peux le modifier comme tu le souhaites.

Enregistre le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque tu y es invité.

Configurer Nginx pour servir Calibre par proxy en utilisant SSL

Nous devons modifier le fichier de configuration de Nginx pour ajouter la configuration SSL.

Exécute la commande suivante pour ajouter un fichier de configuration pour le serveur Calibre.

$ sudo nano /etc/nginx/sites-available/calibre.conf

Colle le code suivant dans l'éditeur.

server {
    listen 80;
    listen [::]:80;
    server_name calibre.yourdomain.com;
    # enforce https
    return 301 https://$server_name:443$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name calibre.yourdomain.com;

    location / {
        proxy_pass http://127.0.0.1:8080;
    }

    # Use Mozilla's guidelines for SSL/TLS settings
    # https://mozilla.github.io/server-side-tls/ssl-config-generator/
    ssl_certificate /etc/letsencrypt/live/calibre.yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/calibre.yourdomain.com/privkey.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_session_timeout 1d;
    ssl_session_cache shared:MozSSL:10m;  # about 40000 sessions
    ssl_session_tickets off;
    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_prefer_server_ciphers off;
    ssl_dhparam /etc/ssl/certs/dhparam.pem;
}

Appuie sur Ctrl + X pour fermer l'éditeur et appuie sur Y lorsque tu es invité à enregistrer le fichier.

Active ce fichier de configuration en le liant au répertoire sites-enabled.

$ sudo ln -s /etc/nginx/sites-available/calibre.conf /etc/nginx/sites-enabled/

Teste la configuration de Nginx.

$ sudo nginx -t

Tu devrais voir la sortie suivante indiquant que ta configuration est correcte.

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Recharge le service Nginx.

$ sudo systemctl reload nginx

Tu peux maintenant lancer le site via l'URL https://calibre.yourdomain.com.

Conclusion

Dans ce tutoriel, tu as appris à installer et à exécuter le serveur de livres électroniques Calibre et à le faire fonctionner sur Nginx avec l'authentification de l'utilisateur et avec la possibilité d'ajouter des livres automatiquement. Si tu as des questions, pose-les dans les commentaires ci-dessous.

Vous aimerez aussi...