This site uses cookies! Learn More

Ce site utilise des cookies !

En continuant à utiliser ce site, vous vous engagez à nous permettre de stocker des cookies sur votre ordinateur.

 

Si nous utilisons des cookies et retenons des données anonymes, c’est pour nous aider à mieux gérer notre mesure d’audience, aider nos partenaires commerciaux à nous rémunérer et nos partenaires publicitaires à proposer des annonces qui vous correspondent.

 

Grâce à ces cookies, le forum est en mesure de savoir qui écrit un message et utile pour le système d'authentification.

 

En cliquant sur « J'accepte », vous acceptez l'utilisation par NAS-Forum de cookies publicitaires et de mesure d'audience fine.

[TUTO] Installer Calibre-web sans Docker


ArnaudLM

Messages recommandés

Bonjour,

Je cherchais à installer Calibre-web sur mon NAS qui n'est pas compatible avec Docker, voici ce que j'ai fait en espérant que ça serve à d'autres (et pourquoi pas pour avoir des idées d'amélioration de la démarche :)).

Mes besoins et un peu de contexte

  • Mon NAS ne supporte pas Docker => Je vais donc installer Calibre-web directement sur l'OS. Il existe déjà un tutoriel pour Calibre-web avec Docker :
  • Je souhaite utiliser Calibre-web, qui propose une interface web complète pour votre bibliothèque Calibre et une bibliothèque OPDS consultable depuis mes appareils. Vous devez avoir une bibliothèque Calibre pour l'utiliser. Voir ici : https://github.com/janeczku/calibre-web
  • Je souhaite limiter au maximum l'empreinte de Calibre-web sur mon NAS (du point de vue sécurité notamment) => Je vais donc le déployer avec un utilisateur restreint et dédié, dans un environnement virtuel Python
  • Je veux que Calibre-web se lance automatiquement à chaque démarrage (idéalement en utilisant les outils Synology pour en simplifier la gestion dans le temps)
  • Je ne suis pas expert en Linux, en shell ou en NAS, il y a sûrement mieux à faire mais ça marche 🙂 En revanche dites-moi si vous voyez des améliorations ^^

Installation

Pour installer Calibre-web, je vais suivre 3 étapes :

  1. Création de l'utilisateur
  2. Mise en place du script de démarrage
  3. Création de la tâche planifiée

