My Readings – Installation

Une explication de l’installation/configuration de l’application et la syntaxe des url pour utiliser My Readings.

Le matériel, les prérequis

- L’application doit être installée sur un serveur PHP de version 5.3 minimum (supportant la commande json_encode), compatible sqlite 3 avec PDO (des requêtes sql avec la commande GROUP_CONCAT sont utilisées ce qui nécessite une version récente). Je ne saurais pas dresser une liste des serveurs compatibles, les NAS Synology le sont…

- L’application doit être installée dans le répertoire du serveur accueillant vos sites Web: Extraire le contenu du fichier zip dans un sous répertoire de votre racine web.

- La ou les bibliothèques Calibre (la base de données metadata.db, les ebooks et leur pochettes) doivent être installés sur le même serveur que My Readings, elles peuvent être en dehors du répertoire hébergeant vos sites à condition que votre serveur php ait accès à ce répertoire (mettre à jour votre liste open_basedir si nécessaire).

- Votre serveur php doit avoir l’extention zip active si vous voulez utiliser le lecteur en ligne de cbz.

- Le serveur php doit avoir accès en écriture aux sous-répertoires thumb et cache de My Readings. Le répertoire thumb sera utilisé par l’option “with resize and cache” pour stocker des miniatures des couvertures de vos livres. Le répertoire cache stocke les pages de vos cbz en cours de lecture (à chaque lancement de My Readings les pages lues vieilles de plus de 10 jours sont supprimées du cache).

