Mise en œuvre de l’agrégateur de flux FreshRSS

Comme je ne suis pas parvenu à installer Tiny Tiny RSS sur mon serveur, il m’a fallu changer de crèmerie. Les délires des développeurs à vouloir nous faire utiliser Docker font que les installations sont de plus en plus compliquées, rendant les produits parfaitement inutilisables. Et personne ne pourra dire que je suis le bizu de service en matière d’infrastructure LAMP…

Du coup, j’ai opté pour l’agrégateur de flux Open Source FreshRSS, une solution d’une grande simplicité à installer que j’ai auto-hébergé sur mon serveur. L’intérêt de ce logiciel est de produire un flux que vous pouvez partager et intégrer dans votre agrégateur de flux RSS.

Mise en œuvre de l'agrégateur de flux FreshRSS

Téléchargement, installation, configuration de FreshRSS

Vous devez disposer dans votre environnement de production d’un serveur exécutant Apache, PHP et MariaDB, correctement installés et configurés.

Téléchargement, décompression, renommage de l’archive
cd /home/www
wget https://github.com/FreshRSS/FreshRSS/archive/latest.zip
unzip latest.zip
mv FreshRSS-latest freshrss
chown apache:apache freshrss -R
Création de la base de données freshrss

Après vous être connecté au moteur de bases de données MariaDB par l’interpréteur mariadb exécuté en ligne de commande, vous devez créer la base de données  et l’utilisateur ayant les droits sur la base :

CREATE DATABASE freshrss;
CREATE USER freshrss@localhost;
SET PASSWORD FOR freshrss@localhost=PASSWORD('xxxxxxxx');
GRANT ALL PRIVILEGES ON freshrss.* TO freshrss@localhost WITH GRANT OPTION;
EXIT;
Installation et configuration de FreshRSS

L’installation se fait à partir de votre navigateur en tapant l’url correspondant au répertoire de votre serveur que vous avez configuré à l’aide les directives VirtualHost du serveur Apache :

 Alias "/flux-rss" "/home/www/freshrss/p"

 L’installeur crée un fichier  ./data/config.php et un répertoire ./data/users/votre_compte_admin. Au cours de l’étape 1, choisissez la langue utilisée par FreshRSS.

Installation FreshRSS - Étape 1

L’étape 2 est une étape de contrôle de compatibilité du logiciel avec votre environnement de production.

Installation FreshRSS - Étape 2

Lors de l’étape 3, vous fournirez tous les informations permettant la connexion à la base de données créée précédemment.

Installation FreshRSS - Étape 3

A l’occasion de l’étape 4, vous devez déterminer les informations liées au compte administrateur.

Installation FreshRSS - Étape 4

Remarque sur la base de données

La base de données contient 6 tables par utilisateur.

Tables par utilisateur créées par FreshRSS

Utilisation du logiciel

Les flux doivent être ajoutés dans des catégories. Le logiciel est d’une grande simplicité !

FreshRSS > Gestion des abonnements

Actualisation des flux

J’ai créé une tâche planifiée sur mon serveur Linux Fedora Server pour actualiser les flux toutes les 15 minutes, en ajoutant à l’aide de la commande crontab -e :

*/15 * * * * /usr/bin/php -f /home/www/freshrss/app/actualize_script.php

Blacklists par EVENT MariaDB

Comme le logiciel ne propose pas nativement l’élimination de threads à partir de mots et d’expressions présentes dans le titre, à partir des de noms de domaines ainsi que la suppression des doublons à partir du titre, j’ai recouru à un EVENT configuré au niveau de MariaDB qui s’exécute toutes les 15 minutes :

DROP EVENT IF EXISTS clean_freshrss;
DELIMITER $$
CREATE EVENT clean_freshrss
    ON SCHEDULE EVERY 15 MINUTE STARTS '2024-02-21 07:55:00'
    ENABLE
    DO 
BEGIN
	DELETE FROM admin_entry
	WHERE title REGEXP "(^| |"")([lL]e [cC]oquelicot|[mM]anga|Naruto|[pP]aradis du fruit|Tinubu|[cC]ourts? de tennis|Geobacillus|Hengki|Harpy|Shaed|[dD]i|[dD]ella|[sS]ourds? du Niger|[pP]esticides?|[cC]onseils? d[’']arrondissements?|VOI|[hH]istoire d[’']amour|€ et plus|Super Ligue|FreshRSS|Le Shift recrute|[fF]ermeture de classe|[dD]rogue|[aA]lcool)($|\.|,|"")";
	DELETE FROM admin_entry
	WHERE link REGEXP "(/|\.)(amazon|biochemsafebuy|edmarkestateagency|gagadget|jbtools|lesahel|metatrone|resistancerepublicaine|tribunedelyon|uslandrecords)\.(com|fr|it|org)(/|$)";
	DELETE FROM admin_entry
	WHERE id IN
	(
		SELECT id FROM admin_entry
		WHERE title IN
		(
			SELECT title FROM admin_entry
			GROUP BY title
			HAVING COUNT(title)>1
		)
		EXCEPT
		SELECT MIN(id) FROM admin_entry
		GROUP BY title
		HAVING COUNT(title)>1
	);
END
$$
DELIMITER ;

FreshRSS /