FreshRSS : un chouette lecteur RSS à héberger soi-même

RSS vous dites ?

Le RSS, vous connaissez ? Je l’utilise depuis quelques années maintenant afin de récupérer les nouvelles infos de plusieurs sites. Sur feu Google Reader d’abord, puis Feedly, puis Inoreader.

Il s’agit d’une technologie éprouvée et robuste, avec quelques avantages intéressants :

  • C’est un format ouvert et normalisé : les flux respectent (normalement) tous les mêmes règles, les outils disponibles sont nombreux et variés ;
  • C’est un format répandu : une majorité de sites web l’utilise. Vous pouvez même le trouver là où on ne l’attend pas (chaines YouTube, annonces des releases sur GitHub, publication des podcasts, etc.) ;
  • C’est une technologie qui met le contrôle dans les mains de l’utilisateur : à l’opposé des flux sur les réseaux sociaux, qui sont manipulés par des algorithmes, le RSS fournit ce qu’on lui demande, si on lui demande, ni plus ni moins.

Le cas qui m’intéresse ici est le plus courant : m’abonner à des flux d’actualités pour pouvoir les consulter, les trier, les conserver ou les partager facilement. Comment ça marche, du coup ?

  1. Il faut tout d’abord choisir un lecteur de flux RSS, communément appelé un agrégateur : Feedly, Inoreader, Tiny Tiny RSS, FreshRSS, etc.
  2. Ensuite, il faut s’abonner. Plusieurs méthodes existent, selon l’agrégateur retenu et la plateforme utilisée. On peut récupérer l’adresse du flux RSS sur le site qui nous intéresse, on peut le chercher dans le moteur de recherche de l’agrégateur, etc.
  3. Une fois l’abonnement en place, tous les nouveaux articles sont listés au fur et à mesure de leur diffusion.

Quoi qu’il arrive, personne ne décidera quelles informations vous parviendront : c’est à l’utilisateur de choisir ses abonnements (rien d’autre n’entrera) et de trier ce qui l’intéresse. Vous pouvez voir cela comme une boite mail, mais seuls les messages attendus entrent. On contrôle le flux à 100 %.

Mon usage

Depuis bientôt une dizaine d’années, mon activité professionnelle nécessite de ma part une veille plus importante : à mes abonnements perso s’ajoutent des flux qui touchent à mon métier. Pour vous donner une idée, si je ne passe aucun article en « lu », mon flux affiche entre 1000 et 2000 articles par semaine. Il y a des doublons (des actualités traitées par plusieurs sites, sans apports particuliers), des articles peu intéressants (les annonces des promos et bons plans par exemple).

Il est assez aisé de faire le tri : je n’affiche par défaut qu’une liste avec les titres ce qui permet de parcours rapidement les infos et d’écarter ce qui m’intéresse moins lors de la première passe. Mes abonnements sont rangés par dossiers thématiques, ce qui facilite la lecture d’un ensemble d’articles. Et je peux les passer en favori pour les consulter en profondeur plus tard.

En maintenant une veille journalière, ça se passe bien. Mais il arrive que je ne consulte pas les flux pendant 1 ou plusieurs jours. Auquel cas, c’est tout de suite plus intimidant de s’attaquer à des centaines d’articles. Selon les cas, il m’arrive d’employer une solution radicale : marquer comme lus tous les articles qui ont plus de x jours. Je pars du principe que de toute façon je ne peux ni tout lire ni ne rien rater. Le FOMO, non merci !

Dernièrement, j’utilisais la version gratuite d’Inoreader, sans soucis particuliers. La plateforme est agréable et bien conçue. Mais depuis quelque temps, je m’intéresse à d’autres solutions. J’utilise un NAS Synology depuis quelques années et la tentation est toujours grande d’héberger moi-même les solutions que j’utilise pour gagner en autonomie et garder le contrôle de mes données.

C’est principalement pour des raisons personnelles, mais aussi techniques, que j’ai sauté le pas. Souvenez-vous, le RSS est un format ouvert et répandu : les solutions ne manquent pas, il y en a pour tous les goûts. Après quelques recherches et comparaisons, j’ai jeté mon dévolu sur FreshRSS. C’est une solution légère, paramétrable et maintenue à jour. Le projet est d’ailleurs accessible également sur son dépôt GitHub.

Installer FreshRSS sur un NAS Synology

