Comment accéder à distance à votre bibliothèque de livres électroniques avec le serveur Calibre
Calibre est, sans aucun doute, le gestionnaire de livres électroniques le plus complet disponible sur Linux et d'autres systèmes d'exploitation. L'application est entièrement gratuite et open source : elle nous permet d'organiser, de convertir et de synchroniser facilement nos ebooks avec une variété d'appareils et de lecteurs d'ebooks. Calibre dispose d'un serveur multimédia inclus, qui peut être utilisé pour accéder à distance à une bibliothèque.
Dans ce didacticiel, nous voyons comment installer Caliber dans certaines des distributions Linux les plus utilisées, ainsi que comment lancer et configurer le serveur Caliber.
Dans ce didacticiel, vous apprendrez :
- Comment installer Calibre
- Comment démarrer et configurer le serveur Calibre
- Comment autoriser les modifications de bibliothèque pour les connexions locales ou des IP spécifiques
- Comment activer l'authentification sur le serveur Calibre
- Comment crypter les communications avec le serveur Calibre en utilisant https
- Comment créer un service Systemd pour démarrer et activer le serveur calibre au démarrage
Installation de Calibre
Calibre est un logiciel gratuit et open source. Il est principalement écrit en Python et activement développé sur Github. L'application est disponible dans le référentiel officiel de toutes les principales distributions Linux. Pour installer Caliber sur Debian et les distributions basées sur Debian, tout ce que nous avons à faire est d'exécuter la commande suivante :
$ sudo apt install calibre
En parlant de distributions basées sur Debian, il convient de noter que l'installation de Calibre sur Raspberry Pi OS Bullseye est interrompue au moment de la rédaction, car le package « qtwebengine », requis en tant que dépendance, n'est pas pris en charge sur l'architecture armv6. Si vous utilisez un modèle Rpi récent (>= 3) et un système arm64, vous devriez pouvoir installer la version flatpak de Caliber (voir ci-dessous).
Pour installer Calibre sur Fedora, nous pouvons utiliser dnf
:
$ sudo dnf install calibre
Installer Calibre sur Archilinux est tout aussi simple, puisque l'application est disponible dans le dépôt « Extra » :
$ sudo pacman -S calibre
À l'exception d'Archlinux, où les applications sont toujours mises à jour, la version de Calibre disponible dans les référentiels des distributions peut être assez ancienne. Au moment d'écrire ces lignes, par exemple, la dernière version de Calibre est la 6.23.0, cependant, celle disponible dans les dépôts Fedora est la 5.43.0 (sur Debian stable, nous sommes bloqués avec la version 5.12.0 !). Afin d'installer la dernière version de Calibre, de manière indépendante de la distribution, nous pouvons utiliser des flatpaks.
Installer Calibre en tant que flatpak
Afin d'installer le flatpak Caliber, nous devons d'abord nous assurer que le flatpak
lui-même est installé dans notre système. Si vous utilisez Debian :
$ sudo apt install flatpak
Sur Fedora et les distributions basées sur Fedora :
$ sudo dnf install flatpak
Sur Archlinux, à la place :
$ sudo pacman -S flatpak
L'étape suivante consiste à s'assurer que le référentiel « flathub » est disponible en tant que source logicielle. Dans les exemples suivants, nous effectuons des actions liées à Flatpak en tant qu'utilisateurs non privilégiés, le logiciel ne sera donc pas disponible dans l'ensemble du système. Cela présente l'avantage de ne pas nécessiter d'élévation de privilèges et constitue la solution idéale si vous utilisez Calibre sur une machine mono-utilisateur. Toutefois, si vous souhaitez effectuer une installation à l'échelle du système, vous pouvez simplement préfixer les commandes avec sudo
et omettre l'indicateur --user
. Pour ajouter le dépôt flathub, nous exécutons :
$ flatpak --user remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
Pour installer Calibre, nous exécutons :
flatpak --user --assumeyes install flathub com.calibre_ebook.calibre
Dans la commande ci-dessus, l'option --assumeyes
est utilisée pour répondre automatiquement par l'affirmative à l'invite interactive. Vous souhaiterez peut-être l'omettre, pour inspecter les dépendances de Caliber flatpak avant de les installer.
Démarrer le serveur Calibre
Pour démarrer le serveur Caliber depuis l'interface graphique de Caliber, il suffit de cliquer sur Connecter/Partager -> Démarrer le serveur de contenu dans le menu principal :
À ce stade, nous devrions pouvoir accéder à notre bibliothèque à localhost:8080
:
Pour démarrer le serveur calibre sur un système sans tête, nous pouvons exécuter l'utilitaire CLI calibre-server
et passer le chemin de la bibliothèque calibre en argument :
$ calibre-server /path/to/library
Si vous utilisez la version flatpak de Calibre, à la place :
$ flatpak --command="sh" run com.calibre_ebook.calibre -c "calibre-server /path/to/library"
Fondamentalement, la commande doit être passée en argument à l'option -c
: ceci est valable pour toutes les commandes que nous rapporterons à partir de maintenant.
Gestion du serveur Calibre
Le serveur Caliber peut être géré à partir de l'interface graphique, depuis préférences -> Partage sur le réseau ou à l'aide de l'utilitaire CLI. Dans ce tutoriel, nous nous concentrerons sur ce dernier.
Changer le port du serveur
Pour modifier le port utilisé par le serveur, nous pouvons utiliser l'option --port
. Pour que le serveur Caliber écoute sur le port 8000, par exemple, nous exécuterions :
$ calibre-server --port=8000 /path/to/library
Exécuter le serveur en mode démon
Pour exécuter le serveur en tant que démon, afin qu'il fonctionne en arrière-plan, nous pouvons utiliser l'option --daemonize
:
$ calibre-server --daemonize /path/to/library
Autoriser les modifications de la bibliothèque locale via l'interface Web
Lorsque l'authentification est désactivée (par défaut), le serveur s'exécute en mode lecture seule. Cela signifie que toute modification apportée à la bibliothèque via l'interface Web n'est pas effective. Pour modifier ce comportement et accorder des « privilèges d'écriture » aux requêtes provenant de la même machine sur laquelle le serveur est exécuté, nous pouvons utiliser l'option --enable-local-write
:
$ calibre-server --enable-local-write /path/to/library
Configuration de l'authentification
La première chose que nous devons faire pour activer l'authentification est de créer la base de données contenant les utilisateurs autorisés à accéder au serveur Caliber. Pour ce faire, nous pouvons exécuter calibre-server
avec l'option --manage-users
et spécifier le chemin où nous voulons stocker la base de données, en le passant comme argument à--userdb
. Cela appelle un guide interactif, qui nous permet d'ajouter, de modifier et de supprimer de nouveaux utilisateurs :
$ 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
Dans ce cas, à titre d'exemple, nous avons spécifié que nous souhaitons que la base de données soit créée dans le répertoire de travail actuel, sous le nom « calibre_users.sqlite ». Pour ajouter un nouvel utilisateur, nous avons sélectionné et confirmé la première entrée dans le menu, puis nous avons fourni un nom d'utilisateur et un mot de passe :
Enter the username: calibreuser
Enter the new password for calibreuser:
Re-enter the new password for calibreuser, to verify:
User calibreuser added successfully!
Maintenant, pour activer réellement l'authentification, nous devons lancer le serveur avec l'option --enable-auth
, et encore une fois, spécifier le chemin de la base de données :
$ calibre-server --userdb=calibre_users.sqlite --enable-auth /path/to/library
Pour accéder à la bibliothèque, nous devons maintenant fournir le nom d'utilisateur et le mot de passe que nous avons précédemment spécifiés :
Pour bannir une adresse IP spécifique après un nombre prédéfini d'authentifications échouées, nous pouvons lancer le serveur avec l'option supplémentaire --ban-after
et fournir le nombre de tentatives d'authentification échouées qui déclencheront l'interdiction.
Autoriser les modifications à partir d'adresses IP spécifiques sans authentification
Comme alternative partielle à l'authentification, nous pouvons lancer le serveur avec l'option --trusted-ips
, en transmettant une liste d'adresses IP séparées par des virgules autorisées à effectuer des modifications. Par exemple, supposons que nous souhaitions autoriser les opérations d'écriture à partir de l'IP 192.168.0.40
. Nous courrions :
$ calibre-server --trusted-ips=192.168.0.40 /path/to/calibre/library
Journalisation des demandes d'accès
Par défaut, le serveur Caliber n'enregistre pas les demandes d'accès. Si nous voulons activer cette fonctionnalité, il suffit d'utiliser l'option --access-log
et de passer le chemin du fichier journal en argument. Pour exécuter le serveur et enregistrer les accès à un fichier dans le répertoire de travail actuel, par exemple, nous exécuterions :
$ calibre-server --access-log=calibre_access.log /path/to/library
Activation de HTTPS
Pour une sécurité maximale, nous souhaitons crypter les communications avec le serveur. Le moyen le plus simple de le faire est de fournir directement le chemin du certificat SSL/TLS et de la clé privée, comme arguments aux --ssl-certfile
et -ssl-keyfile
options, respectivement. Pour obtenir un certificat valide, vous souhaiterez peut-être utiliser Let's encrypt. Pour effectuer simplement quelques tests, vous souhaiterez peut-être plutôt générer un certificat auto-signé. Une fois que nous avons obtenu un certificat et une clé privée, nous pouvons exécuter :
$ calibre-server --ssl-certfile=/path/to/certificate --ssl-keyfile=/path/to/keyfile /path/to/library
Nous pouvons accéder au serveur en utilisant le même port que nous avons spécifié précédemment, il suffit de changer le protocole en « https:// » dans l'adresse.
Création d'un service systemd pour calibre-server
Toutes les principales distributions Linux ont adopté Systemd comme système d'initialisation. Si nous voulons que le serveur Caliber soit automatiquement démarré au démarrage, nous devons créer une unité service
pour celui-ci. Voici un exemple de configuration possible. Tout d'abord, pour éviter de faire tourner le serveur en tant que root, on peut créer un utilisateur dédié :
$ sudo useradd --system --shell /usr/sbin/nologin calibre-server
Avec la commande ci-dessus, nous avons créé un utilisateur système . Étant donné que l'utilisateur du système n'est pas censé se connecter de manière interactive au système, nous définissons son shell sur /usr/sbin/nologin
. Maintenant, nous voulons créer le répertoire que nous utiliserons pour stocker les journaux du serveur et attribuer sa propriété à l'utilisateur « calibre-server » et au groupe « calibre-server » :
$ sudo mkdir /var/log/calibre-server
sudo chown calibre-server:calibre-server /var/log/calibre-server
Pour une configuration propre, nous déplaçons notre bibliothèque partagée vers un répertoire global, disons que nous voulons la déplacer sous /srv/calibre
:
$ sudo mkdir /srv/calibre
sudo mv /path/to/library /srv/calibre
Nous déplaçons la base de données des utilisateurs, le certificat SSL/TLS et la clé privée correspondante, sous le même répertoire :
$ sudo mv /path/to/database /srv/calibre
sudo mv /path/to/certificate.pem /path/to/privatekey.pem /srv/calibre
Enfin, nous attribuons la propriété de ce répertoire et de tous ses sous-répertoires à l'utilisateur « calibre-server » et au groupe « calibre-server » :
$ sudo chown -R calibre-server:calibre-server /srv/calibre
Nous pouvons maintenant créer le fichier de service systemd sous la forme /etc/systemd/system/calibre-server.service
:
[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
Pour démarrer le service et l'activer automatiquement au démarrage, nous pouvons exécuter :
$ sudo systemctl enable --now calibre-server.service
Configuration du pare-feu
Une fois le serveur opérationnel, pour permettre l'accès externe, nous devons autoriser le trafic via les ports appropriés. La façon de procéder dépend du gestionnaire de pare-feu que nous utilisons. Lorsque nous utilisons UFW, par exemple, pour autoriser le trafic via le port 8080 depuis n'importe où, nous exécutons :
$ sudo ufw allow 8080/tcp
Si nous utilisons plutôt firewalld pour autoriser en permanence le trafic vers la zone par défaut, nous exécuterions :
$ sudo firewall-cmd --add-port 8080/tcp --permanent
sudo firewall-cmd --reload
Conclusions
Dans ce didacticiel, nous avons appris comment configurer une instance de serveur Calibre et partager une bibliothèque Calibre. Nous avons vu comment autoriser les modifications à partir de connexions locales ou d'adresses IP spécifiques, comment activer l'authentification, comment enregistrer les demandes d'accès et enfin, comment créer un service Systemd pour démarrer automatiquement le serveur au démarrage.