Alternative au serveur de contenu de Calibre

Pourquoi ?

Comme vous le savez peut être Calibre contient un serveur HTTP qui permet de partager simplement l'ensemble de sa bibliothèque via des pages Web assez bien faite. Ce serveur se lance en cliquant sur le bouton "Connecter / Partager" et ensuite "Démarrer le serveur de contenu". Le serveur est ensuite accessible par défaut sur le port 8080 (http://127.0.0.1:8080/).

Je vois quelques défauts à Calibre et ce serveur :

  • La version Linux de Calibre a beaucoup de dépendances et même pour le paquet calibre-server il faut pas mal de bibliothèques graphiques
  • Étant donné que Calibre n'est pas un outil client-serveur la base de données ne peut pas facilement se déporter sur un serveur indépendant.
  • Pour moi Calibre est une application graphique qui a sa place sur mon ordinateur portable et pas sur mon serveur. Alors qu'un service Web doit tourner 24h/24 et doit donc être sur un serveur.
  • La solution de passer Calibre2Opds (qui fait aussi des pages Web classiques) ne me tentait pas vu qu'il faut régulièrement relancer le traitement pour avoir un site à jour et qu'il n'y a pas de possibilité de recherche dynamique.

Malgré tous ces défauts j'aime suffisamment Calibre pour le conserver comme outil de gestion de bibliothèque par contre j'aimerai que le contenu de ma bibliothèque soit accessible de partout à n'importe quel moment.

Dropbox

Comme je l'ai déjà dit Calibre est installé sur mon ordinateur portable (sous Windows 7) alors que mon serveur est hébergé (et sous Debian).

Pour partager facile les données j'ai choisi de placer mon répertoire de travail de Calibre dans Dropbox ce qui fait qu'à chaque ajout ou modification d'un livre les données sont automatiquement synchronisée dans le Cloud. J'avais pensé passer un serveur Owncloud mais pour l'instant le volet de synchronisation n'existe on accède direction à un partage Webdav.

Configuration du Dropbox sur le Linux

Voir Récupérer des répertoires Dropbox en console.

Installation de Calibre PHP Server

Qui

Une personne sur Mobileread (encore et toujours) a mis à disposition un serveur PHP tout simple permettant un accès complet à sa bibliothèque Calibre. Les liens sont les suivants :

Dépendances

Mon serveur a déjà une base pour gérer le PHP (avec Nginx), les seules dépendances étaient :

aptitude install php5-gd smarty php5-sqlite

Ne pas oublier de redémarrer le fastcgi PHP après ces installations.

Paramétrage lié à smarty

Le serveur a besoin de smarty et d'un répertoire de travail pour smarty, j'ai choisi de tout stocker sur /tmp

cd /tmp/
mkdir smarty
cd smarty/
mkdir smarty_cache
mkdir smarty_templates_c
cd ..
chown www-data:www-data -R smarty/

Installation du serveur

Simple :

su -
cd /var/www
wget http://charles.the-haleys.org/calibre/calibre_php_server-V0.2.8.zip
unzip calibre_php_server-V0.2.8.zip
mv  calibre_php_server-V0.2.8/ ebook
cd ebook
cp config_default.php config_local.php
vi config_local.php

Dans mon cas le fichier de config est le suivant :

<?php
        

        $config = array();

        
        $config['page_title'] = 'Mes livres';

        
        $config['library_dir'] = '/var/calibre/Dropbox/Calibre';

        
        $config['web_dir'] = '.';

        
        $config['smarty_web_dir'] = $config['web_dir'] . '/smarty';

        
        $config['smarty_dir'] = '/tmp/smarty';

        
        $config['smarty'] = '/usr/share/php/smarty/libs';

        
        $config['cover_max_width'] = 100;
        $config['cover_max_height'] = 100;

        
        $config['books_page_count'] = 20;

        
        $config['pubdate_format'] = 'dd-MMM-yyyy';

        
        $config['timestamp_format'] = 'dd-MMM-yyyy';

        
        $config['fields_to_display'] = '*';

        
        $config['fields_not_to_display'] = '';

        
        $config['use_short_form'] = false;
        $config['fields_in_short_form'] = array('title', 'authors', 'series', 'tags');
        $config['short_form_comments_length'] = 500;

        
        $config['fields_to_make_urls'] = '*';

        
        $config['restrict_display_to'] = '';

        
        $config['enable_format_download'] = true;

        
        $config['use_internal_login'] = false;
        $config['password_file'] = 'some path goes here';

        
        $config['initial_sort_field'] = 'Title';
        $config['initial_sort_direction'] = 'ascending';
?>

Configuration de Nginx

Mon fichier de configuration Nginx :

server {

        listen [::]:80;

        server_name xxx.mydomain.com;

        access_log  /var/log/nginx/ebook.access.log;
        error_log /var/log/nginx/ebook.error.log;
        root   /var/www/ebook;
        index index.php;

        location ~ \.php$ {
               include /etc/nginx/fastcgi_params;
               fastcgi_split_path_info ^(.+\.php)(/.*)$;
               fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
               fastcgi_param  PATH_INFO        $fastcgi_path_info;
               fastcgi_pass    unix:/tmp/fcgi.sock;
        }
}

Ça marche

Je vous encourage à lire le README du serveur PHP Calibre pour le reste de la configuration.

Quelques adaptations

J'ai commencé à faire quelques adaptations sur le template pour le transformer en xhtml et le rendre valide.

Mon but ultime est de modifier le template pour que le rendu soit optimisé pour la Kobo :

  • adapté à sa faible résolution.
  • adapté au noir et blanc.
  • adapté à l'imprécision du tactile IR et donc avec des zones cliquables assez grandes.

N'hésitez pas à me contacter si vous voulez m'aider sur ce projet.

La version xhtml est téléchargeable ci-dessous : calibre-php-server-xhtml.zip

Au final

Ce serveur ne me correspond pas totalement, j'ai donc développé COPS.


Published 28th Feb 2012 // #calibre #ereader




comments powered by Disqus