Lorsque l’on fait un tutoriel, il faut prendre en compte 2 points importants :

  • Est-ce que le tutoriel sera mis à jour au fur et à mesure des évolutions des ressources utilisées ? Ici la réponse est probablement non.
  • Il est primordial d’indiquer les versions utilisées pour chaque composant.

Voici les points importants pour la suite :

  • Mon NAS est un DS118
  • Il fonctionne actuellement sur le DSM 7.0.1-42218
  • Le paquet WebStation est en version 3.0.0-0308
  • Le serveur Apache fonctionne en 2.4
  • Le serveur PHP est en 7.4.18
  • La base de données est MariaDB en version 10
  • Pour administrer la base de données, j’utilise phpMyAdmin en 4.9.7
  • 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

Les étapes ci-dessous sont valables pour cet environnement. Selon les évolutions des différentes ressources, quelques points pourront nécessiter des ajustements, voire ne plus être valables.

Important : ce que je ne couvrirai pas

  • L’accès web de l’extérieur : nom de domaine, adresse IP, DDNS, QuickConnect.
  • La gestion du pare-feu : ouverture du port, protection du NAS.
  • L’accès au dossier partagé /web depuis votre explorateur de fichier local.

La base

Installation des paquets

Pour commencer, il faut installer les paquets suivants depuis l’interface du NAS : Web Station, Maria DB 10, PHP 7.4, Apache HTTP Server 2.4 et phpMyAdmin.

Une fois que c’est fait, ouvrez Web Station, puis rendez-vous dans la partie Portail de services web. Là, vous verrez une ou plusieurs lignes, selon les autres outils installés sur le NAS. Vous pouvez envisager deux cas de figure.

Ensuite, via l’explorateur de fichier, rendez-vous dans le dossier partagé web, puis créez un dossier pour votre future installation. Pour la suite, j’ai opté pour « rss ». Ce qui donne /web/rss/.

1. Utilisation du serveur par défaut

Si vous utilisez Web Station comme un unique serveur avec les mêmes paramètres pour les différents sites hébergés, double cliquez sur la ligne Serveur par défaut.

Dans Serveur principal HTTP, sélectionnez Apache HTTP Server 2.4 et dans PHP, choisissez la version 7.4. Inutile de toucher au reste, vous pouvez valider.

Image description

2. Utilisation d’un hôte virtuel

Si vous préférez que chaque site utilise ses propres réglages (pour des raisons de compatibilité par exemple), vous devez alors créer un hôte virtuel.

Cliquez sur le bouton Créer en haut de la fenêtre, puis sur Créer un portail de service. Une fenêtre s’ouvre, sélectionnez Virtual Host.

Ici, il va falloir renseigner plusieurs infos :

  • Nom d’hôte - Le plus simple est de se baser sur un nom. Le nom fera partie de l’URL pour accéder à FreshRSS. Par exemple, supposons que vous utilisez le nom de domaine « monsite.fr » et que vous renseignez le nom « veille » pour l’hôte virtuel, alors l’adresse web sera monsite.fr/veille. Il semble pertinent d’opter pour un nom simple, mais qui vous parle.
  • Port - Libre à vous de laisser sélectionnés les ports par défaut (80/443) ou d’opter pour d’autres ports, ou encore de ne garder que le port 443 (HTTPS impératif).
  • Racine du document - cliquer sur Parcourir et sélectionner le dossier rss précédemment créé dans le dossier /web.
  • Serveur principal HTTP - Sélectionner Apache HTTP Server 2.4.
  • PHP - Sélectionner PHP 7.4.
  • Pour valider, cliquer sur Créer en bas à droite.

Base de données

Lors de l’installation de Maria DB 10, vous avez dû créer un mot de passe. Celui-ci va vous servir à accéder à l’interface d’administration phpMyAdmin. Ouvrez une nouvelle page sur l’adresse http://IP_locale/phpMyAdmin/ (remplacez bien IP_locale par l’adresse IP du NAS sur votre réseau !) puis connectez-vous avec le login root et le mot de passe précédemment créé.