Nous allons voir un exemple avec un Nas Synology avec les hypothèses suivantes:

  • My Readings est installé dans un sous répertoire MyReadings dans le répertoire “web” qui est le répertoire hébergeant les sites web du NAS. En chemin absolu, il est donc dans //volume1/web/MyReadings/
  • Il y a trois bibliothèques Calibre. La première est dans le répertoire web (//volume1/web/mesbiblios/calibre1/), la seconde dans le répertoire partagé calibre (//volume1/calibre/) et la troisième qui contient une bibliothèque que je veux laisser en accès restreint (“en contrôle parental”) qui se trouve dans le répertoire //volume1/adulte/.

 

La configuration

Après l’installation de MY Readings, vous devez lancer la page admin.php.

Les paramètres seront stockés dans config.php (au format UTF8). Vous pouvez également le modifier manuellement. Un exemple avec commentaire est disponible dans le fichier configtemplate.php.

1. Il vous est demandé de créer un compte d’administration (qui peut être différent du compte utilisateur de My Readings)

admin1

Une fois connecté vous arrivez à la page de configuration de My Readings.

admin2

2. Vous pouvez indiquer la langue qui sera utilisée dans l’interface.

Remarque: Pour l’instant, il n’y a que le français et l’anglais. Dans le fichier config.php, ceci correspond aux valeurs “fr” et “en” pour la variable $language. Les fichiers de traduction sont dans resources/locale. Ce sont des fichiers au format json. Par exemple local_fr.json pour fr.
Il est possible de faire sa propre traduction en créant par exemple le fichier local_toto.json et en mettant dans le fichier config.php

$language="toto";

3. Vous devez indiquer quel sera le mode d’accès utilisé pour vos librairies Calibre:

Le mode Direct : dans ce mode My Readings ira chercher directement les images de couverture de vos livres et les livres dans vos bibliothèques. Ce mode ne peut être utilisé que si vos bibliothèques sont dans le répertoire Web, le chemin de ces bibliothèques doit alors être indiqué en relatif (par rapport au répertoire de My Readings). Dans notre exemple, ceci ne peut être utilisé que pour //volume1/web/mesbiblios/calibre1/, le chemin a indiquer serait alors ../mesbiblios/calibre1/.

Si vous avez au moins une bibliothèque en dehors du répertoire web, vous devez utiliser un des modes de redirection php suivant:
- with resize: le serveur php ira chercher la page de couverture et la servira à l’interface après l’avoir redimensionnée si nécessaire (pour une hauteur maximum de 422 pixel).
- with resize and cache: la couverture sera redimensionnée et sera stockée dans le répertoire thumb pour pouvoir être utilisée directement lors d’une consultation ultérieure.
- without resize: le serveur fourni la couverture sans redimensionnement.

Dans ces trois cas, les livres seront également transférés par le serveur php.

Le mode “Use X-Sendfile” peut être activé si cette extension est disponible dans votre serveur (c’est le cas pour les NAS Synology).  Dans ce cas, les transfert se font par Apache et plus par la partie php ce qui peut alléger la charge de votre serveur et rendre le transfert plus stable.

Avantages/inconvénients: Le passage par une redirection php permet de mettre les bibliothèques en dehors du répertoire web mais entraîne une charge de votre serveur (processeur et mémoire) plus importante.
Si vous avez un serveur peu puissant, je vous conseille donc le mode “Direct”.
Le redimensionnement des pages de couverture implique un travail du processeur très important. Il a cependant un intérêt : les images transférées sont plus petites ce qui prend moins de bande passante et demande moins de mémoire coté interface.
Le choix dépendra donc de votre configuration. Pour ma part, j’ai adopté le mode with resize and cache qui me semble un bon compromis. La charge processeur est importante lors de la première création des miniatures mais ensuite la navigation est plus rapide qu’en mode Direct car mon serveur est assez puissant pour faire les redirections et les images du cache pèsent entre 20 et 50 ko.

4. La configuration des bibliothèques:

admin3

Vous pouvez protégé l’accès à My Readings par un login/mot de passe. Il faut dans ce cas mettre Protect access sur Yes et indiquer le login et mot de passe qui sera utilisé.

Vous devez ensuite indiquer où sont vos bibliothèques Calibre:
Cliquez sur Add Library pour faire apparaitre autant de ligne que de bibliothèques nécessaires.
Indiquez le chemin d’accès à vos blibliothèques et le nom qui apparaîtra dans My Readings pour celles-ci. Par exemple: ../mesbiblios/calibre1/ ou //volume1/web/mesbiblios/calibre1/ et Livres. Notez que le chemin doit se terminer par “/”. Chaque nom doit être différent.

Vous pouvez faire de même avec une bibliothèque à accès restreint:

admin5

Cet accès restreint n’est utilisé que si vous avez déjà un accès protégé pour les autres bibliothèques. Vous devez alors indiquer un deuxième compte (login et mot de passe). Lors d’une connection avec ce compte dans My Readings vous aurez accès aux bibliothèques définies précédemment et à celles en accès restreint.

 4. Sauvegarder la configuration:

Lorsque vous avez terminé votre paramétrage, cliquer sur Save Configuration. Vous pouvez ensuite passer à une phase de test pour vérifier celle-ci.

 Tests de la configuration

Allez dans l’onglet Compatibility test et cliquez sur Run Tests

admin6

Différents tests vont être effectués:

La présence de l’extension sqlite3 et d’une version de php supérieure à la 5.2 sont vérifiées. Il semble que sur certains serveurs (comme celui-ci), l’extension sqlite3 n’est pas détectée. Ceci n’empêche pas My readings de fonctionner.

Un test de connexion à chacune des bases Calibre est lancé:
- en php avec PDO (qui doit indiquer que c’est OK),
- et d’affichage de la couverture d’un livre. Si vous ne voyez pas une image de cette couverture c’est qu’il y a un probablement un problème avec votre mode d’accès.

La présence d’une limitation d’accès par open_basedir est vérifiée car il peut être nécessaire que vous ajoutiez le répertoire de votre base à la liste des répertoires autorisés (pour les NAS Synology, c’est dans Configuration, Services Web, Onglet Paramètres PHP).

Il est vérifié qu’il est possible décrire dans thumb (pour le mode “with resize and cache”) et cache, que l’extension Zip est active (vous ne pourrez pas utiliser le lecteur intégré de cbz sinon).

Tests de la présence des livres et des pages de couverture:

L’onglet Test covers and ebooks permet de lancer un test pour vérifier l’accès à l’ensemble de vos ebooks et pochettes (fichiers cover.jpg).
Comme tous les livres sont testés, ceci peut prendre un peu de temps. Un rapport est fait pour signaler les erreurs éventuelles.

J’ai remarqué en particulier que certaines références de livres ou répertoires dans la base de données peuvent avoir des erreurs de casse (des majuscules ou minuscules ne correspondent pas). Il faut dans ce cas modifier ces répertoires ou fichiers pour corriger ces erreurs sinon le téléchargement et/ou l’affichage des pochettes correspondantes ne pourra se faire.

Quelques outils:

L’onglet Tools vous permet d’accéder à différentes fonctionnalités.

Les url pour lancer l’interface My Readings:

Plusieurs paramètres peuvent être passé dans l’url de lancement de My Readings pour modifier son aspect. La syntaxe est expliquée dans le partie suivante. Des url d’exemple sont disponibles dans l’onglet Tools:

admin7

Vous pouvez aussi vider le cache du répertoire thumb (par exemple pour réinitialiser la création de vignettes si des couvertures de livre déjà en cache ont été modifiées).

La syntaxe des url de My Readings

L’interface se lance en donnant l’url du répertoire dans lequel l’application est installée. C’est en fait la page index.html qui est ouverte.

Dans la démonstration, l’url est donc http://sbdomo.esy.es/MyReadings/. Nous résumerons cette url à “MyReadings/” dans ce qui suit.

Pour ne pas utiliser le thème par défaut (le thème “flat”), la syntaxe est la suivante: MyReadings/?platform=nom, en remplaçant nom par le nom du thème désiré. Pour l’instant, il n’y a que le thème “wood” (aspect bois). L’url est donc du type MyReadings/?platform=wood.

Pour adapter l’affichage à l’appareil utilisé (le mode par défaut est celui de l’ipad et l’ipad mini), il faut ajouter #profil/device en remplaçant device par le nom désignant le type d’appareil: iphone pour l’iPhone, gtab pour la Galaxy Tab 2.

Par exemple l’url:
MyReadings/ sera pour iPad/iPad Mini avec le thème flat
MyReadings/#profil/iphone sera pour l’iPhone avec le thème flat
MyReadings/?platform=wood#profil/gtab sera pour la Galaxy Tab avec le thème wood.

30 comments on “My Readings – Installation

  1. Mrold on said:

    Salut et merci pour ton programme.
    J’ai testé sur mon synology mais le download ou l’affichage des covers ne marchent pas.
    En fait j’ai mon repertoire cops externe au web dir, et les acces sont refusés.
    Avec cops ca marche parce qu’il utilise je pense un programme php “fetch.php” et que j’ai autorisé php a utiliser ce directory .
    Le testpath.php est ok quant à lui et il lit correctement ma db calibre sous cops (car il utilise du php)
    Bravo en tout cas pour cette première version, je cherchais justement un programme complémentaire a cops pour afficher rapidement et joliment mes derniers ajouts !!!

    cdt

    • sbdomo on said:

      Effectivement, pour l’instant, il faut que la base Calibre soit dans le répertoire web.
      J’ai choisi cette solution car avec COPS sur mon DS410j, la redirection des images grâce au fetch est très lente (l’interface n’a pas un accès directe mais c’est le NAS qui en fait une copie grâce au php)
      Dans My Readings, le chargement des vignettes se fait donc en pré-load avec un lien direct.
      Il est possible que dans le futur, j’implémente une option pour un accès indirect mais je ne sais pas si ce sera compatible avec le principe de navigation dans un carrousel infini qui se veut fluide.

      merci pour les encouragements.

    • Concernant le second My readings :
      – Installation qui pas simple (MAUVAIS) mais cela est peut être lié à mon amateurisme en php. Il ne fonctionne pas chez moi puisque mon répertoire est hors du répertoire web partagé et que MyReading ne supporte pas encore ce type de configuration); Mais après avoir déplacé le répertoire pour faire le test, j’ai quand même un problème d’accès à ma table calibre message : “Impossible d’accéder à la base de données SQLite – SQLSTATE[HY000] [14] unable to open datables file”.
      (Je vous invite à découvrir BicBucStriim, en tout cas à reprendre le meilleur de cette application)
      – Accès à la bibliothèque avec Mot de Passe; (BON)
      L’interface est la plutôt agréable même s’il reste encore des petits compléments à faire (et là je compare avec la démo puisque je n’ai pas pu faire le test avec ma propre biblio).

      En conclusion, MyReadings, n’est pas encore utilisable pour moi.
      Ce qui manque: la possibilité de mettre à jour la base, ou mieux, d’incrémenter (ajouter des livres) depuis le web (sur sa tablette dans mon cas)

      En tout état de cause, je vous encourage à poursuivre vos travaux. J’ai l’espoir que l’on dispose un jour d’un .pkg à installer depuis son NAS qui permette d’avoir une application type “calibre simplifiée”. Je vous parie d’ailleurs que celui qui développe une telle application (ebbok manager voir GED) pourrait négocier son intégration au DSM 5.XXX vu l’évolution que prend les docs numériques dans notre mode de vie actuel.

  2. Mrold on said:

    Merci pour cette réponse rapide .
    Le problème avec les epub sous WEB est que l’on est pas à l’abris d’une copie massive des epub via un aspirateur … et la sécurité est moins bonne.
    Je vais regarder en copiant juste les covers sous web. Déjà cette interface sera plus sympa pour controler/informer de mes derniers ajouts .
    PS : une option pour régler dynamiquement (ou par plage) le nombre des derniers ajouts ou un tri par date d’ajout serait super
    ++

    • sbdomo on said:

      Effectivement la sécurité est moins bonne. Je me suis posé la question mais j’en ai conclu cependant que la possibilité d’accès est limitée car, sur un serveur correctement paramétré (comme les syno mais pas les serveurs de Free…), il n’est pas possible de naviguer dans l’arborescence sans la connaitre. Il sera donc difficile pour une personne depuis le web ou un aspirateur d’accéder à la base calibre sauf en mettant en place un programme qui teste toutes les combinaisons pour trouver les répertoires. Vu l’enjeu, c’est peu probable.
      Pour My Readings, j’ai veillé à ce que les chemins des bases ne soient pas remontés si le login est actif et que l’utilisateur n’est pas identifié.
      S’il n’y a pas de gros bugs urgents à corriger, je pourrai cependant mettre ce mode “fetch” dans ma “to do” liste.

      Pour les derniers ajouts, ils sont affichés du plus récent au plus ancien. Le principe de l’interface est qu’elle se charge toute seule de récupérer la liste des livres au fur et à mesure de la navigation.
      Je peux prévoir d’ajouter un paramètre pour indiquer un nombre maximum de livre à afficher. Ce serait dans quel but ? Dans COPS, l’intérêt qui j’y vois est d’accélérer la navigation en limitant le travail de la page fetch.php.

      • Mrold on said:

        En fait, il peut downloader facilement le fichier metadata.db et retrouver ainsi tous les chemins .
        Sinon j’ai bcps de livres et limiter l’affichage, ou mieux la paginer rend les choses plus facile surtout que lorsqu’on fait défiler les livres il perd les images en début de liste et il doit tout recharger en revenant ….

        • sbdomo on said:

          La question de la sécurité m’intéresse. Je me suis peut-être trompé en supposant que c’est suffisamment sécurisé. Comment un utilisateur peut-il trouver où télécharger le metadata.db si on ne lui a pas indiqué où il est ?

        • sbdomo on said:

          Deuxième question: sur quel matériel avez-vous fait le test ?
          Car je n’ai pas ce comportement.
          En fait, il y a déjà une sorte de pagination: l’interface charge les données concernant les livres par paquet de 50. D’abord les 50 premiers puis quand on arrive vers le cinquantième, le paquet suivant est téléchargé automatiquement. Les images sont préchargées pour trois écrans.
          Sur mon iPad 3, en connexion locale (donc plus rapide que de la 3G), on ne se rend compte de ce chargement que si l’on fait défiler rapidement les écrans. Mais, à titre de test, sur une base de plus de 5000 livres, si je fait défiler 30 écrans (soit 240 livres), je ne constate pas de rechargement des images quand je reviens en arrière.

          • Mrold on said:

            Dsl pour la réponse tardive …
            Pb securité : il suffit d’ecrire l’url complete avec metada.db pour le downloader, c’est pourquoi le repertoire le contenant ne doit pas être accessible via le web directement
            Pour mon Nas c’est un Synologie et je confirme un refresh des covers.

            Sinon pour éiter le problèmes des covers est il possible de simplement pouvoir désactiver l’affichage ? Dans mon cas je souhaite avoir une liste des derniers ajoutés (le covers est secondaire pour l’instant)

          • sbdomo on said:

            Salut,
            Je me demande d’où vient la différence avec ma config pour le refresh des covers.
            Il n’est pas encore possible de désactiver l’affichage de celles-ci mais je peux prévoir un profil sans cover (qui pourra être utile pour les petites configs de toute façon).
            Pour l’instant, je suis en train d’ajouter un lecteur en ligne d’epub et cbz.

            Pour le metadata, je crois que je me suis mal expliqué. Effectivement, si l’on connait l’url, il est possible de télécharger ce fichier. Ce que je voulais dire c’est qu’avec un serveur configuré pour ne pas donner la liste des répertoires et des fichiers web comme le fait le Syno et comme MyReadings ne permet pas de connaitre le chemin des bases si l’on est pas identifié, je ne pense pas qu’il soit possible de trouver cette url sauf à essayer de la trouver au hasard (et il ne faut donc pas la mettre à un endroit évident comme dans un répertoire qui s’appellerait calibre…).

  3. myloud on said:

    Bonjour,

    Je suis en train d’essayer ce projet que je trouve très intéressant mais comme je suis un débutant en php, je ne comprends pas comment on peut lancer le fichier admin.php – avec quel utilitaire ou quel appli. ??? (j’ai tout créé comme indiqué dans le tuto et même la page html du site de mon serveur – enfin le Bonjour ! à mon adresse I.P) mais pour la suite, je cale complètement.
    Si tu veux bien m’aider, cela serait bien sympa ..!

    • myloud on said:

      Désolé.. Suis un gros boulet, j’ai commencé à comprendre.. Je suis en train de le configurer; on verra si j’arrive jusqu’au bout ..!

  4. Pascale on said:

    Bonjour
    Je commence avec un synology 412+
    le but étant de pouvoir décharger ma librairie d’ibooks qui est lourde sur le NAS et de pouvoir y accéder avec l’ipad
    j’ai créé une bibliothèque calibre que j’ai mise dans un dossier partagé ibooks et téléchargé votre dossier myreadings et mis dans le dossier web
    que faut-il faire maintenant car je ne comprends pas comment on lance la page admin.php?
    merci d’avance

    • sbdomo on said:

      Bonjour,
      Si, par exemple, le NAS est à l’adresse mynasip et que My Readings est installé dans /web/MyReadings, il faut, dans un navigateur comme Chrome, lancer l’url : http://mynasip/MyReadings/admin.php .

      • Pascale on said:

        merci pour votre réponse, je vous ai envoyé une réponse par email sans nouvelles de vous, donc je la remets ici
        je me connecte à la page admin, rentre identifant + mot de passe + confirmation du mot de passe, mais rien ne se passe, je retrouve à chaque fois la même page, y a t il une option à activer sur le serveur? j’ai l’impression que ce que j’écrit n’est pas pris en compte…

        j’attends votre réponse car je suis vraiment bloquée, je n’y connais pas grand chose, mais j’aimerai tellement pouvoir lire ma bibli calibre depuis mon ipad…
        merci d’avance

        Pascale

        • sbdomo on said:

          Bonjour,
          Je n’ai effectivement pas répondu car je n’ai pas vu de mail. (Envoyé à quelle adresse ?)
          Sinon, ça risque d’être difficile de trouver ce qui se passe sans accès à My Readings.
          En principe, au premier lancement de admin.php, il est demander de créer un login et mot de passe (avec confirmation du mot de passe). A la validation, le fichier configadmin.php qui contient ces identifiants est créé dans le sous-répertoire config de My Readings. Il sera utilisé ensuite pour les connexions à admin.php.
          Le problème peut venir de l’impossibilité de créer ce fichier (problème de droit d’accès en écriture).
          Ce fichier a-t-il été créé ?
          Il peut être utile de regarder la console de Google Chrome pour voir si une erreur est indiquée. Est-ce le cas?…

          • Pascale on said:

            Bonjour et merci de la réponse

            effectivement j’ai répondu depuis le mail reçu à “donotreply…” bref un vrai boulet… :D

            j’ai réessayé avec un autre mot de passe sans chiffre, et cela a marché…

            mais cela s’arrête là…
            les tests sont négatifs: compatibilité et accès à la bibliothèque…

            Warning: PDO::__construct(): open_basedir restriction in effect. File(/volume1/ibooks/calibre/metadata.db) is not within the allowed path(s): (/etc.defaults:/etc:/usr/syno/synoman:/var/services/tmp:/var/services/web:/var/services/homes) in /volume1/web/myreadings/testexist.php on line 52
            Connection error – open_basedir prohibits opening /volume1/ibooks/calibre/metadata.db (en rouge)

            j’ai bien créé un dossier partagé et ouvert les droits en lecture écriture, mais je loupe sûrement qqchose, je n’arrive pas à y accéder non plus avec cops… je suis en DSM5

          • sbdomo on said:

            C’est la protection “open_basedir” qui bloque l’accès. Il faut aller dans la partie configuration de DSM5 partie serveur php (je n’ai pas accès à mon DSM pour donner le nom exact…) pour ajouter le répertoire /volume1/ibooks aux répertoires autorisés (c’est le même problème pour COPS).

          • Pascale on said:

            j’ai déjà cette ligne dessus: personnaliser PHP openbase-dir:
            /etc.defaults:/etc:/usr/syno/synoman:/tmp:/var/services/tmp:/var/services/web:/var/services/homes

            je le colle à la suite, je rajoute qqchose, ou j’efface tout ?

            j’ai essayé comme cela, cela ne marche pas mieux:
            /etc.defaults:/etc:/usr/syno/synoman:/tmp:/var/services/tmp:/var/services/web:/var/services/homes/volume1/ibooks

          • sbdomo on said:

            Surtout ne pas effacer la ligne existante, il faut le mettre à la suite mais sans oublier le séparateur qui est “:”.
            Ce devrait être donc :/volume1/ibooks

  5. Pascale on said:

    après avoir “tout” essayé, cela marche enfin: un problème de majuscule dans le répertoire Ibooks et le chemin indiqué ibooks… voilà! et pour le coup avec cops aussi

    mille merci pour votre temps et explications, il va falloir que j’affine car pour l’instant je n’accède qu’à 6 livres… :)

    • sbdomo on said:

      Tant mieux si j’ai rendu service…

      • Pascale on said:

        tout marche parfaitement depuis iphone, ipad, ordi…
        merci infiniment c’est génial!
        avec la KOBO GLO, peut-on télécharger directement des livres dessus depuis le navigateur? ou depuis COPS ?
        (c’est pour conseiller ma fille qui n’est pas sur place…)

        • sbdomo on said:

          Je ne connais pas le Kobo glo mais je ne pense pas que My Readings soit compatible. Par contre COPS l’est probablement.

          • Pascale on said:

            Elle a essayé avec cops, mais à priori n’y arrive pas, je ne comprends pas pourquoi puisque c’est par le navigateur de la Kobo…
            je n’ ai pas de Kobo, donc pas facile d’évaluer le problème.
            Merci pour tout je vous tiendrai au courant dès que j’en saurai plus .

  6. Mvander on said:

    I have install and it works all great… well done.
    Only is there someone that can guide me in installing the RAR extension in php on the Synology NAS.
    The extension are not available in standard on Synology.

    • sbdomo on said:

      I would like to add the rar extension on my Syno too but I didn’t find a easy solution to do that…

  7. Emphyrio on said:

    Bonjour,

    Je découvre MyReadings que j’aimerais le tester sur mon Syno.
    Après installation, je me connecte sur la page admin.php et crée mon compte.
    Ensuite, je remplis la page configuration et je clique sur “save configuration”. Et là, j’obtient un simple “error” comme réponse…
    J’ai fais pas mal de tests, notamment sur l’emplacement de la bibliothèque, mais ça ne change rien.
    Et pas facile de trouver l’erreur avec un message aussi succint !

    Merci d’avance pour votre aide
    Emphyrio

    • Emphyrio on said:

      (re)bonjour,
      Je me répond tout seul pour ceux que ça intéresse. Il faut activer mssql dans les extension PHP…
      Et là, ça marche !
      Merci pour ce petit soft super.

      • sbdomo on said:

        Effectivement,
        Je l’ai indiqué dans le tuto sur l’installation sur DSM 5.
        Content que ça marche…

Leave a Reply to Pascale Cancel reply

Your email address will not be published.

* Copy This Password *

* Type Or Paste Password Here *

1,743 Spam Comments Blocked so far by Spam Free Wordpress

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>