Tropic Host

FreshRSS : qu’est-ce que c’est et comment l’installer sur un VPS

7 min de lecture
Tropic
FreshRSS : qu’est-ce que c’est et comment l’installer sur un VPS

FreshRSS : votre propre fil d’actualités sans algorithmes

Les réseaux sociaux décident eux-mêmes quelles publications afficher en premier. Une mise à jour importante d’un projet peut donc facilement passer inaperçue, remplacée par des dizaines de recommandations. FreshRSS fonctionne autrement : vous choisissez les sources, et les nouveaux contenus apparaissent dans un seul fil chronologique.

FreshRSS peut être installé sur votre propre serveur et servir de boîte de réception unique pour les blogs, les actualités, les mises à jour de logiciels, les forums, les podcasts et d’autres sources proposant un flux RSS ou Atom. Nous allons examiner les fonctions de l’application, les ressources nécessaires et son installation sur un VPS avec Docker et HTTPS.

FreshRSS en cinq étapes

  1. Créer un VPS Linux et faire pointer un sous-domaine vers celui-ci, par exemple rss.example.com.
  2. Installer Docker et Docker Compose.
  3. Lancer FreshRSS avec Caddy afin d’obtenir HTTPS automatiquement.
  4. Ouvrir le sous-domaine, choisir SQLite et créer un compte.
  5. Importer les abonnements depuis un fichier OPML ou ajouter les sites manuellement.

Le VPS vérifiera ensuite les sources selon le calendrier défini, même lorsque l’ordinateur de l’utilisateur est éteint.

Qu’est-ce que FreshRSS ?

FreshRSS est un agrégateur RSS et Atom gratuit et auto-hébergé. Auto-hébergé signifie que l’application et la base de données fonctionnent sur un serveur que vous contrôlez, et non dans l’infrastructure d’un service cloud.

Un flux RSS est un fichier spécial qu’un site met à jour lorsqu’un nouveau contenu est publié. FreshRSS récupère régulièrement ces fichiers auprès des sources sélectionnées et rassemble leurs articles dans une seule interface. Les articles non lus, les favoris et l’historique de lecture sont synchronisés entre les appareils.

Le principe est simple : l’utilisateur choisit lui-même qui suivre et dans quel ordre consulter les publications. FreshRSS ne classe pas les articles selon leur engagement et n’insère pas de contenu recommandé entre les abonnements.

Fonctionnalités de FreshRSS

FonctionnalitéUtilité
Catégories, statuts et favorisSéparer les sources professionnelles, techniques et personnelles
Recherche, filtres et requêtes enregistréesN’afficher que les publications correspondant à un sujet précis
Importation et exportation OPMLTransférer rapidement une liste d’abonnements
Google Reader API et Fever APIConnecter des applications compatibles sur téléphone et ordinateur
WebSubRecevoir les articles immédiatement après leur publication depuis les sources compatibles
Plusieurs utilisateursCréer des comptes distincts pour une famille ou une équipe
Thèmes et extensionsModifier l’interface et ajouter des fonctions
XPath et JSON FeedS’abonner à certaines sources ne disposant pas d’un flux RSS ou Atom classique

Une requête enregistrée peut devenir un fil thématique distinct, par exemple uniquement consacré à la sécurité ou aux mises à jour d’un produit précis. Le résultat peut être consulté dans FreshRSS ou publié au format HTML ou RSS ; les listes de flux peuvent également être proposées au format OPML.

WebSub permet à un site compatible d’informer directement FreshRSS de la publication d’un nouvel article, sans attendre la prochaine vérification planifiée. Pour cela, l’instance doit être accessible depuis Internet à une adresse publique valide.

FreshRSS est particulièrement pratique pour les développeurs et les administrateurs : il permet de réunir dans un seul fil les blogs de projets, les nouvelles versions, les rapports d’incident et les publications de sécurité. Pour la lecture quotidienne, il remplace des dizaines d’onglets ouverts et conserve un statut « lu » exact sur tous les appareils.

Quelles ressources faut-il pour FreshRSS ?

FreshRSS consomme peu de ressources. Il prend en charge SQLite, PostgreSQL, MariaDB et MySQL ; une installation manuelle nécessite également un serveur web et PHP 8.1 ou une version plus récente. La description officielle mentionne même un test réalisé sur un Raspberry Pi 1 avec 150 flux et 22 000 articles.