Ensuite, il faut créer une base et un utilisateur :

  1. Cliquez sur Bases de données dans le menu en haut de la page ;
  2. Dans le champ Nom de la base de données, entrez un nom. J’ai opté pour rss (vous aurez normalement deviné à ce stade qu’il m’arrive de manquer cruellement d’imagination). Puis cliquez sur le bouton Créer.
  3. La page se recharge et vous vous trouvez sur l’onglet Structure. Dans le menu en haut, cliquez sur Privilèges.
  4. En bas de cette page, cliquez sur Ajouter un compte utilisateur.
  5. Ici, renseignez les informations suivantes :
  • Nom d’utilisateur : un nom de votre choix. Il ne s’agit pas de l’utilisateur de FreshRSS, mais d’un compte permettant à FreshRSS d’interagir avec la base de donnée.
  • Nom d’hôte : inscrivez localhost.
  • Mot de passe : choisissez un mot de passe robuste et, évidemment, notez-le. Vous pouvez utiliser le bouton Générer pour en créer un automatiquement. Dans le cadre Base de données pour ce compte utilisateur, assurez-vous que la ligne Donner tous les privilèges sur la base de données rss soit la seule cochée.
  1. Descendez et cliquez sur Exécuter.
  2. Vous pouvez fermer la page phpMyAdmin

FreshRSS

Copie des fichiers

Le plus gros du travail est fait ! Il faut maintenant récupérer les fichiers pour installer FreshRSS. Pour cela, rendez-vous sur le site et cliquez sur Download.

Vous obtenez un fichier FreshRSS-master.zip. Il faut décompresser le contenu dans le dossier /web/rss/ créé plus tôt.

Image description

Il faut maintenant retourner dans l’interface du NAS, puis ouvrir l’explorateur de fichier DS File. Naviguez alors dans le dossier /web/rss/ jusqu’à en voir le contenu. Là, faites un clic droit sur le sous-dossier /data puis cliquez sur Propriétés dans le menu qui s’affiche.

Dans la nouvelle fenêtre, ouvrez l’onglet Permission. Là, cliquez sur le bouton Créer pour afficher encore une autre fenêtre.

Dans celle-ci, tapez http dans le champs Utilisateur ou groupe. L’utilisateur http - system default group… va apparaitre, cochez la case pour le sélectionner.

Dans le cadre Permission en dessous, cochez la case Écrire, ce qui aura pour effet de cocher aussi toutes les cases liées à l’écriture du contenu. Cliquez sur Effectué pour valider, puis sur Sauvegarder dans la fenêtre suivante.

Image description

Vous pouvez maintenant fermer l’explorateur de fichier.

Installer FreshRSS

Ouvrez un nouvel onglet et rendez-vous à l’adresse http://IP_locale/rss/. Vous devriez obtenir l’interface graphique d’installation de FreshRSS. Il suffit alors de se laisser guider.

  1. Sélectionnez tout d’abord la langue
    Image description
  2. Sur l’étape suivante, l’installateur vérifie que toutes les conditions sont bien réunies pour poursuivre. Normalement, vous n’avez que des lignes vertes qui commencent par « Ok !».
  3. À l’étape suivante :
  • Type de base de données : sélectionner MySQL
  • Hôte : inscrire localhost.
  • Nom d’utilisateur pour base de données : inscrire le nom de l’utilisateur créé précédemment sur phpMyAdmin.
  • Mot de passe pour base de données : inscrire le mot de passe de l’utilisateur renseigné au-dessus.
  • Base de données : inscrire le nom de la base, rss dans l’exemple.
  • Préfixe des tables : vous pouvez laisser le champ vide. Si vous renseignez quelque chose, je pars du principe que vous savez ce que vous faites. Il ne reste plus qu’à valider.
  1. À l’étape suivante, vous allez créer le compte utilisateur principal (et administrateur) de votre FreshRSS. Choisissez le login de votre choix, ainsi qu’un mot de passe. Puis validez.
    Image description
  2. Félicitations ! Vous êtes arrivé au bout de l’installation. En cliquant sur terminer l’installation, le script va s’occuper des dernières étapes. Vous arriverez ensuite sur la page vous permettant de vous loguer en tant qu’utilisateur. À vous les flux RSS !

Image description

Et… si ça ne marche pas ?

Pour être tout à fait honnête, tout ne s’est pas aussi bien déroulé lors de mes premiers essais. J’ai rencontré principalement 1 souci qui semble particulièrement lié aux NAS Synology.

Au moment de finaliser l’installation de FreshRSS via l’interface graphique, je me suis retrouvé sur une page blanche. Après enquête, le log apache indiquait ceci : in /volume1/web/rss/lib/Minz/Log.php on line 62PHP message: PHP Fatal error: Uncaught BadFunctionCallException: @eaDir migration cannot be called. in /volume1/web/rss/lib/Minz/Migrator.php:172, referer: http://IP_locale/rss/p/i/?step=4

