FreshRSS installation avec Docker sur mon VPS Debian

By | 15 November 2018 |
Reading Time: 4 minutes

FreshRSS est un agrégateur (et lecteur) de flux rss et Atom, gratuit, que vous pouvez héberger (self-hostable)

Cet article décrit son installation sur un vps tournant sous Debian et comment vous pouvez en profiter sur votre ordinateur ou smartphone.

Fichier RSS ?

Les flux RSS sont des fichiers XML qui sont souvent utilisés par les sites d’actualité et les blogs pour présenter les titres des dernières articles disponibles.

Agrégateur, c’est quoi ça ?

Selon Wikipedia, un agrégateur est une sorte de “facteur” qui permet d’aller chercher les informations (dans notre cas les flux RSS) et de les déposer chez l’utilisateur.
Évitant ainsi à l’utilisateur de devoir se rendre sur différent sites afin de retrouver ces informations.

Self-hostable

Les flux rss, les agrégateurs, vous connaissez maintenant mais à quoi bon héberger ce service ? Vous pouvez lire ces flux dans votre client RSS préféré sans pour autant héberger le service…
Le but principal (enfin pour moi et mon utilisation) est d’avoir un endroit central afin de lire les différents flux et donc d’éviter de lire la même information plusieurs fois (par exemple sur votre ordinateur, sur votre smartphone, sur les réseaux sociaux, ..).
Avant d’installer FreshRSS, j’utilisais un client RSS pour certains flux et pour d’autres je profitais des réseaux sociaux (Goolge+, Facebook, Twitter, …) comme beaucoup d’articles sont postés sur ces réseaux.

Pourquoi changer ?

D’une part la fermeture annoncée de Google+, comme j’utilisais beaucoup ce réseau social pour me tenir au courant des derniers articles postés sur certains blogs.
D’autre part les inconvénients liés aux doublons et l’impression de lire plusieurs fois la même information. Cette impression étant renforcée sur les réseaux sociaux, par la remise en avant de l’article lorsque celui-ci est commenté par les utilisateurs.

Installation de FreshRSS

FreshRSS est disponible gratuitement sur GitHub, vous pouvez l’installer de la manière traditionnelle mais personnellement j’ai choisi d’utiliser le container docker par facilité.

Installation de docker

Si docker n’est pas (encore) installé sur votre VPS, vous pouvez l’installer avez les commandes suivantes:

$curl -fsSL https://get.docker.com/ -o get-docker.sh
$sh get-docker.sh

Lancé votre image docker de FreshRSS

Avant de lacné mon image, j’ai commencé par créer un répertoire pour FreshRSS

$mkdir FreshRSS
$cd FreshRSS

Et dans ce répertoire, j’en ai créé un autre afin d’y stocker les données

$mkdir -p ./data/

Finalement, j’ai lancé la commande suivante pour télécharger la dernière image docker de FreshRSS et démarrer le container:

$sudo docker run -d --restart unless-stopped --log-opt max-size=10m \
  -v $(pwd)/data:/var/www/FreshRSS/data \
  -e 'CRON_MIN=5,35' \
  -p 10080:80 \
  --name freshrss freshrss/freshrss

un petit mot sur les options utilisées:

  • -v permet de lié le répertoire data que je viens de créer avec le répertoire /var/www/FreshRSS/data de l’image docker
  • -e donne les minutes auxquelles les flux RSS seront rafraîchis ici toutes les heures 5 et 35, j’aurais pu écrire ‘*/30’ pour toutes les demi-heures. J’ai juste laissé l’option par défaut proposée.
  • -p donne le mapping entre le port sur l’host (mon vps) et l’image docker, par défaut c’est 8080:80. J’ai modifié le 8080 par 10080, pour atteindre mon serveur FreshRSS, il faut donc que je rentre l'<ip de mon VPS>:10080
  • freshrss/freshrss est le nom de l’image sur le hub docker et freshrss est le nom donné localement à ce container

Vérifions le status de notre container

Pour vérifier que mon container est bien lancé, je peux utiliser la commande

$docker ps

Qui devrait me lister les différents processus docker sur mon vps et leur status, j’ai pas fait le screenshot juste après le lancement du vps, c’est pour ça que vous voyer créé il y a 47 heures.

FreshRSS – docker ps

