Installation de COPS sur Synology DSM 7.X

Publié par Tpeltier le

COPS, développé par Sébastien Lucas est disponible sur GitHub. C’est un serveur extrêmement léger qui permet de rendre une bibliothèque Calibre accessible sous la forme d’une page web. Aucune base de données n’est nécessaire et ça demande peu de ressources.

Possédant un NAS et un nom de domaine, le plus simple était d’héberger COPS dessus. Pour les modèles Synology, il existe un paquet chez SynoCommunity. Seulement voilà : jusque là mon vieux DS1010 avec DSM 5 ne posait aucun problème. Mais au bout de 13 ans il commence à donner des signes de fatigue.

J’ai donc décidé de migrer sur mon nouveau Synology en DSM 7. Mais sur DSM 7.x je n’ai pas réussi à l’installer avec les paquets SynoCommunity. J’ai donc procédé à une installation manuelle.

Attention : COPS nécessite de pouvoir lire le dossier contenant la bibliothèque Calibre. J’ai opté pour une solution hybride :

  • Ma bibliothèque est gérée et stockée sur mon ordinateur grâce au logiciel Calibre.
  • Le dossier est synchronisé sur le NAS via une synchro réalisée avec le logiciel Cobian Backup (synchronisation unidirectionnelle ordinateur > NAS).

Dès que je modifie la bibliothèque Calibre sur le PC, je synchronise en lançant une tâche Cobian Backup.

Prérequis

Voici les points importants pour la suite :

  • Mon NAS est un DS213j
  • Il fonctionne actuellement sur le DSM 7.1.1
  • Le paquet WebStation est en version 3.1
  • Le serveur Apache fonctionne en 2.4
  • Le serveur PHP est en 7.4 avec les extensions nécessaires à COPS : gd, intl, pdo_sqlite, sqlite3
  • Je dispose d’un nom de domaine qui me permet d’accéder au contenu de l’extérieur, avec un DDNS pour gérer l’IP dynamique

Installation de COPS

J’utilise le dossier partagé Web du NAS : un dossier pour contenir COPS, un autre pour contenir la bibliothèque d’ebook :

  • /volume1/web/cops
  • /volume1/web/cops/calibre

Vous pouvez bien sûr les nommer comme bon vous semble. Selon votre configuration dans Web Station, le nom du dossier contenant COPS fera partie de l’URL pour y accéder. Par exemple : https://mondomainenas.fr/cops

À partir de ce point, je pars du principe que la bibliothèque Calibre, présente sur le PC, est synchronisée dans le dossier calibre du NAS.

Ensuite :

  1. Sur le NAS, dans le volume partagé Web, créer le /volume1/web/cops.
  2. Télécharger la dernière version de COPS sur ce lien ;
  3. Décompresser le contenu de l’archive dans le /volume1/web/cops sur le NAS.

Paramétrer COPS

Dans le dossier où est installé COPS, ouvrir le fichier config_default.php avec un éditeur de texte (Textedit marche bien, mais pour avoir un rendu plus adapté, SublimeText fait du bon travail).

  • Ligne 33 : $config['cops_full_url'] = 'https://mondomainenas.fr/cops/';
    Placer l’URL d’accès entre les apostrophes.
  • Ligne 38 : $config['cops_recentbooks_limit'] = '25';
    Choisir le nombre de livres présenté dans la section « récemment ajoutés ». 25 par défaut, à vous de voir.
  • Ligne 58 : $config['cops_title_default'] = 'titre';
    Choisir le nom de la librairie.
  • Ligne 117 : $config['cops_use_url_rewriting'] = '1';
    Activer la ré-écriture d’URL, utile pour la compatibilité avec des applications compatibles OPDS.
  • Ligne 328 : $config['cops_language'] = 'fr';
    Choisir le langage par défaut de COPS, ici en français.

Ensuite, sauvegardez le fichier et sortez.

Trouver le fichier config_local.php.example et en faire une copie dans le dossier. Puis renommer la copie en config_local.php avant de l’ouvrir avec un éditeur de texte.

  • Ligne 17 : $config['calibre_directory'] = '/volume1/web/cops/calibre';
    On va renseigner ici le chemin vers les ebooks sur le NAS.
  • Ligne 22 : $config['cops_title_default'] = "titre";
    On reprend l’info du fichier précédent à la ligne 63.
  • Ligne 30 : $config['cops_use_url_rewriting'] ="1";
    On active à nouveau la ré-écriture URL.

Sauvegarder et quitter le fichier. Si tout va bien, ça fonctionne. En utilisant l’URL https://mondomainenas.fr/cops l’interface s’ouvre.

L’inconvénient de cette solution, c’est que tout est accessible par n’importe qui, il n’y a aucune protection. Or, je ne souhaite pas que mes ebooks soient disponibles aux quatre vents.

Protéger l’accès

COPS peut se reposer sur un contrôle d’accès basique au niveau du serveur apache. Ouvrez un éditeur de texte puis ouvrez le fichier .htaccess situé à la racine du dossier /volume1/web/cops. En bas, trouvez cette section :

