Tiny Tiny RSS

Ubuntu/Debian – Installation de Tiny Tiny RSS avec Nginx, PHP-FPM et MySQL

Tiny Tiny RSS (ttrss) est un agrégateur de flux RSS et Atom libre sous licence libre GNU GPL v3.

Depuis la fin de Google Reader au mois de juillet 2013, les services concurrents (Feedly, Digg Reader, etc.) se sont multipliés. En majorité, il s’agit de services tiers qui nécessitent simplement de s’inscrire afin de disposer d’une interface web prête à l’emploi.

Pourquoi donc héberger un lecteur de flux RSS ?

  • Dépendance du service : vous ne dépendrez plus du bon vouloir d’un tiers. En effet ces services tels que Feedly, Digg Reader ou encore NetVibes permettent d’obtenir un lecteur de flux RSS contre une simple inscription, mais qui rendent à nouveau dépendant d’une entreprise qui peut fermer du jour au lendemain
  • Données personnelles : les flux auxquels chacun est abonné et les articles lus sont une information importante pour quiconque souhaite renseigner un profil utilisateur et d’utiliser ces données à des fins commerciales…
  • Filtrage en entreprise : les lecteurs de flux connus sont souvent bloqués par les proxies d’entreprise, votre URL personnalisée a beaucoup moins de chance d’être filtrée.

Tiny Tiny RSS constitue une bonne alternative avec de nombreux avantages et fonctionnalités :

  • Interface fluide et responsive
  • Multi-utilisateurs
  • Mode hors-connexion pour continuer à lire vos feeds
  • Multilingue
  • Gestion des tags et catégories
  • Recherche
  • Raccourcis clavier
  • Support du format OPML
  • Podcasts
  • Personnalisations via des plugins et des thèmes
  • Applications mobiles
  • Gratuit

ttrss-preview

Prérequis

Notre choix se portera sur le serveur HTTP Nginx pour une question de performances. Nginx est reconnu pour ses hautes performances, sa stabilité, son ensemble de fonctionnalités, sa configuration simple ainsi que sa faible consommation de ressources.

Le module PHP-FPM permettra la communication entre le serveur Nginx et PHP, basée sur le protocole FastCGI. Ce module, écoutant sur le port 9000 par défaut ou sur un socket UNIX, permet notamment l’exécution de scripts PHP dans un processus indépendant de Nginx avec des UID et GID différents. Il sera alors possible, dans le cas de la gestion de plusieurs sites sur un même serveur, de créer et configurer un groupe (appelé aussi pool) de processus par site.

Lors de l’installation de MySQL 5.5, il vous sera demandé de définir un mot de passe pour l’utilisateur root ainsi que la confirmation de ce mot de passe.

Installez tout d’abord les paquets suivants :

Vous devez disposer d’une version de PHP supérieure ou égale à 5.3.
Pour connaître la version installée sur votre système, tapez la commande suivante :

Installation et téléchargement de Tiny Tiny RSS

Téléchargez la dernière version de Tiny Tiny RSS :

Configuration

Droits Unix

Lors du déploiement basique d’un serveur HTTP, l’utilisateur sous lequel fonctionne ce serveur (Apache, Nginx…) est la plupart du temps « www-data », « nobody » ou « apache ». Cela signifie que si plusieurs sites existent sous la même instance d’Apache, tous utilisent le même utilisateur. Or si l’un des sites s’avère corrompu par un utilisateur malveillant alors l’assaillant peut profiter pleinement de tous les droits de l’utilisateur sous lequel tourne le serveur web. Tous les sites s’avèrent donc vulnérables.

Pour des raisons évidentes de sécurité, il est donc recommandé de cloisonner ces utilisateurs et d’avoir un utilisateur dédié à la gestion du dossier Tiny Tiny RSS. Cet utilisateur aura des droits aussi restreints que possible à ce répertoire.

Commencez par créer un utilisateur ttrss.

L’utilisateur ttrss sera le propriétaire du dossier /var/www/ttrss. Ce dossier appartiendra au groupe www-data pour que Nginx puisse y accéder.

Nginx

