Abstract teal and amber illustration representing FreshRSS, a self-hosted RSS and Atom feed aggregator

FreshRSS

FreshRSS

FreshRSS est un agrégateur de flux RSS et Atom à auto-héberger : on lui indique les sites, podcasts et chaînes vidéo à suivre, et il rassemble chaque nouvel article dans un tableau de bord unique et sans publicité, plutôt que de les laisser s’éparpiller dans une dizaine d’onglets de navigateur. C’est une application PHP légère qui tourne sans effort dans un seul conteneur Docker avec une base SQLite intégrée, pensée multi-utilisateur dès le départ, avec un mode de lecture anonyme et une traduction en plus de 20 langues. Pour qui veut un vrai lecteur RSS maintenant que Google Reader a disparu depuis plus d’une décennie, FreshRSS est en général le premier nom auto-hébergé qui revient dans la conversation.

Licence : FreshRSS est distribué sous licence GNU Affero General Public License v3.0 (AGPL-3.0), confirmée directement depuis le fichier LICENSE.txt du dépôt GitHub FreshRSS/FreshRSS, pas déduite d’un badge.

En bref : site officiel freshrss.org · GitHub FreshRSS/FreshRSS, 15 000+ étoiles · version actuelle 1.29.0 · image Docker freshrss/freshrss sur Docker Hub, également miroitée sur ghcr.io/freshrss/freshrss.

Pourquoi auto-héberger un lecteur RSS ?

Le RSS lui-même n’a jamais disparu, ce sont les lecteurs construits autour qui ont fermé boutique. Google Reader a mis la clé sous la porte en 2013 et a emporté une bonne partie de l’écosystème avec lui, et plus récemment Feedly et Inoreader poussent les utilisateurs occasionnels vers des formules payantes pour des fonctions qui étaient gratuites auparavant. Un lecteur RSS auto-hébergé évite ces deux écueils à la fois : personne ne peut arrêter FreshRSS du jour au lendemain, aucune entreprise ne profile ce que vous lisez, et il n’existe pas de limite d’abonnements au-delà de ce que votre propre serveur peut encaisser. La page officielle du projet le présente d’ailleurs sans détour comme une alternative légère et personnalisable à ces lecteurs hébergés, et ses plus de 15 000 étoiles GitHub suggèrent que beaucoup de monde a fait le même arbitrage.

Ce que FreshRSS fait vraiment

FreshRSS couvre plus de terrain qu’un lecteur de flux classique. Le support multi-utilisateur permet à une seule instance de servir tout un foyer, chacun avec ses flux privés, avec en plus un mode de lecture anonyme en lecture seule pour partager une vue publique. Son moteur de web scraping intégré génère un flux à partir de règles XPath pour les sites qui n’ont jamais publié le moindre RSS ou Atom, et il comprend aussi les flux JSON. Via le standard WebSub (anciennement PubSubHubbub), FreshRSS peut recevoir des mises à jour poussées instantanément par des sources compatibles comme WordPress ou Medium, au lieu d’attendre le prochain sondage. Une couche API qui parle à la fois le protocole Google Reader et l’API Fever permet à des applications mobiles comme Capy Reader, Read You ou Reeder de se connecter directement à une instance auto-hébergée plutôt qu’au cloud d’une entreprise. Extensions, webhooks et import/export OPML complètent l’ensemble pour quiconque migre depuis Feedly ou Inoreader.

Installer FreshRSS avec Docker

Le projet publie une image officielle sur Docker Hub. FreshRSS embarque une base SQLite par défaut, avec de bonnes performances et aucun conteneur de base de données séparé à provisionner pour un foyer unique. PostgreSQL, MariaDB et MySQL restent une option pour les configurations multi-utilisateurs plus lourdes. Un docker-compose.yml reste la manière la plus propre de le faire tourner sur la durée :

services:
  freshrss:
    image: freshrss/freshrss:latest
    container_name: freshrss
    restart: unless-stopped
    volumes:
      - data:/var/www/FreshRSS/data
      - extensions:/var/www/FreshRSS/extensions
    ports:
      - "8080:80"
    environment:
      TZ: Europe/Paris
      CRON_MIN: '2,32'

volumes:
  data:
  extensions:
docker compose up -d

Direction ensuite http://votre-ip-serveur:8080 pour terminer l’installation via l’assistant web, ou passez directement par la CLI intégrée.

Ne négligez pas CRON_MIN. FreshRSS ne rafraîchit pas ses flux tout seul si rien ne le lui demande explicitement. La variable d’environnement CRON_MIN active un démon cron intégré au conteneur, aux minutes que vous précisez ; laissez-la de côté, et les flux ne se mettent à jour que lorsqu’un utilisateur connecté charge la page. Une tâche cron côté hôte qui appelle actualize_script.php marche tout aussi bien, mais la variable d’environnement reste la plus simple des trois méthodes de rafraîchissement officiellement prises en charge.

Premier lancement

  • Ouvrez http://votre-ip-serveur:8080 et suivez l’assistant d’installation : choisissez une base de données (SQLite convient pour un foyer), puis créez le premier compte administrateur.
  • Ou sautez complètement l’assistant et installez en ligne de commande avec cli/do-install.php et cli/create-user.php.
  • Importez les abonnements existants depuis un fichier OPML exporté par Feedly, Inoreader ou un autre lecteur, sous Gestion des abonnements → Import/export.
  • Connectez une application mobile via l’API Google Reader dès que possible : c’est la mieux supportée et la plus capable des deux API proposées par FreshRSS.

