Aller au contenu

Tiny Tiny RSS - Installation avec Nginx, PHP-FPM, MariaDB - Ubuntu


Ldfa

Messages recommandés

Tiny Tiny RSS (tt-rss) est un agrégateur auto-hébergé 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, NetVibes, 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 (augmentation des tarifs ou fermeture du service). 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, de base, vous n’aurez accès qu’à certaines fonctionnalités.
  • Données personnelles : les flux auxquels vous êtes 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
  • Moteur de recherche
  • Raccourcis clavier
  • Support du format OPML
  • Podcasts
  • Personnalisations via des plugins et des thèmes
  • Applications Android et iOS
  • Gratuit

ttrss-preview

Si côté client, seul un navigateur est nécessaire, côté serveur, Tiny Tiny RSS a besoin d’un serveur web (Nginx), de PHP, d’une interface permettant la communication entre le serveur web et PHP (PHP-FPM) et d’une base de données (MariaDB). Nous améliorerons les performances de tt-rss grâce à OPCache et sécuriserons les échanges grâce à un certificat SSL/TLS délivré par Let’s Encrypt.


Si vous ne possédez pas de serveur dédié ou de nom de domaine, je vous conseille les VPS d’A2 Hosting. Les serveurs sont rapides (basés en France), fiables et surtout très abordables. Les formules « Entry » ou « Mid » sont amplement suffisantes pour l’hébergement d’un Tiny Tiny RSS.


  • Vous devez disposer d’Ubuntu 18.04 LTS.
  • Votre utilisateur doit avoir accès à sudo.

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 en ressources.

2.1 – Installation

Installez le paquet nginx :

2.2 – Configuration

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 directive dans le bloc http.
  • Installez le paquet git afin de récupérer les sources de tt-rss :
  • Téléchargez les sources de tt-rss :

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 de Nginx, 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 ttrss. Cet utilisateur aura des droits aussi restreints que possible à ce répertoire.

Nous allons donc modifier le propriétaire du répertoire /var/www/ttrss et l’attribuer à un nouvel utilisateur dédié : ttrss.

Par ailleurs, Nginx est lancé sous l’utilisateur www-data et doit avoir accès en lecture au répertoire /var/www/ttrss pour lire les ressources statiques (HTML, CSS, JS, etc.). Nous allons donc attribuer le répertoire /var/www/ttrss au groupe www-data.

Enfin nous retirerons toutes les permissions de ce répertoire aux autres utilisateurs.

  • Créez un utilisateur ttrss :
  • Modifiez le propriétaire et le groupe du répertoire /var/www/ttrss :
  • Retirez toutes les permissions aux autres utilisateurs :

Tiny Tiny RSS nécessite certains modules PHP pour fonctionner :

  • PHP PDO : connecteur pour MariaDB
  • PHP JSON & PHP XML : opérations sur la lecture des flux RSS
  • PHP mbstring : support des caractères multi-octets
  • PHP fileinfo : améliore les performances d’analyse de fichiers
  • PHP CURL : nécessaire pour certains plugins
  • PHP POSIX : nécessaire pour le processus de mise à jour des flux
  • PHP GD : opérations sur les images présentes dans les flux
  • PHP INTL : support de l’internationalisation.

Installez les paquets suivants :

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

Le module PHP-FPM permet 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 applications sur un même serveur, de créer et configurer un groupe (appelé aussi pool) par application. Un pool définit notamment le UID/GID des processus PHP et le nombre de processus minimum, maximum ou encore le nombre de processus en attente à lancer.

6.1 – Installation

Installez le paquet php-fpm :

6.2 – Création du pool ttrss

Créez le pool dédié à Tiny Tiny RSS en créant le fichier de configuration suivant : /etc/php/7.2/fpm/pool.d/ttrss.conf

Certaines valeurs sont très arbitraires et seront, en fonction des ressources disponibles sur votre serveur et celles que vous souhaiterez dédier à votre tt-rss, différentes d’une configuration à l’autre. 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 (exemple : listen = 127.0.0.1:9000) et /path/to/unix/socket (exemple : 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 Nginx et PHP-FPM sont hébergés sur le même serveur. Je vous conseille 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 droits de lecture sur le socket Unix.
  • user & group : utilisateur et groupe sous lesquels 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 tt-rss. Cela veut dire aussi que chaque fichier et répertoire créé dans tt-rss appartiendra à cet utilisateur et à ce groupe. Comme nous l’avons vu dans le chapitre dédié aux droits Unix, chaque fichier devra appartenir à l’utilisateur ttrss et au groupe www-data.
  • 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 l’affluence de votre tt-rss) et sont susceptibles de consommer de la mémoire inutilement. Cette directive est recommandée si tt-rss est l’unique application de votre serveur.
    • 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 tt-rss. Cette directive est recommandée si vous avez plusieurs pools avec potentiellement une faible affluence.

    Sachant que l’utilisation de tt-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. La valeur du paramètre pm.max_children varie d’un système à l’autre. Voici la procédure à réaliser pour déterminer la valeur de ce paramètre :
    • Arrêtez le service php-fpm :
    • Affichez la mémoire disponible (colonne available) sur votre système :

      Sur cet exemple, le système dispose de 3539Mo de RAM disponible. La quantité de RAM que vous souhaitez allouer au maximum à tt-rss dépend de vous et des autres services actifs que vous disposez sur ce même système. Dans notre exemple, nous partirons du principe que nous souhaitons allouer au maximum 256Mo de RAM à tt-rss.

    • Affichez la mémoire utilisée par un processus fils php-fpm :
    • Déterminez le nombre de pm.max_children en appliquant la méthode de calcul suivante :

      pm.max_children = mémoire allouée (en Mo) / mémoire utilisée par un processus fils
      Dans notre exemple : 256 / 18 = 14

    • Éditez à nouveau le fichier /etc/php/7.2/fpm/pool.d/ttrss.conf et ajustez la valeur du paramètre pm.max_children :
  • pm.process_idle_timeout : durée en secondes avant qu’un processus fils inactif 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.

Redémarrez le service php-fpm afin d’activer le nouveau pool ttrss :

7.1 – Installation de MariaDB

Installez les paquets suivants :

7.2 – Configuration de MariaDB

Lancez le script de configuration (recommandé) :

7.3 – Création de la base de données ttrss

  • Tout d’abord, connectez-vous sur l’interface MySQL avec l’utilisateur root et grâce au mot de passe saisi lors de la configuration de MariaDB :
  • 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 :

  • Créez le fichier suivant /etc/nginx/sites-available/ttrss et modifiez les lignes en surbrillance en fonction de votre configuration :
  • Activez le virtual host :
  • La nouvelle configuration sera prise en compte après redémarrage du service Nginx :

Let’s Encrypt est une autorité de certification libre, automatisée et ouverte. Cette autorité fournit des certificats gratuits X.509 pour le protocole cryptographique SSL/TLS au moyen d’un processus automatisé destiné à se passer du processus complexe actuel impliquant la création manuelle, la validation, la signature, l’installation et le renouvellement des certificats pour la sécurisation des sites internet. En juin 2017, Let’s Encrypt a livré plus de 40 millions de certificats.

9.1 – Installation

Installez les paquets software-properties-common et certbot :

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.