Jellyfin è un'applicazione multimediale gratuita e open source progettata per organizzare, gestire e condividere file multimediali digitali su dispositivi collegati in rete su una rete interna ed è possibile accedervi in remoto desiderato. È una multipiattaforma e un'alternativa ad altri giocatori così significativi, Plex ed Emby. Puoi accedervi da una vasta gamma di dispositivi come dispositivi mobili, tablet, TV e PC o dispositivi multimediali popolari come Roku o Nvidia shield. Jellyfin fornisce anche contenuti multimediali a dispositivi abilitati DLNA e Chromecast e può recuperare metadati proprio come fanno Plex ed Emby per organizzare i tuoi contenuti multimediali in categorie in una ricca esperienza multimediale.
Se desideri provare, Jellyfin ha creato un server demo per accedere e verificarlo di persona.
Nel seguente tutorial, imparerai come installare Jellyfin su Debian 11 Bullseye, insieme a come impostare le tue unità multimediali per avere un accesso corretto in lettura e scrittura; in più, se desideri eseguire lo streaming di un'opzione proxy inverso Apache o Nginx in remoto, come proteggerla con il certificato SSL Let's Encrypt Free per entrambe le applicazioni web.
Aggiorna Debian
Innanzitutto, prima di iniziare a garantire che l'installazione proceda senza intoppi, aggiorna il tuo sistema come segue.
sudo apt update && sudo apt upgrade -y
Installa i pacchetti richiesti
Prima di procedere ulteriormente con il tutorial, dovrai assicurarti di aver installato i seguenti pacchetti:
sudo apt install apt-transport-https ca-certificates gnupg2 curl git -y
Se non sei sicuro, esegui semplicemente il comando; non ti danneggerà.
Installa Jellyfin Media Server
Jellyfin non viene fornito con il repository predefinito di Debian, quindi devi importare la chiave GPG Jellyfin e il repository.
Importa chiave GPG
Per prima cosa dovrai importare la chiave GPG per verificare l'autenticità del pacchetto; senza di esso, l'installazione fallirà:
sudo wget -O- https://repo.jellyfin.org/jellyfin_team.gpg.key | gpg --dearmor | sudo tee /usr/share/keyrings/jellyfin.gpg
Importa il repository
Il passaggio successivo è importare il repository, puoi importare la versione stable (consigliata) o unstable (beta/sviluppo), da quanto ho capito l'unstable può funzionare bene ma lo consiglierei solo agli utenti che sono più sicuri del terminale e risolvere i problemi se si presentano e hanno il tempo.
IMPORTA SOLO UN REPOSITORY ALLA VOLTA.
Importa JellyFin stable (consigliato):
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
Importa JellyFin instabile:
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
Quindi, termina, aggiorna l'elenco del tuo repository per riconoscere le nuove aggiunte come segue:
sudo apt update
Installa Jellyfin
Ora che hai ordinato il repository apt, puoi ora procedere all'installazione del server multimediale con il seguente comando:
sudo apt install jellyfin -y
Una volta installato, il servizio Jellyfin verrà avviato automaticamente. Confermalo, usa il seguente comando systemctl .
systemctl status jellyfin
Esempio di output:
Se il tuo media server non è stato avviato per qualche motivo, usa i seguenti comandi:
Avvia il servizio:
sudo systemctl start jellyfin
Abilita all'avvio del sistema:
sudo systemctl enable jellyfin
Configurazione iniziale di Jellyfin Media Server
Per accedere all'interfaccia utente Web di Jellyfin, è necessario aprire il browser Internet e immettere 127.0.0.1 sulla porta predefinita di Jellyfin 8096.
Esempio sotto:
http://127.0.0.1:8096
Ti imbatterai nella schermata di benvenuto per la configurazione iniziale del server.
Seleziona il tuo Lingua di visualizzazione preferita e fai clic sul pulsante Avanti -> per procedere.
Successivamente, ti imbatterai nella creazione di un nome utente e una password.
Crea un nome utente e una password; come indicato nell'immagine sopra, è possibile inserire più utenti una volta completata la configurazione iniziale. Al termine, fai clic sul pulsante Avanti -> per procedere.
Ora puoi configurare le tue librerie multimediali.
Fai clic sul grande + (segno più) o Aggiungi libreria multimediale pulsante. Da qui, puoi aggiungere la tua cartella multimediale, l'installazione è molto semplice e gli utenti di Plex sentirebbero particolarmente una somiglianza molto stretta. Al termine, fai clic su Next -> pulsante per procedere.
La schermata successiva è la schermata Linguaggio metadati:
Scegli la tua Lingua , quindi fai clic sul pulsante Avanti -> .
Se utilizzerai o, in parole migliori, accederai al server dall'esterno e o dietro un proxy, assicurati di impostare Consenti connessioni remote a questo server come è l'impostazione predefinita. Se stai solo accedendo a una rete locale, disabilita questa opzione.
Ora vedrai la schermata che dice che hai terminato l'installazione.
Passaggio semplice, fai clic sul pulsante Fine per finire.
Verrai indirizzato alla schermata di accesso per accedere con l'account utente e la password che hai creato durante la configurazione iniziale.
Ora sarai nella tua dashboard.
Se hai configurato il supporto durante l'installazione, verrà visualizzato automaticamente.
Ripristina configurazione iniziale
Se hai commesso un errore durante la configurazione iniziale, puoi ripristinare con i seguenti passaggi:
Apri il file system.xml:
sudo nano /etc/jellyfin/system.xml
Cambia quanto segue, che si trova alla riga 4:
<IsStartupWizardCompleted>true</IsStartupWizardCompleted>
A questo:
<IsStartupWizardCompleted>false</IsStartupWizardCompleted>
Riavvia il server Jellyfin:
sudo systemctl restart jellyfin
Dopo aver ripristinato la configurazione iniziale, rivisitare il HTTP://127.0 .0.1:8096 e riavvia nuovamente il processo.
Autorizzazioni di configurazione per unità multimediali
Jellyfin richiederà di leggere ed eseguire l'autorizzazione sulle directory multimediali. Puoi utilizzare chown o chgrp comandi; tuttavia, imparerai a usare il comando setfacl per il tutorial. Questo è in fase di copertura poiché ha il potenziale, in seguito, per essere più sicuro e puoi controllare l'accesso a un livello molto dettagliato rispetto al modo predefinito di chown e chgrp.
Per installare, esegui il seguente comando:
sudo apt install acl -y
Debian dovrebbe averlo installato per impostazione predefinita, ma in caso di dubbi esegui il comando per sicurezza.
Ora hai alcune opzioni con il comando setfalc , ma realisticamente non dovrai concedere i permessi a ciascun film e programma televisivo; invece, il modo più semplice è usare il contrassegna ricorsiva (-R) che fornirà a Jellyfin l'accesso di cui ha bisogno per tutto ciò che si trova nella directory e nelle sottodirectory.
sudo setfacl -R -m u:jellyfin:rx /media/mymediadrive
Se è necessario assegnare l'autorizzazione a singole directory o file multimediali, utilizzare quanto segue:
sudo setfacl -m u:jellyfin:rx /media/mymediadrive/example-name-of-file-or-directory
Configura Apache come proxy inverso
È possibile configurare un proxy inverso per accedere a Jellyfin da un computer o una rete remoti. In questo esempio, il tutorial imposterà un server proxy Apache. Se vuoi usare Nginx, salta questa parte e vai a Imposta Nginx come proxy inverso.
Innanzitutto, installa Apache:
sudo apt install apache2 -y
Per impostazione predefinita, Apache dovrebbe essere abilitato se non è attivato. usa:
sudo systemctl start apache2
Per consentire l'avvio di Apache all'avvio, utilizzare il comando seguente:
sudo systemctl enable apache2
Esempio di output in caso di successo:
Synchronizing state of apache2.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable apache2
Verifica lo stato di Apache:
systemctl status apache2
Esempio di output:
Per utilizzare Apache come proxy inverso, è necessario abilitare il modulo con il seguente comando:
sudo a2enmod proxy proxy_http headers proxy_wstunnel
Quindi, crea un host virtuale per il tuo sottodominio:
sudo nano /etc/apache2/sites-available/jellyfin.conf
Avrai bisogno di un nome di dominio attivo che può essere acquistato per un minimo di 1 o 2 dollari se non ne hai uno. NameCheap ha i migliori domini economici in circolazione e se preferisci un .com, usa Cloudflare.
Dopo aver creato il tuo sottodominio, aggiungi quanto segue al file di blocco del server:
<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>
Salva il file (CTRL+O) , quindi esci da (CTRL+X) .
Ora esegui un test per assicurarti che non vi siano errori nella configurazione di Apache o nel tuo host virtuale:
sudo apache2ctl configtest
Se tutto funziona correttamente, l'output di esempio dovrebbe essere:
Syntax OK
Abilita l'host virtuale su Apache come segue:
sudo a2ensite jellyfin.conf
Quindi riavvia Apache:
sudo systemctl restart apache2
Imposta Nginx come proxy inverso
È possibile configurare un proxy inverso per accedere a Jellyfin da un computer o una rete remoti. In questo esempio, il tutorial imposterà un server proxy Nginx.
Innanzitutto, installa Nginx:
sudo apt install nginx -y
Per impostazione predefinita, Nginx dovrebbe essere abilitato se non è attivato. usa:
sudo systemctl start nginx
Per consentire l'avvio di Nginx all'avvio, utilizzare il comando seguente:
sudo systemctl enable nginx
Esempio di output in caso di successo:
Synchronizing state of nginx.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable nginx
Verifica lo stato di Nginx:
systemctl status nginx
Esempio di output:
Se desideri installare l'ultima build di Nginx, consulta il nostro tutorial sull'installazione dell'ultima Nginx Mainline o Stable o n Debian 11.
Ora, crea un nuovo blocco server come segue:
sudo nano /etc/nginx/conf.d/jellyfin.conf
Avrai bisogno di un nome di dominio attivo che può essere acquistato per un minimo di 1 o 2 dollari se non ne hai uno. NameCheap ha i migliori domini economici in circolazione e se preferisci un .com, usa Cloudflare.
Dopo aver creato il tuo sottodominio, aggiungi quanto segue al file di blocco del server:
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;
}
}
Salva il file (CTRL+O) , quindi esci da (CTRL+X) .
Ora esegui un test per assicurarti che non vi siano errori nella configurazione di Nginx o nel blocco del tuo server:
sudo nginx -t
Se tutto funziona correttamente, l'output di esempio dovrebbe essere:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Ricarica Nginx per rendere effettive le modifiche:
sudo systemctl reload nginx
Se hai impostato il tuo dominio e i record DNS in modo che puntino all'IP del tuo server, ora puoi accedere al tuo Jellyfin Media Server su jellyfin.example.com .
Sicurezza Nginx o Apache con Let's Encrypt SSL Free Certificate
Idealmente, vorresti eseguire Apache o Nginx su HTTPS usando un certificato SSL. Il modo migliore per farlo è utilizzare Let's Encrypt, un'autorità di certificazione gratuita, automatizzata e aperta gestita dall'Internet Security Research Group (ISRG) senza scopo di lucro.
Innanzitutto, installa il pacchetto certbot, corrispondente al proxy inverso che hai installato.
Apache:
sudo apt install python3-certbot-apache -y
Nginx:
sudo apt install python3-certbot-nginx -y
Una volta installato, esegui il seguente comando per avviare la creazione del tuo certificato:
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
Questa configurazione ideale include reindirizzamenti HTTPS 301 forzati, un'intestazione Strict-Transport-Security e graffatura OCSP. Assicurati solo di adattare l'e-mail e il nome di dominio alle tue esigenze.
Ora il tuo URL sarà https://jellyfin.example.com invece di HTTP://jellyfin.example.com .
Come aggiornare/aggiornare Jellyfin Media Server
Jellyfin può essere aggiornato secondo lo standard comando apt update che impiegheresti la maggior parte del tuo tempo per aggiornare i pacchetti sul tuo sistema.
Usa il comando seguente per verificare la presenza di aggiornamenti e questo rileverà automaticamente anche qualsiasi altra cosa.
sudo apt update
Se disponibile, usa il comando di aggiornamento:
sudo apt upgrade
Come rimuovere (disinstallare) Jellyfin Media Server
Per gli utenti che non richiedono più il software, puoi rimuovere Jellyfin dal tuo sistema Debian.
Per prima cosa, rimuovi il software usando il seguente comando.
sudo autoremove install jellyfin --purge -y
Quindi, rimuovi il repository aggiunto se non hai intenzione di utilizzare nuovamente Jellyfin.
sudo rm /etc/apt/sources.list.d/jellyfin.list
E questo è tutto; hai eliminato con successo Jellyfin dal tuo sistema.