Calibre Web & Docker...

J'utilise Calibre pour gérer une bibliothèque libre d'ouvrages numériques. Pour la partager avec mes enfants j'avais jadis monté sur un Synology Calibre Web sous Docker, sans trop savoir de quoi il en retournait, mais bon ça fonctionnait depuis deux ans. J'ai donc décidé d'aller plus loin et de monter ça sur une VM Ubuntu

Installer la VM et Docker n'est pas un soucis et il existe plein de tutos. Installer le container Calibre Web n'est pas non plus un problème, par contre ce que j'ai mis des jours à essayer de faire fonctionner c'est relier ma bibliothèque restée sur le Nas. Naturellement j'ai essayé de monter un volume NFS, voire CIFS, si je parvenais bien à lire et écrire dans ce volume depuis le container Calibre-Web, je n'ai jamais réussit à ce que Calibre Web puisse ainsi fonctionner. Il se passe quelque chose que le développeur de cette image ne sait expliquer, et encore moins moi. Mais en informatique, quand on ne sait pas faire quelque chose, on essaie de trouver un contournement, et je me suis donc dit que si le volume NFS monté dans Docker n'était pas exploitable, ça pourrait peut être fonctionner avec un volume NFS monté directement sous Linux. Et banco !

Explications...

Alors on commence par mettre à jour et installer NFS

> sudo apt update
> sudo apt install nfs-common

Puis on crée les deux répertoires locaux que l'on va utiliser pour nos montages :

> sudo apt update
> sudo apt install nfs-common

Et on mappe nos ressources distantes :

> sudo mount 192.168.20.22:/volume2/Public/Books/calibre /nfs/books
> sudo mount 192.168.20.22:/volume2/Public/Books/calibre-web /nfs/books-config

On crée nos répertoires de travail qui seront utilisés par Calibre Web, ça va nous permettre de vérifier que ça fonctionne :

> sudo mkdir -p /nfs/books.config/config
> sudo mkdir -p /nfs/books.config/app
> sudo mkdir -p /nfs/books.config/kindlegen

Et ensuite on édite le fichier /etc/fstab afin de rendre la chose persistante :

. . .
192.168.20.22:/volume2/Public/Books/calibre /nfs/books   nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0
192.168.20.22:/volume2/Public/Books/calibre-web /nfs/books-config    nfs auto,nofail,noatime,nolock,intr,tcp,actimeo=1800 0 0

Bon, je n'ai bien sur rien inventé et les détails sont par exemple ici.

Maintenant je vais pouvoir créer mon Docker calibre-web après avoir adapté la config à ma sauce, c-a-d que tous mes répertoires de travail seront sur mon Nas :

> docker create --name=calibre-web --restart=always \
-v /nfs/books:/books \
-v /nfs/books-config/config:/calibre-web/config \
-v /nfs/books-config/app:/calibre-web/app \
-v /nfs/books-config/kindlegen:/calibre-web/kindlegen \
-e USE_CONFIG_DIR=true \
-e SET_CONTAINER_TIMEZONE=true \
-e CONTAINER_TIMEZONE=Europe/Paris \
-e PGID=65539 -e PUID=1029 \
-p 8083:8083 \
technosoft2000/calibre-web

J'aurais pu faire ça avec Portainer par exemple, mais c'est finalement bien plus simple de le faire en CLI, surtout avec la masse d'essai que j'ai du faire... D'autant plus que ça ne fonctionne pas, Calibre Web ne fonctionne pas avec le répertoire de config distant. Je me suis donc résolu à le laisser en local, mais pas dans le container mais un répertoire local au cas ou je casserait le container...

> docker create --name=calibre-web --restart=always \
-v /nfs/books:/books \
-v /var/lib/docker/data/calibre-web:/calibre-web/config \
-e USE_CONFIG_DIR=true \
-e SET_CONTAINER_TIMEZONE=true \
-e CONTAINER_TIMEZONE=Europe/Paris \
-e PGID=65539 -e PUID=1029 \
-p 8083:8083 \
technosoft2000/calibre-web

Voilà ! Et comme je ne pense pas pouvoir récupérer mon ancienne configuration, il ne me reste plus qu'à reconfigurer et à créer mes utilisateurs.

Sources