Matériel : la documentation de FreshRSS revendique elle-même un fonctionnement sur Raspberry Pi 1 avec des temps de réponse sous la seconde pour 150 flux et 22 000 articles : ce n’est donc pas une application gourmande. Un cœur de CPU disponible et quelques centaines de Mo de RAM suffisent largement pour une instance personnelle ou familiale. Notre guide de démarrage homelab pour débutants couvre le choix du matériel pour la pile dans son ensemble.

Cas d’usage homelab

Il n’y a pas de HTTPS à l’intérieur du conteneur par défaut, un reverse proxy est donc l’étape suivante logique avant d’exposer FreshRSS au-delà du réseau local : associez-le à Traefik ou Caddy pour obtenir des certificats HTTPS automatiques, le même schéma que sur la plupart des piles Docker de ce site. Portainer mérite aussi sa place à côté, une façon visuelle de consulter les logs et de redémarrer le conteneur sans passer par SSH. Les foyers qui font déjà tourner Nextcloud pour leurs fichiers ou Vaultwarden pour leurs mots de passe ont tendance à ajouter FreshRSS ensuite : c’est la même catégorie de petit service peu gourmand en maintenance, qui se rentabilise dès qu’une entreprise ferme le lecteur cloud que vous utilisiez jusque-là.

FreshRSS : avantages et inconvénients

  • Gratuit et entièrement open source sous AGPL-3.0, aucune offre payante ni fonctionnalité verrouillée
  • Tourne dans un seul conteneur avec une base SQLite intégrée, rien de plus à provisionner pour un premier déploiement
  • Le web scraping natif transforme les sites sans flux en abonnements fonctionnels
  • Large écosystème d’applications mobiles grâce aux API Google Reader et Fever
  • Aucun rafraîchissement tant qu’une des trois méthodes cron prises en charge n’est pas configurée
  • Pas de HTTPS prêt à l’emploi, un reverse proxy devient quasiment indispensable au-delà du localhost
  • La pile PHP/Apache est plus lourde que des alternatives en Go comme Miniflux
  • L’administration multi-utilisateur reste plus manuelle que sur un service hébergé comme Feedly

FreshRSS vs Miniflux

Miniflux est l’autre nom qui revient sans cesse à côté de FreshRSS dans les cercles RSS auto-hébergés : un unique binaire Go statique plutôt qu’une application PHP, une interface volontairement minimaliste, et PostgreSQL comme seule base de données prise en charge. FreshRSS échange une partie de ce minimalisme contre davantage de fonctions intégrées, web scraping pour les sites sans flux, extensions, et un assistant d’installation plus accessible avec SQLite disponible d’emblée. Aucun des deux n’est objectivement meilleur : FreshRSS convient à qui veut un ensemble de fonctionnalités plus complet et une installation guidée par interface, Miniflux convient à qui veut l’empreinte la plus réduite possible et n’est pas gêné de faire tourner PostgreSQL pour l’obtenir. Une comparaison complète, côte à côte, se trouve dans la fiche dédiée à Miniflux sur ce site.

FAQ

FreshRSS est-il gratuit ?

Oui. Il est distribué sous licence AGPL-3.0 avec le code source complet sur GitHub, sans offre payante, sans fonctionnalité verrouillée derrière un paywall, et sans compte requis pour l’auto-héberger.

FreshRSS a-t-il besoin d’un serveur de base de données séparé ?

Pas par défaut. Il embarque une base SQLite intégrée, que le projet recommande lui-même pour de bonnes performances sur une instance personnelle ou familiale. PostgreSQL, MariaDB ou MySQL sont pris en charge si vous prévoyez beaucoup d’utilisateurs ou de flux.

Pourquoi mes flux ne se mettent-ils pas à jour automatiquement ?

Rien ne sonde les flux selon un planning tant qu’une méthode de rafraîchissement n’est pas configurée. Passer la variable d’environnement CRON_MIN à l’image Docker est la plus simple des trois options prises en charge ; sans elle, les flux ne se rafraîchissent que lorsqu’un utilisateur connecté charge la page.

FreshRSS est-il meilleur que Miniflux ?

Aucun des deux n’est strictement meilleur. FreshRSS propose davantage de fonctionnalités intégrées, web scraping, extensions, assistant d’installation graphique, tandis que Miniflux est un binaire Go plus petit, plus rapide, avec une interface plus minimaliste. Les deux sont gratuits, open source et activement maintenus.

FreshRSS reste l’une des façons les moins contraignantes de reprendre la main sur une habitude RSS qui dépendait autrefois du lecteur cloud d’une entreprise. Notre guide de démarrage homelab pour débutants couvre les bases Docker dont il dépend, et une fois qu’il tourne derrière Traefik ou Caddy avec Portainer qui surveille le conteneur, s’en occuper devient une corvée hebdomadaire de cinq minutes tout au plus. La catégorie Docker & Containers regroupe le reste de l’outillage présenté ici.