Modifiez les directives suivantes du fichier de configuration Nginx /etc/nginx/nginx.conf :

  • worker_processes 8; : l’un des paramètres à ajuster immédiatement est le worker_processes. Pour profiter pleinement de la puissance de votre serveur, il est recommandé de mettre autant de worker_processes que de cœurs disponibles sur votre serveur. Pour connaître le nombre de cœurs sur votre serveur, il suffit de lancer la commande :
  • server_tokens off; : pour des raisons de sécurité, il est recommandé de désactiver l’envoi d’informations telles que le numéro de version de votre Nginx. Pour cela, décommentez cette ligne.

PHP-FPM

Créez le fichier de configuration suivant : /etc/php5/fpm/pool.d/ttrss.conf

Certaines valeurs sont très arbitraires et seront différentes d’un serveur à l’autre et surtout du nombre d’utilisateurs simultanés sur votre Tiny Tiny RSS… Cependant ces différentes directives respectent certaines conditions :

  • [ttrss] : nom du pool. Il est possible de créer plusieurs pools par fichier. Chaque pool doit commencer par cette directive.
  • listen : interface d’écoute des requêtes. Les syntaxes acceptées sont ADRESSE_IP:PORT (ex: listen = 127.0.0.1:9000) et /path/to/unix/socket (ex: listen = /var/run/ttrss.sock).Le socket est représenté comme un simple fichier sur le système et permet d’interfacer des processus entre eux sans passer par la couche réseau du système, ce qui est inutile lorsque PHP-FPM et Nginx sont hébergés sur le même serveur. Je vous conseillerais donc d’utiliser un socket.
  • listen.owner & listen.group : affecte l’utilisateur et le groupe au socket Unix si utilisé. Ces deux paramètres peuvent être associés au paramètre listen.mode qui définit les permissions du socket (660 par défaut). Il est important que Nginx ait les doits de lecture sur le socket Unix.
  • user & group : utilisateur et groupe sous lequels le pool de processus sera exécuté. Cet utilisateur et ce groupe doivent bien sûr exister sur votre système et surtout accéder aux fichiers php de votre Tiny Tiny RSS. Cela veut dire aussi que chaque fichier/répertoire créé dans Tiny Tiny RSS appartiendra à cet utilisateur et à ce groupe.
  • pm : directive acceptant les 3 valeurs suivantes : static, dynamic et ondemand.
    • static : les processus, au nombre de pm.max_children, sont continuellement actifs (quelle que soit la charge) et sont susceptibles de consommer de la mémoire inutilement. Cette directive est recommandée si vous avez un seul site, donc un seul pool.
    • dynamic : le nombre de processus fils pourra varier suivant la charge. Cependant, nous gardons le contrôle sur le nombre de processus fils à créer au démarrage du serveur, le nombre de processus maximum, en attente de requêtes, etc. Les directives suivantes deviennent obligatoires : pm.max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers. Cette directive est recommandée si vous avez plusieurs pools avec un fort trafic (plus de 10 000 requêtes/jour).
    • ondemand : aucun processus fils n’est lancé au démarrage du serveur, les processus s’activent à la demande et auront une durée de vie définie par la directive pm.process_idle_timeout. L’intérêt de cette directive est de libérer de la mémoire en cas de faible charge mais celle-ci peut légèrement augmenter le temps de réponse de votre blog. Cette directive est recommandée si vous avez plusieurs pools avec potentiellement une faible affluence.

    Sachant que l’utilisation de Tiny Tiny RSS est personnelle et souvent limitée à quelques utilisateurs, nous choisirons et détaillerons ici la directive ondemand.

  • pm.max_children : nombre maximum de processus fils.
  • pm.process_idle_timeout : durée en secondes avant qu’un processus fils inactif ne soit détruit.
  • pm.max_requests : nombre de requêtes que chaque processus fils devra exécuter avant d’être détruit. Cette valeur ne doit pas être trop élevée afin de contourner d’éventuelles fuites mémoires, ni trop faible pour ne pas solliciter régulièrement le CPU à chaque création de processus fils. 500 reste une valeur recommandée.

Virtual host