Configurations de départ pratiques :

ScénarioCPURAMStockageBase de données
Fil personnel1 vCPU1 GoSSD de 10 à 20 GoSQLite
Famille ou petite équipe1 à 2 vCPU2 GoSSD de 20 à 40 GoSQLite ou base de données externe
Nombreux utilisateurs et grande archiveÀ partir de 2 vCPUÀ partir de 4 GoSSD à partir de 40 GoPostgreSQL ou MariaDB

Il s’agit de repères et non de minimums stricts. L’espace disque nécessaire dépend du nombre de sources, de la fréquence des publications et de la durée de conservation de l’historique. Un VPS est plus pratique qu’un ordinateur domestique si vous avez besoin de mises à jour continues, d’un accès extérieur, d’une synchronisation mobile et de WebSub.

Comment installer FreshRSS sur un VPS avec Docker

Dans la configuration ci-dessous, FreshRSS fonctionne derrière Caddy. Caddy reçoit les requêtes externes et obtient automatiquement un certificat TLS.

Vous aurez besoin d’un VPS Linux, de Docker installé avec la commande docker compose, d’un sous-domaine doté d’un enregistrement A pointant vers l’adresse IP du serveur, ainsi que des ports 80 et 443 ouverts.

Étape 1. Créez un répertoire

sudo mkdir -p /opt/freshrss
sudo chown "$USER":"$USER" /opt/freshrss
cd /opt/freshrss

Étape 2. Créez compose.yaml

services:
  freshrss:
    image: freshrss/freshrss:latest
    container_name: freshrss
    restart: unless-stopped
    logging:
      options:
        max-size: 10m
    environment:
      TZ: Etc/UTC
      CRON_MIN: '3,33'
      FRESHRSS_ENV: production
      TRUSTED_PROXY: 172.16.0.0/12
    volumes:
      - freshrss_data:/var/www/FreshRSS/data
      - freshrss_extensions:/var/www/FreshRSS/extensions

  caddy:
    image: caddy:2
    container_name: freshrss-caddy
    restart: unless-stopped
    depends_on:
      - freshrss
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile:ro
      - caddy_data:/data
      - caddy_config:/config

volumes:
  freshrss_data:
  freshrss_extensions:
  caddy_data:
  caddy_config:

CRON_MIN: '3,33' lance la vérification des flux à la 3e et à la 33e minute de chaque heure. FreshRSS ne met pas à jour un même flux plus souvent qu’environ toutes les 20 minutes ; une exécution plus fréquente est donc généralement inutile.

Étape 3. Créez Caddyfile

rss.example.com {
    reverse_proxy freshrss:80
}

Remplacez le domaine par le vôtre. Une fois l’enregistrement DNS propagé et les ports accessibles, Caddy obtiendra et renouvellera automatiquement le certificat.

Étape 4. Lancez FreshRSS

docker compose up -d
docker compose ps

Vous pouvez consulter les journaux avec la commande suivante :

docker compose logs -f --tail=100

Ouvrez https://rss.example.com. L’assistant d’installation vérifiera l’environnement, vous proposera de choisir une base de données et de créer le premier utilisateur. Pour un serveur personnel, SQLite est le choix le plus simple, car aucun conteneur de base de données séparé n’est nécessaire.

Configuration initiale

FreshRSS parvient souvent à détecter un flux RSS ou Atom à partir de l’adresse normale d’un site. Si la détection automatique ne fonctionne pas, saisissez l’URL directe du flux. Les abonnements de Feedly, Inoreader et d’autres lecteurs peuvent être transférés facilement grâce au format OPML.

Classez immédiatement les sources dans des catégories, par exemple « indispensable », « travail », « sécurité », « articles longs » et « lecture secondaire ». Les sites d’actualité publiant très souvent ne doivent pas repousser les mises à jour réellement importantes hors du fil principal.

Pour connecter une application, activez l’API dans les paramètres d’authentification et définissez un mot de passe API distinct dans le profil. L’adresse de l’API Google Reader se présente ainsi :

https://rss.example.com/api/greader.php

Il est préférable de ne pas utiliser le même mot de passe pour le compte principal et l’API.