###########################################
<FilesMatch "\.php$">
AuthUserFile /volume1/web/access/.htpasswd
AuthGroupFile /dev/null
AuthName "Login"
AuthType Basic
require valid-user
</FilesMatch>

À la troisième ligne, il faut indiquer le chemin vers un 3e dossier qui contiendra la liste des accès autorisés. Dans l’exemple, c’est le dossier access placé lui-même à la racine de /web. Une fois que c’est fait, sauvegardez.

Évidemment, il faut ensuite créer un nouveau dossier à la racine du volume partagé Web et lui donner le même nom access. Puis :

  1. Rendez-vous sur un site qui génère des identifiants htpasswd, comme celui-ci par exemple.
  2. Choisissez et renseignez un login.
  3. Choisissez et renseignez un mot de passe.
  4. Cliquez sur le bouton Crypter
  5. Une ligne verte avec du texte va apparaitre sous la forme zecops:$1$Y.D1Rn4r$RhbNU6fX0UWI4lG/GRn6.1.
  6. Copiez la ligne entière et collez-la dans un fichier texte.
  7. Vous pouvez recommencer et en ajouter autant que vous voulez : une ligne par accès dans le fichier.
  8. Une fois terminé, sauvegardez le fichier dans le access sous le nom .htpasswd.
  9. Ouvrez un nouveau fichier texte vierge et collez la ligne suivante : deny from all.
  10. Sauvegardez-le dans le dossier access sous le nom .htaccess. Ce fichier empêchera l’accès au dossier depuis le web, on ne sait jamais.

Maintenant, vous rencontrez deux comportements différents selon comment vous accéder à COPS.

  • Via l’URL principale https://mondomainenas.fr/cops/ : votre navigateur internet (ou application OPDS) affichera un formulaire d’accès login/mot de passe.
  • Via l’URL secondaire https://mondomainenas.fr/cops/login : vous obtiendrez un formulaire sous la forme d’une page web. L’intérêt de cette URL, c’est qu’elle est nativement compatible avec un gestionnaire de mot de passe.

Tips

Pas de mot de passe depuis le réseau local

Il est possible de désactiver le contrôle d’accès sur le réseau local exclusivement, tout en demandant toujours un couple login/mot de passe depuis l’extérieur.

Pour cela, éditez le fichier .htaccess situé dans le dossier cops (celui qui contient COPS/volume1/web/cops ) et retournez dans la section finale.

Ensuite, commencez par retirer la ligne require valid-user\. Remplacez par ce qui suit :

<RequireAny>
Require valid-user
Require ip 192.168.0
</RequireAny>\

Pour l’adresse IP, il faudra l’adapter à votre réseau local, en ne laissant que les 3 premières parties. Par exemple, si votre adresse IP locale est 192.168.1.22, il faut laisser juste 192.168.1 dans la ligne.

Plusieurs librairies

Il est possible d’avoir plusieurs librairies séparées. Par exemple, si vous gérez des bibliothèques différentes avec Calibre. Dans ce cas, vous devez synchroniser chaque bibliothèque dans un dossier séparé à la racine de /web sur le NAS.

Ensuite, dans le dossier cops ( /volume1/web/cops ), éditez le fichier config_local.php. À la ligne 17, effacer le contenu $config['calibre_directory'] = '/volume1/web/cops/calibre/';.

Ensuite, coller ceci : $config['calibre_directory'] = array (
"First database name" => "/volume1/web/cops/Calibre_library1/",
"Second database name" => "volume1/web/cops/Calibre_library2/");\

Vous pouvez nommer chaque librairie en remplacement First/Second database name. Ensuite, personnalisez le chemin vers chaque librairie selon le nom que vous avez donné aux dossiers.


4 commentaires

Pierre martinNo Gravatar · 2 janvier 2024 à 7 h 29 min

Super, merci, mais le tri et la recherche par série a disparu. Comment faire pour le retrouver ?

Pierre martinNo Gravatar · 2 janvier 2024 à 7 h 55 min

Autant pour moi, confusion entre « collection » et « Série ».
En fait, une collection représente un ensemble de publications qui suivent la même ligne éditoriale mais ne sont pas forcément liées entre elles.
Lorsqu’un même ouvrage est divisé en plusieurs volumes qui suivent un ordre précis, il s’agit d’une série.

Bruno TeuileNo Gravatar · 8 février 2024 à 8 h 03 min

Bonjour

Tuto suivi, mais j’ai une erreur 500 quand je tente d’ouvrir cops. 9a marchait bien avant que j’upgrade en dsm 7.2

TpeltierNo Gravatar · 8 février 2024 à 8 h 52 min

Mon DS213j ne me permet pas la mise à jour en 7.2, je suis « bloqué » sur DSM 7.1.1-42962 Update 5.
A priori je ne vois pas ce qui pourrait empêcher Cops de fonctionner en 7.2 mais je ne peux malheureusement pas tester 🙁

Laisser un commentaire

Emplacement de l’avatar

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.