Dans ce post je vais vous expliquer comment est-ce que j’ai fais l’installation de FreshRSS dans mon infrastructure. Tout d’abord FreshRSS est un agrégateur de liens RSS, celui-ci nous permet donc de centraliser toutes les news des sites d’actualités qui nous intéresse du moment qu’ils fournissent un lien de type RSS. Pour l’installer on a différent moyens possibles, on peut l’installer depuis les sources en brut sur la machine, ou utiliser une VM et faire la même chose. Ou utilisé Docker donc des conteneurs.
Installation et configuration
Docker
Pour installer Docker et Docker compose veuillez faire ces commandes sur un système Debian (De préférence la dernière version distribuée par Debian) :
mkdir /root/.docker
echo "{}" > /root/.docker/config.json
apt install -y curl gnupg lsb-release vim rsync btrfs-progs
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
apt update && apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
systemctl enable --now docker
Création d’un utilisateur dédié
Ici l’installation est faite directement en root, pour des raisons de sécurités utilisez un utilisateur dédié pour Docker :
usermod -aG wheel,docker myuser
su - myuser
mkdir /home/myuser/.docker
echo "{}" > /home/myuser/.docker/config.json
Essai
Pour vérifier si Docker est bien installer faites cette commande :
docker run hello-world
Installation de FreshRSS
Pour installer FreshRSS, j’utilise Docker compose, il lui faut une base de donnée pour fonctionner. J’utilise un conteneur avec MariaDB. Pour se faire on va créer plusieurs dossier et le fichier docker-compose.yml :
mkdir Docker && mkdir Docker/applications && touch docker-compose.yml
cd Docker
Maintenant on vient configurer nos conteneurs, voici le fichier docker-compose.yml au complet :
version: "3.9"
services:
freshrss:
image: lscr.io/linuxserver/freshrss:latest
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Paris
volumes:
- ./applications/freshrss:/config
restart: always
labels:
- "com.centurylinklabs.watchtower.enable=true"
networks:
- internet
- no-internet
mariadb:
image: lscr.io/linuxserver/mariadb:latest
environment:
- PUID=1000
- PGID=1000
- "MYSQL_ROOT_PASSWORD=MYSQLROOTPASSWORD"
- TZ=Europe/Paris
volumes:
- ./applications/databases/mariadb:/config
restart: always
networks:
- no-internet
watchtower:
image: containrrr/watchtower
restart: always
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /root/.docker/config.json:/config.json
command: --label-enable --cleanup --interval 300
labels:
- "com.centurylinklabs.watchtower.enable=true"
networks:
no-internet:
driver: bridge
internal: true
internet:
driver: bridge
enable_ipv6: true
ipam:
config:
- subnet: "fd00:dead:beef::/48"
Ici, vous avez uniquement la configuration côté conteneurs. Vous devez avoir un serveur web avec un reverse proxy comme NGINX ou Apache. Personnellement j’utilise NGINX, voici ma configuration :
server {
listen 8443 ssl;
listen [::]:8443 ssl;
http2 on;
server_name rss.patchli.fr;
access_log /var/log/nginx/patchli.fr/freshrss/access.log;
error_log /var/log/nginx/patchli.fr/freshrss/error.log;
ssl_certificate /etc/nginx/ssl/patchli.fr_ecc/fullchain.cer;
ssl_certificate_key /etc/nginx/ssl/patchli.fr_ecc/patchli.fr.key;
ssl_stapling_file /etc/nginx/ocsp_staple/patchli.fr_ecc.der;
include includes/custom_error_pages.conf;
include includes/common_headers.conf;
include includes/HSTS-preload.conf;
set $upstream freshrss:80;
location / {
proxy_pass http://$upstream;
proxy_hide_header X-Powered-By;
}
}
server {
listen 8080;
listen [::]:8080;
server_name rss.patchli.fr;
return 301 https://$server_name$request_uri;
}
Cette configuration est celle que j’utilise sur mon second reverse proxy (SAKUYA). Et maintenant, voici la configuration utilisée sur mon premier reverse proxy (YOHANE) :
server {
listen 8443 ssl;
listen [::]:8443 ssl;
http2 on;
server_name rss.patchli.fr;
access_log /var/log/nginx/frieren/rss/access.log;
error_log /var/log/nginx/frieren/rss/error.log;
ssl_certificate /etc/nginx/ssl/patchli.fr_ecc/fullchain.cer;
ssl_certificate_key /etc/nginx/ssl/patchli.fr_ecc/patchli.fr.key;
ssl_stapling_file /etc/nginx/ocsp_staple/patchli.fr_ecc.der;
include includes/custom_error_pages.conf;
include includes/common_headers.conf;
include includes/HSTS-preload.conf;
set $upstream 10.0.0.2:443;
location / {
proxy_pass https://$upstream;
proxy_ssl_verify on;
proxy_ssl_verify_depth 2;
proxy_ssl_server_name on;
proxy_ssl_name rss.patchli.fr;
proxy_set_header Host rss.patchli.fr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_ssl_protocols TLSv1.3;
proxy_ssl_trusted_certificate /etc/ssl/certs/ca-certificates.crt;
proxy_ssl_session_reuse on;
proxy_hide_header X-Powered-By;
}
}
server {
listen 8080;
listen [::]:8080;
server_name rss.patchli.fr;
return 301 https://$server_name$request_uri;
}
Après ça, vous pouvez vous connecter à FreshRSS depuis NGINX Vous devez connecter la base de données MariaDB au FreshRSS, puis vous pouvez enfin créer votre compte admin et gérer FreshRSS et rajouter des flux RSS.