Firewall

Pour pouvoir accéder à mon installation, je dois maintenant ouvrir le port 10080 su le firewall, ce que je fais avec la commande suivante:

$ufw allow 10080

Accès à mon FreshRSS

Je peux vérifier que ça fonctionne en ouvrant mon navigateur préféré sur la page

http://<ip_du_vps>:10080

Ok ça marche, j’arrive bien sur la page de FreshRSS, mais..

  • l’adresse ip pour accéder mes flux, ça reste “bof”
  • le port 10080 je suis pas certain que je peux l’utiliser de n’importe où, au bureau par exemple c’est probablement fermé.

Nom de domaine

Pour régler le problème de l’adresse IP, il suffit d’ajouter un enregistrement de type ‘A’ dans la zone dns.
Par exemple l’entrée rss.malandra.be pointant sur l’ip du VPS.

Configuration Apache

Pour le port, comme j’ai déjà un serveur apache sur ce vps, j’ai créé un vhost qui se charge de rediriger le trafic entrant sur le port 80 et 443 vers le port 10080 et donc indirectement vers le port 80 de mon image docker.
Ca a l’air compliqué mais allons-y étape par étape

Création du virtual host (vhost):

$nano /etc/apache2/sites-available/freshrss.conf

J’y insère les lignes suivantes

VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName rss.malandra.be
    ServerAlias www.rss.malandra.be
    ErrorLog ${APACHE_LOG_DIR}/rss_error.log
    CustomLog ${APACHE_LOG_DIR}/rss_access.log combined

    <Location />
        Order allow,deny
        Allow from All
        Require all granted
    </Location>

    <Proxy *>
        Allow from localhost
    </Proxy>
    ProxyPass / http://localhost:10080/
    ProxyPassReverse / http://localhost:10080/

</VirtualHost>

Redirection http vers https

Tant qu’on y, autant rediriger le traffic http (port 80) en https (port 443)

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName rss.malandra.be
    ServerAlias www.rss.malandra.be
    Redirect 301 / https://rss.malandra.be/

</VirtualHost>

<VirtualHost *:443>

    ServerAdmin [email protected]
    ServerName rss.malandra.be
    ServerAlias www.rss.malandra.be
    Protocols h2 http/1.1
    ErrorLog ${APACHE_LOG_DIR}/rss_error.log
    CustomLog ${APACHE_LOG_DIR}/rss_access.log combined

    <Location />
        Order allow,deny
        Allow from All
        Require all granted
    </Location>

    <Proxy *>
        Allow from localhost
    </Proxy>
    ProxyPass / http://localhost:10080/
    ProxyPassReverse / http://localhost:10080/

    Include /etc/letsencrypt/options-ssl-apache.conf
    SSLCertificateFile /etc/letsencrypt/live/rss.malandra.be/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/rss.malandra.be/privkey.pem
</VirtualHost>

Générons le certificat let’s encrypt

$certbot certonly -d rss.malandra.be

Activons le virtual host

$a2ensite freshrss.conf

Vérifions notre configuration:

$apachectl configtest

Rechargeons apache:

$service apache2 reload

Refermons le firewall

Finalement, fermons le port 10080 sur le vps, comme nous accédons maintenant à FreshRSS via le port https (http automatiquement redirigé vers https)

$ufw delete allow 10080

Comment lire les flux

Et oui car le but à la fin c’est quand même de les lire..
Après configuration de FreshRSS et ajout de vos flux préférés.
Vous pouvez les lire directement avec le lecteur intégré à FreshRSS depuis votre navigateur internet sur votre ordinateur ou smartphone, vous pouvez également utilisez des clients RSS.
Sur le pc j’utilise FeedReader sur le smartphone android j’utilise FeedMe.

Conclusions

Après quelques jours d’utilisations, je suis satisfait de cette nouvelle “configuration” qui m’évite de lire et relire les mêmes informations et m’évite les distractions des réseaux sociaux.

Petit bémol toute fois à signaler les favoris mis sur FeedReader ne sont pas transférer sur FreshRSS et donc pas centralisés.
Les favoris mis via le lecteur de FreshRSS ou FeedMe sont eux bien distribués (même vers FeedReader).

Laisser un commentaire

This site uses Akismet to reduce spam. Learn how your comment data is processed.