Créez le fichier suivant /etc/nginx/sites-available/ttrss :

Activez le virtual host :

La nouvelle configuration sera prise en compte après redémarrage des services Nginx et PHP-FPM :

Création de la base de données MySQL

Tout d’abord, connectez-vous sur l’interface MySQL avec l’utilisateur root et grâce au mot de passe saisi lors de l’installation du paquet mysql-server-5.5 :

Créez la base de données ttrss :

Tout comme pour la gestion du répertoire ttrss et pour plus de sécurité, vous allez tout d’abord créer un utilisateur MySQL ttrss dédié à la base de données ttrss, renseigner un mot de passe et ensuite lui donner les droits sur cette base de données :

Tiny Tiny RSS

Lancez votre navigateur et rendez-vous à l’adresse suivante : http://ttrss.mondomaine.fr/.

[Cliquez sur les images pour suivre chaque étape de la configuration de Tiny Tiny RSS]

Connectez-vous avec le login admin et le password password. Je vous conseille fortement de changer ces valeurs par défaut et de créer un autre compte administrateur dans Actions… > Configuration… > Utilisateurs.

Pour mettre à jour vos flux, il vous suffit de double-cliquer sur les catégories. En effet, Tiny Tiny RSS ne se met pas à jour automatiquement.

Si vous optez pour une mise à jour automatique des flux, 3 solutions s’offrent à vous :


Cette méthode consiste à lancer un processus en arrière-plan en utilisant nohup (le processus ne sera pas coupé lors de la déconnexion de votre session SSH).
Connectez-vous sous l’utilisateur ttrss :

Lancez le processus en arrière-plan :

L’inconvénient de cette méthode est qu’il ne faut pas oublier de relancer le processus après un redémarrage de votre serveur.

2. Crontab…


La deuxième méthode consiste à créer une tâche via crontab qui s’exécutera périodiquement (toutes les 30 minutes dans notre exemple) :

Connectez-vous sous l’utilisateur ttrss :

Ajoutez la ligne suivante :

Sauvegardez et quittez.

3. Mise à jour semi-automatique


Enfin la dernière méthode consiste à modifier le fichier de configuration de Tiny Tiny RSS.
Connectez-vous sous l’utilisateur ttrss :

Dans le fichier /var/www/ttrss/config.php, modifiez la constante SIMPLE_UPDATE_MODE à true pour activer la mise à jour automatique :

Enfin revenez sous votre super utilisateur et relancez votre Nginx et PHP5-FPM pour prendre en compte la nouvelle configuration :

La mise à jour se fait uniquement via l’interface web de Tiny Tiny RSS, ce qui implique que celle-ci doit être ouverte dans un navigateur pour que les flux se mettent à jour. Cette méthode peut présenter des inconvénients pour les utilisateurs de l’API Tiny Tiny RSS et de l’application Android.

Installation d’un thème

Il est possible de modifier le thème par défaut, vous trouverez une liste de thèmes compatibles sur le site officiel.
Dans cet HowTo, nous allons installer le thème Feedly qui se base sur le thème du célèbre agrégateur du même nom.

  • Connectez-vous sous l’utilisateur ttrss :
  • Téléchargez l’archive du thème :
  • Décompressez l’archive :
  • Supprimez l’archive :
  • Revenez sous votre super utilisateur et permettez à Nginx de lire les fichier statiques :
  • Activez le thème dans Tiny Tiny RSS :

Tiny Tiny RSS sur Android…

Tiny Tiny RSS

Découvrez l’excellente extension Tiny Tiny RSS de l’application News+ sur Android. L’application se connectera à votre serveur pour récupérer l’ensemble de vos flux. Un mode hors-connexion est aussi disponible.

Tiny Tiny RSSNews+Disponible sur Google Play


Ubuntu 12.04 Server LTS (64bits)Nginx 1.1.19
PHP5-FPM 5.3.10
MySQL Server 5.5.35
Tiny Tiny RSS 1.11

Auteur
AuteurEdouard WATTECAMPS

0 réponses

Répondre

Se joindre à la discussion ?
Vous êtes libre de contribuer !

Laisser un commentaire

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