ArnaudLM Posté(e) le 24 mars 2022 Partager Posté(e) le 24 mars 2022 (modifié) 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 : Création de l'utilisateur Mise en place du script de démarrage Création de la tâche planifiée C'est parti 🙂 Création de l'utilisateur "livre", dédié et restreint En se connectant avec un compte administrateur au DSM, depuis panneau de configuration > Utilisateurs et groupes > Utilisateur > Créer 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 A positionner dans les groupes users et http, puis suivant Limiter les permissions, puis suivant Accès en lecture/écritures à homes (pour accéder à son propre home) Aucun accès pour tous les autres dossiers Pas de limite de quota pour mon usage, donc suivant Aucune permission sur les applications, donc refuser tout et suivant Pas de limitation de vitesse, donc suivant Vérifiez le compte qui va être créé et cliquez sur effectuer Le compte apparait désormais dans la liste de vos utilisateurs Préparer la bibliothèque Ajouter votre bibliothèque Calibre (livres et base de données) dans un répertoire accessible à l'utilisateur livre (par exemple son HOME) 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 Création de la tâche planifiée pour automatiser le démarrage 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 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 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à... 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é le 29 mars 2022 par ArnaudLM Ajout de deactivate et proposition d'un script de désinstallation sur recommandation de .Shad. 1 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
.Shad. Posté(e) le 29 mars 2022 Partager Posté(e) le 29 mars 2022 (modifié) 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é le 29 mars 2022 par .Shad. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
ArnaudLM Posté(e) le 29 mars 2022 Auteur Partager Posté(e) le 29 mars 2022 (modifié) 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é le 29 mars 2022 par ArnaudLM 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
ptit-lu Posté(e) le 27 mai 2022 Partager Posté(e) le 27 mai 2022 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 ? 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
ptit-lu Posté(e) le 27 mai 2022 Partager Posté(e) le 27 mai 2022 (modifié) 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é le 27 mai 2022 par ptit-lu 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
crashspurious Posté(e) le 19 décembre 2022 Partager Posté(e) le 19 décembre 2022 Thanks but when I recently included an uninstall guide, although without a script, as "uninstalling" a virtual machine is as simple as removing its related files. phrazle 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
crinoffe26 Posté(e) le 20 décembre 2022 Partager Posté(e) le 20 décembre 2022 Bonsoir j'ai une question bête, j'ai téléchargé le dossier calibre-web sur github, je l'ai décompressé mais où mettre les fichiers ? dans le dossier www de l'utilisateur livre ? Peut on demander à la bibliothèque d'accèder à un dossier partagé où se situent les ebooks ? Bien cordialement. Christophe 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
ArnaudLM Posté(e) le 3 janvier 2023 Auteur Partager Posté(e) le 3 janvier 2023 (modifié) Le 20/12/2022 à 20:10, crinoffe26 a dit : Bonsoir j'ai une question bête, j'ai téléchargé le dossier calibre-web sur github, je l'ai décompressé mais où mettre les fichiers ? dans le dossier www de l'utilisateur livre ? Peut on demander à la bibliothèque d'accèder à un dossier partagé où se situent les ebooks ? Bien cordialement. Christophe Bonsoir Christophe, Je ne sais pas répondre à cette question : en suivant la manipulation que j'ai réalisée il n'y a pas besoin de télécharger calibre-web sur github, c'est directement python (pip) qui télécharge le paquet correspondant. Le 27/05/2022 à 15:07, ptit-lu a dit : 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] Bonsoir ptit-lu Avec du retard... Effectivement, je n'avais pas relancé ce script depuis l'an passé... De ma compréhension, certaines dépendances de calibre-web n'existent pas dans wheel et doivent donc être compilées localement. Sauf qu'il nous manque python-dev afin de le faire (indisponible sur le NAS). Je rencontre désormais le même problème, avec netifaces (plus maintenu depuis 2021) et backport.zoneinfo (backport non maintenu, pour rétrocompatibilité). Les paquets en question ne sont pas appelés par calibre-web directement mais par ses dépendances, il n'y a donc pas de support à attendre de ce côté-là je pense... Je n'ai pas trouvé de solution de contournement pour l'instant 😞 : Installer OPKG/entware : me semble lourd pour "juste" obtenir le paquet python-dev. J'ai testé mais je n'ai pas réussi à l'installer Cross-compiler la dépendance manquante : encore plus lourd à mettre en place, demande de recommencer pour chaque version ou paquet pip qui poserait problème Forcer des versions des dépendances qui nous arrangent : me semble une impasse, sauf peut-être à reprendre les versions qui fonctionnaient il y a quelques mois et accepter de ne plus les mettre à jour (ce qui me pose problème, surtout pour une application exposée via le réseau) Je n'ai finalement pas développé d'usage pour Calibre-web, je pense donc ne pas rechercher plus loin et abandonner le sujet pour le moment... Modifié le 3 janvier 2023 par ArnaudLM 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
AlphAndruino Posté(e) le 25 mai 2023 Partager Posté(e) le 25 mai 2023 Bonjour J'essaye d'appliquer ce tuto, mais j'obtiens ces erreurs : Tâche : Calibre-web Heure de début : Wed, 24 May 2023 22:27:48 GMT Heure d'arrêt : Wed, 24 May 2023 22:27:50 GMT État actuel : 1 (Interrompu) Sortie/erreur standard : /volume1/homes/livre/calibre-web.sh: line 2: $'\r': command not found /volume1/homes/livre/calibre-web.sh: line 8: $'\r': command not found /volume1/homes/livre/calibre-web.sh: line 18: $'\r': command not found /volume1/homes/livre/calibre-web.sh: line 20: cd: $'/volume1/homes/livre/\r': No such file or directory /volume1/homes/livre/calibre-web.sh: line 22: calibre-web.log: Permission denied Error: [Errno 13] Permission denied: '/usr/syno/synoman/webapi/calibreweb-venv\r' /volume1/homes/livre/calibre-web.sh: line 27: calibreweb-venv/bin/activate: No such file or directory je suis en dsm 7.1, le user livre est créé. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
MilesTEG1 Posté(e) le 25 mai 2023 Partager Posté(e) le 25 mai 2023 @AlphAndruinoces erreurs sont dues aux caractères de retour à ligne qui diffèrent entre Windows (CRLF) et Linux (LF). N’utilise pas notepad mais plutôt un éditeur qui permet de changer les retours à la ligne comme vscode ou notepad++. ou bien tu édites tes fichiers depuis le nas directement. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Pozzo Posté(e) le 17 juin 2023 Partager Posté(e) le 17 juin 2023 Citation Running setup.py install for netifaces ... error error: subprocess-exited-with-error × Running setup.py install for netifaces did not run successfully. Depuis la version 0.6.18 c'est le module advocate qui nécessite netifaces. Effectivement sur un Synology, si on essaie d'installer advocate via la commande : pip3 install advocate ca plante au moment de la compilation de netifaces (dont dépend advocate) MAIS : netifaces est disponible précompilé pour python2 ! On peut donc faire : pip2 install netifaces ce qui va installer netifaces.so et un dossier netifaces-0.11.0.dist-info dans le dossier /usr/lib/python2.7/site-packages/ Il suffit alors de recopier tout ça dans votre environnement python3 : selon votre cas, soit globalement : cp -r /usr/lib/python2.7/site-packages/netifaces* /var/packages/python311/target/lib/python3.11/site-packages soit dans l'environnement spécifique de votre projet : cp -r /usr/lib/python2.7/site-packages/netifaces* venv/lib/python3.11/site-packages/ et on peut alors ensuite installer sans problème advocate pip3 install advocate et installer ensuite tous les pré-requis de calibre-web pip3 install -r /path/to/requirements.txt 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Pozzo Posté(e) le 17 juin 2023 Partager Posté(e) le 17 juin 2023 Création de la tâche planifiée pour automatiser le démarrage Au lieu de créer une tache planifiée pour ça, il est préférable de créer un script d'initialisation calibre-web.conf qu'il suffit de copier dans le dossier /etc/init Ce fichier contiendra uniquement les lignes suivantes : description "Calibre-Web" author "janeczku" start on started pkgctl-python311 stop on runlevel [06] exec /volume1/@appstore/python311/bin/python3 /path/to/calibre-web/cps.py Ce qui permettra à Synology de démarrer automatiquement calibre-web juste apres le démarrage du package python311 Et on pourra arreter/démarrer/voir le status de calibre-web via les commandes suivantes : sudo synoservicectl --stop calibre-web sudo synoservicectl --start calibre-web sudo synoservicectl --status calibre-web Le script init doit bien sûr être adapté si vous avez créé un virtualenv python pour calibre-web (il faudra activer l'environnement avant de démarrer cps.py) 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
tor azur Posté(e) le 16 décembre 2023 Partager Posté(e) le 16 décembre 2023 (modifié) Bonjour Tout se passe bien sauf qu'il me demande l'install de rust , or ce package ne semble fonctionner que sur Docker .... Avez vous une idee ? copying src/cryptography/hazmat/bindings/_rust/openssl/x448.pyi -> build/lib.linux-i686-cpython-38/cryptography/hazmat/bindings/_rust/openssl running build_ext running build_rust =============================DEBUG ASSISTANCE============================= If you are seeing a compilation error please try the following steps to successfully install cryptography: 1) Upgrade to the latest pip and try again. This will fix errors for most users. See: https://pip.pypa.io/en/stable/installing/#upgrading-pip 2) Read https://cryptography.io/en/latest/installation/ for specific instructions for your platform. 3) Check our frequently asked questions for more information: https://cryptography.io/en/latest/faq/ 4) Ensure you have a recent Rust toolchain installed: https://cryptography.io/en/latest/installation/#rust Python: 3.8.12 platform: Linux-3.2.101-i686-with-glibc2.1.3 pip: n/a setuptools: 69.0.2 setuptools_rust: 1.8.1 rustc: n/a =============================DEBUG ASSISTANCE============================= error: can't find Rust compiler If you are using an outdated pip version, it is possible a prebuilt wheel is available for this package but pip is not able to install from it. Installing from the wheel would avoid the need for a Rust compiler. To update pip, run: pip install --upgrade pip and then retry package installation. If you did intend to build this package from source, try installing a Rust compiler from your system package manager and ensure it is on the PATH during installation. Alternatively, rustup (available at https://rustup.rs) is the recommended way to download and update the Rust compiler toolchain. This package requires Rust >=1.56.0. [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. ERROR: Failed building wheel for cryptography Successfully built Flask-Principal iso-639 SQLAlchemy et aussi (calibreweb-venv) bash-4.4$ nohup cps > calibre-web.log 2>&1 & [1] 10937 (calibreweb-venv) bash-4.4$ [1]+ Exit 127 nohup cps > calibre-web.log 2>&1 (calibreweb-venv) bash-4.4$ (calibreweb-venv) bash-4.4$ (calibreweb-venv) bash-4.4$ cat calibre-web.log nohup: ignoring input nohup: failed to run command 'cps': No such file or directory Modifié le 16 décembre 2023 par tor azur 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Arnaud3013 Posté(e) le 7 janvier Partager Posté(e) le 7 janvier (modifié) J'ai bien regardé vos échanges mais ça plantais sur backports, j'ai décidé d'utiliser une version compilé en local pour eviter les complications. J'avais mis au préalable sur mon nas ds-218-play python 3.8. De mon côté j'ai utilisé un ubuntu sous wsl (windows), dedans un miniconda. J'ai créé un env python 3.8 conda create -n py38 python==3.8 l'ai activé et installé le paquet qui bloquait conda activate py38 pip install backports.zoneinfo==0.2.1 et j'ai été cherché dans mon emplacement miniconda miniconda3\envs\py38\lib\python3.8\site-packages backports et backports.zoneinfo-0.2.1.dist-info que j'ai mis dans le calibreweb-venv\lib\python3.8\site-packages du venv de calibre-web sur le nas. J'ai relancé le script en commentant la suppresion du venv et sa création, comme ça il a continué l'install, et aucun soucis comme ça. J'avais fait idem avec netfifaces mais ça plantait sur backports.zoneinfo de mon côté Modifié le 7 janvier par Arnaud3013 1 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
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.