FreshRSS

Qu’est-ce que FreshRSS ?

FreshRSS est un agrégateur de flux RSS. En gros, ça permet de mettre ses flux RSS dessus, et d’avoir toutes les informations au même endroit. Ça fait un moment que je veux faire un truc comme ça pour faire ma veille, c’est l’occasion.

Installation

Toute l’installation est décrite sur leur site. Je l’ai pas mal tweaker pour qu’elle s’adapte à mes besoins ainsi qu’à ma sécurité.

cd /usr/share/
git clone https://github.com/FreshRSS/FreshRSS.git
cd FreshRSS
git checkout tags/1.24.1 #Last release
ln -s /usr/share/FreshRSS/p /var/www/rss
chown www-data:www-data data/ -R

Configuration

Génération des certificats

On a ici besoin d’un simple petit certificat web server :

SERVER;rss.prj.luclis.fr;Roubaix;adminca@luclis.fr;ext.prj.luclis.fr;rss.luclis.fr;;Certificat pour FreshRSS

On créer le certificat, puis on l’envoie là où il faut :

cp /srv/IGC/luclis.fr/delegated_ca/private/budget.prj.luclis.fr.key /etc/ssl/private/rss.luclis.fr.key;
cat /srv/IGC/luclis.fr/delegated_ca/public/budget.prj.luclis.fr.pem /srv/IGC/luclis.fr/delegated_ca/public/ca_chain.pem | tee /etc/ssl/public/rss.luclis.fr_chain.pem;

Configuration du serveur web

Le principe est d’y avoir accès depuis n’importe ou, donc par web ! La configuration Nginx :

#RSS nginx conf
server {
  listen 80;
  http2 on;
  server_name  rss.luclis.fr srvprj02ovh.luclis.fr;
  return 301 https://$host$request_uri;
}

server {
        #listen 443 quic reuseport;
        listen 443 ssl;
        http2 on;

  server_name  rss.luclis.fr srvprj02ovh.luclis.fr;
  ssl_certificate     /etc/ssl/public/rss.luclis.fr_chain.pem;
  ssl_certificate_key /etc/ssl/private/rss.luclis.fr.key;
  # ssl_password_file   /etc/ssl/private/rss.luclis.fr.pass;

  #Enable QUIC and http/3
  #ssl_quic on;
  ssl_early_data on;

  #Fichier de logs
  access_log /var/log/nginx/rss_access.log;
  error_log  /var/log/nginx/rss_error.log;

  # Path to the root of your installation
  root /var/www/rss;
  limit_req zone=flood burst=50;

  # Add headers to serve security related headers
  add_header Alt-Svc 'h3=":$server_port"; ma=86400';
#  add_header Strict-Transport-Security "max-age=15552000; includeSubDomains; preload;";
  add_header Referrer-Policy                   "no-referrer"   always;
  add_header X-Content-Type-Options            "nosniff"       always;
  add_header X-Download-Options                "noopen"        always;
  add_header X-Frame-Options                   "SAMEORIGIN"    always;
  add_header X-Permitted-Cross-Domain-Policies "none"          always;
  add_header X-Robots-Tag              "noindex, nofollow"     always;
  add_header X-XSS-Protection                  "1; mode=block" always;
  fastcgi_hide_header X-Powered-By;

  # php files handling
  # this regex is mandatory because of the API
  location ~ ^.+?\.php(/.*)?$ {
    fastcgi_pass php-handler;
    fastcgi_split_path_info ^(.+\.php)(/.*)$;
    set $path_info $fastcgi_path_info;
    fastcgi_param PATH_INFO $path_info;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  }

  location / {
    try_files $uri $uri/ index.php;
  }
}

Et on redémmare nginx

systemctl restart nginx

Création de l’entrée DNS

Comme je ne souhaite pas exposer le service en externe, je vais créer mes entrées DNS dans mon samba uniquement.

samba-tool dns add srvprj02ovh.luclis.fr luclis.fr rss.luclis.fr  CNAME srvprj02ovh.luclis.fr

Configuration de la base de donnée

FreshRSS a besoin d’une base de donnée. On la configure : Penser à changer le mot de passe

mariadb -u root -p
CREATE USER 'rss'@'localhost' IDENTIFIED BY '<password>';
CREATE DATABASE `rssDB`;
GRANT ALL privileges ON `rssDB`.* TO 'rss'@localhost;
FLUSH PRIVILEGES;
QUIT;

Sécurisation

Utilisation

Pour utiliser FreshRSS, il suffit de se rendre sur la page web associée. Après, c’est plus ou moins du clic party. Rien de bien extra-ordinaire. On verra si je le garde.

TroubleShooting