Comment ne pas se noyer dans les articles non lus

FreshRSS devient réellement utile après quelques réglages :

  • ne conserver que les sources importantes dans le fil principal ;
  • utiliser des filtres pour marquer automatiquement comme lues les rubriques inutiles ;
  • enregistrer des recherches portant sur des produits, des auteurs et des sujets ;
  • consulter régulièrement les statistiques et supprimer les sources qui ne créent que du bruit.

Les extensions peuvent ajouter une estimation du temps de lecture, la mise en évidence de mots, le proxy des images, l’intégration de YouTube, des notifications webhook et la classification des articles à l’aide d’une API LLM compatible. N’installez des extensions tierces que depuis des sources fiables.

Mises à jour, sécurité et sauvegardes

Pour mettre les conteneurs à jour, exécutez :

cd /opt/freshrss
docker compose pull
docker compose up -d

Effectuez une sauvegarde avant toute mise à jour importante. Le volume freshrss_data contient les paramètres des utilisateurs et, avec SQLite, la base des articles. Sauvegardez également freshrss_extensions si vous utilisez des extensions. PostgreSQL, MariaDB et MySQL nécessitent un dump distinct de la base de données.

Mesures de sécurité minimales :

  • utiliser HTTPS ;
  • désactiver l’inscription ouverte après la création des comptes ;
  • ne pas activer l’accès anonyme sans nécessité ;
  • utiliser un mot de passe API distinct ;
  • mettre régulièrement à jour FreshRSS et ses extensions ;
  • conserver une sauvegarde en dehors du VPS.

Une exportation OPML ne remplace pas une sauvegarde complète, mais elle permet de restaurer rapidement la liste des abonnements dans n’importe quel lecteur RSS compatible.

FreshRSS sur un VPS de tropic.host

FreshRSS constitue un bon premier service auto-hébergé : il consomme peu de ressources, fonctionne dans Docker et devient immédiatement utile après l’importation des abonnements. Un VPS public assure la mise à jour des flux 24 h/24 et 7 j/7, l’accès depuis un téléphone et le bon fonctionnement de WebSub.

Une petite configuration Linux suffit généralement pour une installation personnelle. Sur tropic.host, vous pouvez attribuer un sous-domaine distinct à FreshRSS, commencer avec un VPS d’entrée de gamme et conserver le service indépendamment de votre ordinateur domestique. Lors du choix d’une offre, la stabilité, l’espace destiné aux archives et les sauvegardes comptent davantage qu’une grande réserve de puissance processeur.

Conclusion

FreshRSS transforme des dizaines de sites en un fil personnel facile à gérer, sans classement algorithmique. Il prend en charge les clients mobiles, les filtres, les requêtes enregistrées, plusieurs utilisateurs, WebSub et les extensions, tout en restant suffisamment léger pour un petit VPS.

Pour commencer, il suffit de disposer de Docker, d’un domaine et de SQLite. Après l’installation, configurez les catégories, les mises à jour automatiques, HTTPS et les sauvegardes. FreshRSS n’affichera alors que les sources choisies et laissera à l’utilisateur le contrôle de sa lecture.

FAQ

FreshRSS est-il gratuit ?

Oui. FreshRSS est distribué sous licence AGPL-3.0. Seule l’infrastructure est payante si l’application fonctionne sur un VPS loué.

Peut-on utiliser FreshRSS sans nom de domaine ?

Oui, en publiant le port du conteneur. Pour une utilisation permanente, il est préférable de configurer un domaine et HTTPS : cela simplifie l’accès sécurisé, la synchronisation mobile et WebSub.

De combien de mémoire vive FreshRSS a-t-il besoin ?

Pour un fil personnel, il est raisonnable de commencer avec 1 Go de RAM et SQLite. Une grande archive, plusieurs utilisateurs ou des services supplémentaires demanderont davantage de mémoire.

Peut-on ajouter un site sans RSS ?

Parfois. FreshRSS prend en charge le web scraping avec XPath, mais les règles doivent être configurées manuellement. Si la mise en page du site change, cette source peut nécessiter une correction.

Que faut-il absolument sauvegarder ?

En priorité, le volume freshrss_data : avec SQLite, il contient la base des articles. Sauvegardez également freshrss_extensions et créez des dumps de toute base de données externe.