C'est parti 🙂

  1. Création de l'utilisateur "livre", dédié et restreint
    1. En se connectant avec un compte administrateur au DSM, depuis panneau de configuration > Utilisateurs et groupes > Utilisateur > Créer
    2. Remplir les champs nécessaires pour la création du compte, puis cliquez sur suivant
      • Nom : livre
      • Description (facultatif) : Pour bibliothèque Calibre-web
      • Mot de passe : utilisez un mot de passe robuste et unique de votre choix
        image.thumb.png.570f9622b12fca72e6292bca02a5b7b2.png
    3. A positionner dans les groupes users et http, puis suivant
    4. Limiter les permissions, puis suivant
      1. Accès en lecture/écritures à homes (pour accéder à son propre home)
      2. Aucun accès pour tous les autres dossiers
    5. Pas de limite de quota pour mon usage, donc suivant
    6. Aucune permission sur les applications, donc refuser tout et suivant
    7. Pas de limitation de vitesse, donc suivant
    8. Vérifiez le compte qui va être créé et cliquez sur effectuer
      image.png.74ebe57b51e3b3cefb44123555993107.png
    9. Le compte apparait désormais dans la liste de vos utilisateurs
  2. Préparer la bibliothèque
    1. Ajouter votre bibliothèque Calibre (livres et base de données) dans un répertoire accessible à l'utilisateur livre (par exemple son HOME)
    2. Ajouter le script suivant dans le répertoire HOME de l'utilisateur livre, sous le nom "calibre-web.sh"
      #!/bin/bash -x
      
      # Script pour calibre-web
      # Reconstruit l'environnement virtuel, installe calibre-web et lance l'application
      # Script for calibre-web : rebuilb venv, install calibre-web et starts the app
      #
      # Par ALM, v1.1
      
      # Prérequis & informations / Prerequisites & information
      # - L'utilisateur "livre" existe (shell = nologin) / User "livre" exists with nologin shell
      # - Python est installé / Python is installed
      # - Script à lancer par le planificateur de tâche sous l'utilisateur root / Script to lauch with Synology task manager under root :
      #		sudo -u livre /bin/sh -c '/bin/sh /volume1/homes/livre/calibre-web.sh'
      # - Ce script est fourni tel quel, il assure la mise à jour automatique des composants pip et calibre-web, sans vérification / This script is provided as is, it updates pip and calibre-web components without verification
      # - Ce script considère que le service n'est pas déjà démarré et ne le vérifie donc pas, puisque son usage est d'automatiser le lancement au démarrage / This script doesn't check if service is already running, as is it used for automated startup
      # - Ce script est à positionner dans le répertoire HOME de l'utilisateur livre sous le nom calibre-web.sh / This script is to store in user livre 's HOME directory, under the name calibre-web.sh
      # - L'installation de calibre-web est réalisée avec l'option kobo qui correspond à mon équipement / Calibre-web is installed with kobo option, fitting my device
      
      # Se positionne dans le répertoire de l'utilisateur / Go to HOME
      cd /volume1/homes/livre/
      # Créée une entrée de journal / Write a new log entry
      echo $(date) - Nouvelle execution/New start >> calibre-web.log
      # Supprime l'installation existante / Remove existing install
      rm -rf calibreweb-venv
      # Créé un environnement virtuel Python / Create Python venv
      python -m venv calibreweb-venv
      source calibreweb-venv/bin/activate
      # Installe pip et Calibre-web / Install pip and Calibre-Web
      python -m ensurepip
      python -m pip install --upgrade pip
      python -m pip install calibreweb[kobo]
      # Démarre Calibre-web / Launch Calibre-web
      nohup cps > calibre-web.log 2>&1 &
      # Sort de l'environnement virtuel
      deactivate

      image.png.c83c2c7da533be4a433f1041c8797590.png
  3. Création de la tâche planifiée pour automatiser le démarrage
    1. En se connectant avec un compte administrateur au DSM, depuis panneau de configuration > Planificateur de tâches > Créer > Tâche déclenchée > Script défini par l'utilisateur
      • Sur l'onglet général :
        • Tâche : Calibre-web
        • Utilisateur : root
        • Evénement : démarrage
          image.png.53857cdc2af1fc9482be0dc38e0f1e42.png
      • Sur l'onglet paramètres de tâche > Exécuter la commande > Script définit par l'utilisateur, qui permet d'exécuter le script ci-dessus au nom de l'utilisateur livre (qui ne peut pas se connecter)
        sudo -u livre /bin/sh -c '/bin/sh /volume1/homes/livre/calibre-web.sh'

Utilisation

Il est possible de tester et de forcer le démarrage sans attendre un redémarrage du NAS en sélectionnant la tâche > Exécuter. Le serveur Calibre-web peut prendre plusieurs minutes à démarrer.

Il faut maintenant configurer Calibre-web normalement, comme indiqué par son auteur : https://github.com/janeczku/calibre-web

  • Accès par http://ip-de-votre-NAS:8083
  • Accès par défaut :
    • Username: admin
    • Password: admin123
    • A changer à la première utilisation !

La configuration est conservée dans le répertoire /volume1/homes/livre/.calibre-web

Désinstallation