Grâce à l’aide des développeurs sur GitHub, il semble que le souci soit la présence d’un dossier caché /@eaDir. Ces dossiers sont automatiquement créés par le NAS afin de gérer des informations spécifiques comme l’indexation des fichiers, des droits d’accès, etc.

Le souci principal est qu’il n’est pas possible de prédire 1) quand ces dossiers sont créés et 2) pourquoi. Car ils n’apparaissent pas partout.

J’ai réussi à passer outre… en recommençant ! J’ai supprimé tout mon dossier /web/rss avant de le refaire, de copier à nouveau les fichiers de FreshRSS dedans puis de gérer les droits d’écriture HTTP depuis l’interface du NAS.

Il est également possible de gérer cela via SSH. Une fois connecté ainsi au NAS :

  1. Naviguer vers le dossier avec la commande $ cd /volume1/web/rss/ (je vous laisse adapter la fin selon le nom de votre dossier) ;
  2. Lancer ensuite la commande find . -name "@eaDir" -type d -print |while read FILENAME; do echo "${FILENAME}"; done pour lister toutes les occurrences de dossier /@eaDir dans tous les sous-dossiers ;
  3. Vérifier la liste pour s’assurer qu’il n’y a pas de faux positif ;
  4. Lancer la commande find . -name "@eaDir" -type d -print |while read FILENAME; do rm -rf "${FILENAME}" ; done pour supprimer les dossiers en question.

ATTENTION : il est impératif de lancer les commandes des étapes 2 et 4 depuis le dossier /volume1/web/rss. Dans le cas contraire, la commande supprimera ces dossiers ailleurs, ce qui pourrait gêner le fonctionnement du du NAS.

Ce souci a été remonté aux développeurs, il y a des chances que les futures mises à jour incluent un garde-fou pour cette situation.

Paramétrer la mise à jour des flux

Par défaut, FreshRSS ne met pas à jour les flux tout seul. Il existe plusieurs méthodes pour le faire (manuellement, via un cronjob, via une URL spéciale), mais il est bien plus pratique de créer une tâche planifiée qui va s’occuper de le faire automatiquement.

Pour cela, il faut retourner sur l’interface web du NAS, puis ouvrir le Panneau de configuration. Cliquez ensuite sur Planificateur de tâches.

Une fois la liste des tâches affichée, cliquez sur Créer en haut, puis sur Tâches planifiées et enfin Script défini par l’utilisateur.

Une nouvelle fenêtre s’ouvre, vous êtes dans l’onglet Général. Là, vous pouvez donner un nom dans le champ Tâche. Il s’agira ensuite de sélectionner un utilisateur : je vous recommande de choisir un compte administrateur (mais pas le compte root). Vérifiez que la case Activé est bien cochée, puis cliquez sur l’onglet Programmer.

Ici, vous pouvez décider de la fréquence à laquelle l’actualisation des flux RSS se fera. J’ai personnellement opté pour une exécution quotidienne toutes les 30 minutes. Une fois vos options renseignées, cliquez sur l’onglet Paramètres de tâche.

La partie qui nous intéresse se trouve dans le cadre Script défini par l’utilisateur. Je vous invite à y inscrire la commande suivante : php74 /volume1/web/rss/app/actualize_script.php

php74 permet de déterminer avec quelle version de PHP le script doit être exécuté. C’est une subtilité importante, car si vous mettez php tout court, cela ne fonctionnera pas (la faute à la présence de plusieurs versions et à la façon dont le NAS les gère).

Pour l’adresse du script, prenez bien soin de la modifier selon le nom du dossier que vous avez choisi ! Mon dossier se nomme rss, ce n’est pas forcément le cas du vôtre.

Sur cette même page, vous pouvez également demander à envoyer une notification par mail lorsque la tâche s’exécute, voire uniquement lorsqu’elle rencontre une erreur.

Quand vous avez terminé, cliquez sur OK.


Et voilà ! Vous avez maintenant à disposition votre propre agrégateur RSS. Vous pouvez y ajouter les abonnements de votre choix (ou les importer depuis un autre agrégateur) et régler finement le fonctionnement de l’outil à votre convenance.

Notez que FreshRSS est compatible avec de nombreuses applications mobiles, j’utilise Reeder 5 sur iOS et cela fonctionne bien.

Cet article a été mis à jour le 22.01.03