Jellyfin et HAProxy

Bonjour à tous,

Me revoilà pour un article concernant la mise en place de Jellyfin (que je ne vais pas présenter aujourd’hui) et HaProxy que je ne présente pas non plus (faut pas abuser… 🙂 ).

L’idée est de vous montrer comment mettre un proxy chez vous et l’utiliser pour mettre en place un service (web, vidéo, stockage…)

Pourquoi mettre un proxy, pour la sécurité, la performance et la simplicité de gestion des certificats let’s enscrypt.

Je ne vais pas m’entendre sur le pourquoi du comment, je vous laisse faire une petite recherche sur le net.

Les prérequis :

Nous allons mettre en place Jellyfin et HaProxy sur deux serveurs différents, sous ubuntu 22.04.

Il nous faudra un nom de domaine qui pointe vers une IP publique (votre box si IP fixe).

Et c’est tout.

Petit schéma de l’ensemble.

Légende :

  • Les flèches indiquent le flux de données entre les éléments
  • PARE-FEU : Gère la passerelle entre internet et votre réseau local
  • HAProxy : Actuellement en tant que reverse proxy, interceptant les requêtes HTTP/HTTPS
  • Jellyfin : Serveur multimédia accessible via HAProxy

Points clés :

  1. Le pare-feu gère la connexion internet et route le trafic vers le réseau local
  2. HAProxy reçoit les requêtes HTTP/HTTPS en provenance du pare-feu et les redirige vers Jellyfin
  3. Jellyfin répond aux requêtes via HAProxy

il faut savoir que Jellyfin utilise le port 8096 pour le HTTP.

Nous n’allons pas aborder l’installation d’un serveur ubuntu.

Concernant Haproxy, il vous suffira juste de taper la commande :

apt install haproxy

Le fichier de configuration se trouve ici : 

/etc/haproxy/haproxy.cfg

Dans mon cas, j ‘ai une IP fixe. Ma boxe ne pouvant passer en Bridge, j ai du mettre mon firewall en DMZ et indiquer à ma box que l’ensemble des flux devront passer par lui.

Concernant la partie réseau, il faudra rediriger les flux HTTP et HTTPS vers HaProxy au niveau de votre firewall (le cas échéant, de natter).

la 1er étape est de vérifier que votre nom de domaine tape bien sur votre ip publique.

On installe ensuite cerbot >>> apt install certbot

Vous devez créer votre certificat lets’encrypt avec la commande :

certbot certonly --standalone -d nomdedomaine.fr

Vous devriez voir votre certificat ici :

/etc/letsencrypt/live/ton-domaine.fr/

On passe à la création du dossier qui recevra notre futur fichier PEM

mkdir /etc/haproxy/certs/

On change les droits

chmod 600 /etc/haproxy/certs/

Maintenant, on va créer un fichier PEM (grâce à notre certificat) utilisable par HaProxy.

La commande est normalement en une seule ligne…

cat /etc/letsencrypt/live/nomdedomaine.fr/fullchain.pem /etc/letsencrypt/live/nomdedomaine.fr/privkey.pem | sudo tee /etc/haproxy/certs/nomdedomaine.fr.pem

A ce stade, on a déjà fait une bonne partie du travail.

On ouvre notre fichier de configuration haproxy.cfg

nano /etc/haproxy/haproxy.cfg

je vous donne uniquement la partie qui doit être rajouté :

frontend http_front
bind *:80
mode http
acl is_exemple hdr(host) -i nomdedomaine.fr
http-request redirect scheme https code 301 if is_exemple
http-request add-header X-Forwarded-For %[src]

frontend https_front
bind *:443 ssl crt /etc/haproxy/certs/
mode http
option http-server-close
option forwardfor
acl is_exemple hdr(host) -i nomdedomaine.fr
http-request set-header X-Forwarded-Proto https
http-request add-header X-Forwarded-For %[src]
use_backend exemple_backend if is_exemple

#site par nom de domaine

backend exemple_backend
mode http
option forwardfor
http-request set-header X-Forwarded-Proto https
server jellyfin 192.168.1.10:8096 check

Ci-dessous, un tableau d’explication que j’ai généré avec mon propre serveur IA, comme on dit, flem 😉

Toujours faire une vérification de votre fichier de conf avant de lancer HA.

sudo haproxy -f /etc/haproxy/haproxy.cfg -c

Cela doit vous donner un « Configuration file is valid » ou vous donner les informations qui vous aideront à trouver votre erreur.

Go a la configuration de jellyfin, je vous fais une capture d’écran, plus simple et plus rapide.

Et voila, il ne reste plus qu’a cliquer sur sauvegarder et redémarrer le service jellyfin.

Évidement, vous pouvez rajouter un autre service dans le même fichier de configuration.

A bientot

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.