Pour supprimer calibre-web :

  • Supprimer l'installation en supprimant les fichiers
    1. Choix 1 : suppression de l'utilisateur livre
      • Depuis la liste des utilisateurs (en se connectant avec un compte administrateur au DSM, depuis panneau de configuration > Utilisateurs et groupes > Utilisateur), supprimer l'utilisateur livre
      • Tout son répertoire home va être supprimé. Ainsi l'environnement virtuel et le script ci-dessus vont être supprimés. Attention, toutes les données de l'utilisateur vont aussi être supprimées, donc la bibliothèque Calibre également si elle est stockée là...
    2. Choix 2 : suppression uniquement du service
      Pour supprimer uniquement le service, il suffit de supprimer l'environnement virtuel créé, et les fichiers associés. Depuis le gestionnaire de fichiers de DSM (File Station) avec un compte administrateur, se positionner dans homes/livre (correspond à /volume1/homes/livre en ligne de commande) :
      • Supprimer les répertoires .cache, .calibre-web, et calibreweb-venv
      • Supprimer les fichiers calibre-web.log et calibre-web.sh
      • Si vous préférez la ligne de commande, en vous connectant avec un utilisateur qui peut utiliser sudo :
        cd /volume1/homes/livre
        sudo rm -rf .cache .calibre-web calibreweb-venv calibre-web.log calibre-web.sh
  • Supprimez la tâche planifiée
    • en se connectant avec un compte administrateur au DSM, depuis panneau de configuration > Planificateur de tâches
    • Sélectionnez la tâche (surlignée en bleu clair), puis Actions > Supprimer

 

Et c'est tout ! J'espère que ça vous sera utile 🙂

Bons geekages,

Arnaud

Modifié par ArnaudLM
Ajout de deactivate et proposition d'un script de désinstallation sur recommandation de .Shad.
Lien vers le commentaire
Partager sur d’autres sites

Super initiative et tutoriel, il est vrai que l'environnement virtuel de Python est une excellente alternative à Docker pour les NAS non compatibles.
On pourrait facilement dupliquer ce tutoriel pour tout un tas d'applications utiles disponibles via pip.

En revanche, vu que tu parles d'amélioration, tu pourrais proposer un script pour désinstaller le tout sans laisser de traces. 😉 

Modifié par .Shad.
Lien vers le commentaire
Partager sur d’autres sites

Merci ! 🙂

Je viens d'ajouter une section désinstallation, mais sans script : il suffit de supprimer les fichiers associés à l'environnement virtuel pour qu'il soit proprement "désinstallé".

Modifié par ArnaudLM
Lien vers le commentaire
Partager sur d’autres sites

  • 1 mois après...

J'ai un soucis avec ce script que je n'arrive pas à faire fonctionner.

Dans le fichier de log, j'ai une unique ligne "nohup: failed to run command 'cps': No such file or directory".

L'un de vous a-t-il une idée de comment résoudre ce problème ?

Lien vers le commentaire
Partager sur d’autres sites

Pour donner plus de contexte, j'essaie de faire l'installation sur un Synology DS120j (armv8) et lorsque je lance le script dans un terminal j'ai cette erreur :

 

  Running setup.py install for netifaces ... error
  error: subprocess-exited-with-error

  × Running setup.py install for netifaces did not run successfully.
  │ exit code: 1
  ╰─> [16 lines of output]
      running install
      running build
      running build_ext
      checking for getifaddrs...not found.
      checking for getnameinfo...not found.
      checking for socket IOCTLs...not found.
      checking for optional header files...none found.
      checking whether struct sockaddr has a length field...no.
      checking which sockaddr_xxx structs are defined...none!
      checking for routing socket support...no.
      checking for sysctl(CTL_NET...) support...no.
      checking for netlink support...no.
      building 'netifaces' extension
      /usr/local/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-wrap-gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -DOPENSSL_NO_SSL3 -DOPENSSL_NO_SSL2 -DSYNOPLAT_F_ARMV8 -O2 -include /usr/syno/include/platformconfig.h -DSYNO_ENVIRONMENT -DBUILD_ARCH=64 -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -DSYNO_RUNNING_DSM_BUILD_SYSTEM -g -pipe -fstack-protector-strong -Wformat -Wformat-security -Werror=format-security -D_FORTIFY_SOURCE=2 -O2 -Wno-unused-result -fPIC -DNETIFACES_VERSION=0.11.0 -I/volume1/homes/livre/calibreweb-venv/include -I/usr/include/python3.8 -c netifaces.c -o build/temp.linux-aarch64-3.8/netifaces.o
      unable to execute '/usr/local/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-wrap-gcc': No such file or directory
      error: command '/usr/local/aarch64-unknown-linux-gnu/bin/aarch64-unknown-linux-gnu-wrap-gcc' failed with exit status 1
      [end of output]

 

Modifié par ptit-lu
Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.