Jellyfin est une application multimédia gratuite et open source conçue pour organiser, gérer et partager des fichiers multimédias numériques sur des appareils en réseau sur un réseau interne et accessible à distance. Il s'agit d'une plateforme multiplateforme et d'une alternative à d'autres acteurs importants, Plex et Emby. Vous pouvez y accéder à partir d'une gamme d'appareils tels que les mobiles, les tablettes, les téléviseurs et les PC ou les appareils multimédias populaires tels que Roku ou Nvidia Shield. Jellyfin sert également des médias aux appareils compatibles DLNA et Chromecast et peut récupérer des métadonnées comme le font Plex et Emby pour organiser vos médias en catégories dans une expérience multimédia riche.
Si vous souhaitez tester, Jellyfin a créé un serveur de démonstration pour vous connecter et vérifier par vous-même.
Dans le didacticiel suivant, vous apprendrez à installer Jellyfin sur Debian 11 Bullseye, ainsi qu'à configurer vos lecteurs multimédias pour qu'ils aient un accès correct en lecture et en écriture ; en plus, si vous souhaitez diffuser une option de proxy inverse Apache ou Nginx à distance, comment la sécuriser avec le certificat SSL Let's Encrypt Free pour les deux applications Web.
Mettre à jour Debian
Tout d'abord, avant de commencer à vous assurer que l'installation se déroule correctement, mettez à jour votre système comme suit.
sudo apt update && sudo apt upgrade -y
Installer les packages requis
Avant de poursuivre le didacticiel, vous devez vous assurer que les packages suivants sont installés :
sudo apt install apt-transport-https ca-certificates gnupg2 curl git -y
Si vous n'êtes pas sûr, exécutez simplement la commande; cela ne vous fera pas de mal.
Installer Jellyfin Media Server
Jellyfin n'est pas fourni avec le référentiel par défaut de Debian, vous devez donc importer la clé et le référentiel Jellyfin GPG.
Importer la clé GPG
Tout d'abord, vous devrez importer la clé GPG pour vérifier l'authenticité du package; sans cela, l'installation échouera :
sudo wget -O- https://repo.jellyfin.org/jellyfin_team.gpg.key | gpg --dearmor | sudo tee /usr/share/keyrings/jellyfin.gpg
Importer le référentiel
L'étape suivante consiste à importer le référentiel, vous pouvez importer la version stable (recommandée) ou la version instable (bêta/développement), d'après ce que je comprends, l'unstable peut bien fonctionner mais je ne le suggérerais qu'aux utilisateurs qui sont plus confiants au terminal et résoudre les problèmes s'ils surviennent et ont le temps.
IMPORTER UNIQUEMENT UN RÉFÉRENTIEL À LA FOIS.
Importer JellyFin stable (recommandé) :
echo "deb [arch=$( dpkg --print-architecture ) signed-by=/usr/share/keyrings/jellyfin.gpg] https://repo.jellyfin.org/debian bullseye main" | sudo tee /etc/apt/sources.list.d/jellyfin.list
Importer JellyFin instable :
echo "deb [arch=$( dpkg --print-architecture ) signed-by=/usr/share/keyrings/jellyfin.gpg] https://repo.jellyfin.org/debian bullseye main unstable" | sudo tee /etc/apt/sources.list.d/jellyfin.list
Ensuite, terminez, mettez à jour votre liste de référentiels pour reconnaître les nouveaux ajouts comme suit :
sudo apt update
Installer Jellyfin
Maintenant que vous avez trié le référentiel apt, vous pouvez maintenant procéder à l'installation du serveur multimédia avec la commande suivante :
sudo apt install jellyfin -y
Une fois installé, le service Jellyfin sera automatiquement démarré. Confirmez ceci, utilisez la commande systemctl suivante .
systemctl status jellyfin
Exemple de résultat :
Si votre serveur multimédia n'a pas démarré pour une raison quelconque, utilisez les commandes suivantes :
Démarrer le service :
sudo systemctl start jellyfin
Activer au démarrage du système :
sudo systemctl enable jellyfin
Configuration initiale du serveur multimédia Jellyfin
Pour accéder à l'interface utilisateur Web de Jellyfin, vous devez ouvrir votre navigateur Internet et saisir 127.0.0.1 sur le port 8096 par défaut de Jellyfin.
Exemple ci-dessous :
http://127.0.0.1:8096
Vous rencontrerez l'écran de bienvenue pour la configuration initiale du serveur.
Sélectionnez votre Langue d'affichage préférée et cliquez sur le bouton Suivant -> pour continuer.
Ensuite, vous rencontrerez la création d'un nom d'utilisateur et d'un mot de passe.
Créer un nom d'utilisateur et un mot de passe; comme indiqué dans l'image ci-dessus, plus d'utilisateurs peuvent être entrés une fois la configuration initiale terminée. Une fois cela fait, cliquez sur le bouton Suivant -> pour continuer.
Vous pouvez maintenant configurer vos médiathèques.
Cliquez sur le gros + (signe plus) ou Ajouter une bibliothèque multimédia bouton. À partir de là, vous pouvez ajouter votre dossier multimédia, la configuration est très simple et les utilisateurs de Plex ressentiraient surtout une ressemblance très proche. Une fois cela fait, cliquez sur Suivant -> bouton pour continuer.
L'écran suivant est l'écran Langage des métadonnées :
Choisissez votre Langue , puis cliquez sur le bouton Suivant -> .
Si vous allez utiliser ou, en d'autres termes, accéder au serveur depuis l'extérieur et/ou derrière un proxy, assurez-vous de définir Autoriser les connexions à distance à ce serveur comme c'est le réglage par défaut. Si vous accédez uniquement à un réseau local, désactivez-le.
Vous verrez maintenant l'écran indiquant que vous avez terminé l'installation.
Étape facile, cliquez sur le bouton Terminer pour finir.
Vous serez redirigé vers l'écran de connexion pour vous connecter avec le compte d'utilisateur et le mot de passe que vous avez créés lors de la configuration initiale.
Vous serez maintenant dans votre tableau de bord.
Si vous configurez un support lors de l'installation, il apparaîtra automatiquement.
Réinitialiser la configuration initiale
Si vous avez fait une erreur lors de la configuration initiale, vous pouvez revenir en arrière en procédant comme suit :
Ouvrez le fichier system.xml :
sudo nano /etc/jellyfin/system.xml
Modifiez ce qui suit, qui se trouve sur la ligne 4 :
<IsStartupWizardCompleted>true</IsStartupWizardCompleted>
À ceci :
<IsStartupWizardCompleted>false</IsStartupWizardCompleted>
Redémarrez le serveur Jellyfin :
sudo systemctl restart jellyfin
Une fois que vous avez réinitialisé la configuration initiale, revisitez le HTTP://127.0 .0.1:8096 et recommencez le processus.
Autorisations de configuration pour les lecteurs multimédias
Jellyfin exigera d'avoir une autorisation de lecture et d'exécution sur vos répertoires de médias. Vous pouvez utiliser chown ou chgrp commandes ; cependant, vous apprendrez à utiliser la commande setfacl pour le tuto. Ceci est couvert car il a le potentiel, plus tard, d'être plus sécurisé, et vous pouvez contrôler l'accès à un niveau très détaillé par rapport à la méthode par défaut de chown et chgrp.
Pour installer, exécutez la commande suivante :
sudo apt install acl -y
Debian devrait l'avoir installé par défaut, mais exécutez la commande pour être sûr en cas de doute.
Maintenant, vous avez quelques options avec la commande setfalc , mais de manière réaliste, vous n'allez pas donner d'autorisations à chaque film et émission de télévision ; à la place, le plus simple est d'utiliser le drapeau récursif (-R) qui fournira à Jellyfin l'accès dont il a besoin pour tout ce qui se trouve dans le répertoire et les sous-répertoires.
sudo setfacl -R -m u:jellyfin:rx /media/mymediadrive
Si vous devez attribuer une autorisation à des répertoires ou fichiers multimédias individuels, utilisez ce qui suit :
sudo setfacl -m u:jellyfin:rx /media/mymediadrive/example-name-of-file-or-directory
Configurer Apache en tant que proxy inverse
Vous pouvez configurer un proxy inverse pour accéder à Jellyfin à partir d'un ordinateur ou d'un réseau distant. Dans cet exemple, le didacticiel configurera un serveur proxy Apache. Si vous souhaitez utiliser Nginx, ignorez cette partie et accédez à Configurer Nginx en tant que proxy inverse.
Commencez par installer Apache :
sudo apt install apache2 -y
Par défaut, Apache devrait être activé s'il ne l'est pas. utiliser :
sudo systemctl start apache2
Pour activer le démarrage d'Apache au démarrage, utilisez la commande suivante :
sudo systemctl enable apache2
Exemple de résultat en cas de succès :
Synchronizing state of apache2.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable apache2
Vérifiez l'état d'Apache :
systemctl status apache2
Exemple de résultat :
Pour utiliser Apache comme proxy inverse, vous devez activer le module avec la commande suivante :
sudo a2enmod proxy proxy_http headers proxy_wstunnel
Créez ensuite un hôte virtuel pour votre sous-domaine :
sudo nano /etc/apache2/sites-available/jellyfin.conf
Vous aurez besoin d'un nom de domaine actif qui peut être acheté pour aussi peu que 1 à 2 dollars si vous n'en avez pas. NameCheap a les meilleurs domaines bon marché et si vous préférez un .com, utilisez Cloudflare.
Après avoir créé votre sous-domaine, ajoutez ce qui suit au fichier de blocage du serveur :
<VirtualHost *:80>
ServerName jellyfin.example.com
# Comment to prevent HTTP to HTTPS redirect
Redirect permanent / https://DOMAIN_NAME
ErrorLog /var/log/apache2/DOMAIN_NAME-error.log
CustomLog /var/log/apache2/DOMAIN_NAME-access.log combined
</VirtualHost>
# If you are not using a SSL certificate, replace the 'redirect'
# line above with all lines below starting with 'Proxy'
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName DOMAIN_NAME
# This folder exists just for certbot(You may have to create it, chown and chmod it to give apache permission to read it)
DocumentRoot /var/www/html/jellyfin/public_html
ProxyPreserveHost On
# Letsencrypt's certbot will place a file in this folder when updating/verifying certs
# This line will tell apache to not to use the proxy for this folder.
ProxyPass "/.well-known/" "!"
ProxyPass "/socket" "ws://SERVER_IP_ADDRESS:8096/socket"
ProxyPassReverse "/socket" "ws://SERVER_IP_ADDRESS:8096/socket"
ProxyPass "/" "http://SERVER_IP_ADDRESS:8096/"
ProxyPassReverse "/" "http://SERVER_IP_ADDRESS:8096/"
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/DOMAIN_NAME/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/DOMAIN_NAME/privkey.pem
Protocols h2 http/1.1
# Enable only strong encryption ciphers and prefer versions with Forward Secrecy
SSLCipherSuite HIGH:RC4-SHA:AES128-SHA:!aNULL:!MD5
SSLHonorCipherOrder on
# Disable insecure SSL and TLS versions
SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
ErrorLog /var/log/apache2/DOMAIN_NAME-error.log
CustomLog /var/log/apache2/DOMAIN_NAME-access.log combined
</VirtualHost>
</IfModule>
Enregistrez le fichier (CTRL+O) , puis quittez (CTRL+X) .
Faites maintenant un essai pour vous assurer qu'il n'y a pas d'erreurs dans la configuration d'Apache ou de votre hôte virtuel :
sudo apache2ctl configtest
Si tout fonctionne correctement, l'exemple de sortie devrait être :
Syntax OK
Activez l'hôte virtuel sur Apache comme suit :
sudo a2ensite jellyfin.conf
Redémarrez ensuite Apache :
sudo systemctl restart apache2
Configurer Nginx en tant que proxy inverse
Vous pouvez configurer un proxy inverse pour accéder à Jellyfin à partir d'un ordinateur ou d'un réseau distant. Dans cet exemple, le didacticiel configurera un serveur proxy Nginx.
Tout d'abord, installez Nginx :
sudo apt install nginx -y
Par défaut, Nginx doit être activé s'il n'est pas activé. utiliser :
sudo systemctl start nginx
Pour activer le démarrage de Nginx au démarrage, utilisez la commande suivante :
sudo systemctl enable nginx
Exemple de résultat en cas de succès :
Synchronizing state of nginx.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable nginx
Vérifiez l'état de Nginx :
systemctl status nginx
Exemple de résultat :
Si vous souhaitez installer la dernière version de Nginx, consultez notre tutoriel sur l'installation de la dernière version de Nginx Mainline ou Stable o n Debian 11.
Maintenant, créez un nouveau bloc serveur comme suit :
sudo nano /etc/nginx/conf.d/jellyfin.conf
Vous aurez besoin d'un nom de domaine actif qui peut être acheté pour aussi peu que 1 à 2 dollars si vous n'en avez pas. NameCheap a les meilleurs domaines bon marché et si vous préférez un .com, utilisez Cloudflare.
Après avoir créé votre sous-domaine, ajoutez ce qui suit au fichier de blocage du serveur :
server {
listen 80;
server_name jellyfin.example.com;
access_log /var/log/nginx/jellyfin.access;
error_log /var/log/nginx/jellyfin.error;
set $jellyfin jellyfin;
resolver 127.0.0.1 valid=30;
# Security / XSS Mitigation Headers
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
location = / {
return 302 https://$host/web/;
}
location / {
# Proxy main Jellyfin traffic
proxy_pass http://$jellyfin:8096;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Protocol $scheme;
proxy_set_header X-Forwarded-Host $http_host;
# Disable buffering when the nginx proxy gets very resource heavy upon streaming
proxy_buffering off;
}
# location block for /web - This is purely for aesthetics so /web/#!/ works instead of having to go to /web/index.html/#!/
location = /web/ {
# Proxy main Jellyfin traffic
proxy_pass http://$jellyfin:8096/web/index.html;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Protocol $scheme;
proxy_set_header X-Forwarded-Host $http_host;
}
location /socket {
# Proxy Jellyfin Websockets traffic
proxy_pass http://$jellyfin:8096/socket;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Protocol $scheme;
proxy_set_header X-Forwarded-Host $http_host;
}
}
Enregistrez le fichier (CTRL+O) , puis quittez (CTRL+X) .
Effectuez maintenant un test pour vous assurer qu'il n'y a pas d'erreurs dans la configuration Nginx ou le blocage de votre serveur :
sudo nginx -t
Si tout fonctionne correctement, l'exemple de sortie devrait être :
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Rechargez Nginx pour que la modification prenne effet :
sudo systemctl reload nginx
Si vous avez configuré votre domaine et vos enregistrements DNS pour qu'ils pointent vers l'adresse IP de votre serveur, vous pouvez désormais accéder à votre serveur multimédia Jellyfin sur jellyfin.example.com .
Sécuriser Nginx ou Apache avec le certificat gratuit Let's Encrypt SSL
Idéalement, vous voudriez exécuter votre Apache ou Nginx sur HTTPS en utilisant un certificat SSL. La meilleure façon d'y parvenir est d'utiliser Let's Encrypt, une autorité de certification gratuite, automatisée et ouverte gérée par l'Internet Security Research Group (ISRG) à but non lucratif.
Tout d'abord, installez le package certbot, correspondant au proxy inverse que vous avez installé.
Apache :
sudo apt install python3-certbot-apache -y
Nginx :
sudo apt install python3-certbot-nginx -y
Une fois installé, exécutez la commande suivante pour lancer la création de votre certificat :
Apache :
sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d jellyfin.example.com
Nginx :
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d jellyfin.example.com
Cette configuration idéale comprend forcer les redirections HTTPS 301, un en-tête Strict-Transport-Security et l'agrafage OCSP. Assurez-vous simplement d'adapter l'adresse e-mail et le nom de domaine à vos besoins.
Maintenant, votre URL sera https://jellyfin.example.com au lieu de HTTP://jellyfin.example.com .
Comment mettre à jour/mettre à jour le serveur multimédia Jellyfin
Jellyfin peut être mis à jour conformément à la commande standard apt update que vous utiliseriez la plupart de votre temps pour mettre à jour des packages sur votre système.
Utilisez la commande suivante pour vérifier les mises à jour, et cela détectera automatiquement tout le reste.
sudo apt update
S'il y en a un de disponible, utilisez la commande upgrade :
sudo apt upgrade
Comment supprimer (désinstaller) Jellyfin Media Server
Pour les utilisateurs qui n'ont plus besoin du logiciel, vous pouvez supprimer Jellyfin de votre système Debian.
Tout d'abord, supprimez le logiciel à l'aide de la commande suivante.
sudo autoremove install jellyfin --purge -y
Ensuite, supprimez le référentiel ajouté si vous n'avez pas l'intention d'utiliser à nouveau Jellyfin.
sudo rm /etc/apt/sources.list.d/jellyfin.list
Et c'est tout; vous avez supprimé avec succès Jellyfin de votre système.