Come installare Jellyfin Media Server su Debian 12
Jellyfin è un software gratuito per la creazione di un server multimediale. Ti consente di raccogliere, gestire e trasmettere in streaming i tuoi file multimediali da più dispositivi o client. Jellyfin è un'applicazione gratuita e self-hosted che può essere installata sul tuo server, così puoi creare il tuo server multimediale nel tuo ambiente locale, ad esempio a casa, e quindi consentire a più client e dispositivi di accedere a tutti i tuoi file multimediali.
Jellyfin è un file server multimediale alternativo ai proprietari come Emby e Plex. Ti consente di gestire file multimediali da qualsiasi dispositivo e ovunque.
Questa guida ti mostrerà come installare il server multimediale Jellyfin su Debian 12. Installerai Jellyfin tramite un pacchetto binario precostruito e lo proteggerai con UFW (Uncomplicated Firewall), certificati SSL/TLS di Letsencrypt e il proxy inverso Apache2.
Prerequisiti
Per iniziare il processo, assicurati di avere quanto segue:
- Un server Debian 12 con 2 o 4 GB di memoria.
- Un utente non root con privilegi di amministratore.
- Un nome di dominio puntava all'indirizzo IP del server.
Aggiunta del repository Jellyfin
Il media server Jellyfin può essere installato in molti modi, manualmente o tramite un pacchetto predefinito disponibile per la maggior parte delle distribuzioni Linux. In questo primo passaggio, aggiungerai il repository Jellyfin al tuo server Debian.
Innanzitutto, esegui il seguente comando apt per installare le dipendenze sulla tua macchina Debian.
sudo apt install apt-transport-https ca-certificates gnupg curl -y
Una volta installate le dipendenze, esegui il comando seguente per aggiungere la chiave GPG del repository Jellyfin, che verrà archiviato in /etc/apt/keyrings/jellyfin.gpg.
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://repo.jellyfin.org/jellyfin_team.gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/jellyfin.gpg
Ora esegui il comando seguente per aggiungere il repository Jellyfin al tuo server Debian. Dopo aver eseguito il comando, verrà creato il file repository /etc/apt/sources.list.d/jellyfin.sources.
cat <<EOF | sudo tee /etc/apt/sources.list.d/jellyfin.sources
Types: deb
URIs: https://repo.jellyfin.org/$( awk -F'=' '/^ID=/{ print $NF }' /etc/os-release )
Suites: $( awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release )
Components: main
Architectures: $( dpkg --print-architecture )
Signed-By: /etc/apt/keyrings/jellyfin.gpg
EOF
Infine, aggiorna e aggiorna l'indice del tuo pacchetto Debian utilizzando il comando apt update di seguito.
sudo apt update
Dovresti vedere il repository Jellyfin aggiunto all'elenco dei repository di sistema.
Installazione e gestione di Jellyfin
Con l'aggiunta del repository Jellyfin, sei pronto per installare il server multimediale Jellyfin. Completa questi passaggi per installare Jellyfin e scopri come gestire il servizio Jellyfin tramite systemctl.
Esegui il comando apt install riportato di seguito per installare il server multimediale Jellyfin. Digitare y per la conferma e premere INVIO per procedere.
sudo apt install jellyfin
Dopo l'installazione, assicurati che il servizio Jellyfin sia in esecuzione e abilitato utilizzando il comando seguente.
sudo systemctl is-enabled jellyfin
sudo systemctl status jellyfin
Se in esecuzione, dovresti vedere l'output attivo (in esecuzione). Se abilitato, l'output che dovresti ottenere è abilitato. Ciò significa che Jellyfin si avvierà automaticamente all'avvio del sistema.
Per impostazione predefinita, Jellyfin è in esecuzione in localhost con la porta 8096. Esegui il comando ss di seguito per verificare l'elenco delle porte sul tuo sistema Debian.
ss -tulpn
Puoi aspettarti di vedere la porta 8096 utilizzata dal server multimediale Jellyfin.
Infine, esegui il seguente comando systemctl per avviare, arrestare o riavviare il servizio Jellyfin.
sudo systemctl start jellyfin
sudo systemctl stop jellyfin
sudo systemctl restart jellyfin
Impostazioni di sicurezza con UFW
Nella sezione seguente, proteggerai il tuo server multimediale Jellyfin tramite UFW. Installerai UFW e quindi aprirai i protocolli HTTP e HTTPS per l'accesso client. Devi aprire i protocolli HTTP e HTTPS perché utilizzerai Apache2 come proxy inverso.
Innanzitutto, installa UFW tramite il comando apt install di seguito.
sudo apt install ufw -y
Una volta installato UFW, esegui il comando ufw riportato di seguito per aggiungere il servizio OpenSSH, quindi avvia e abilita UFW.
sudo ufw allow OpenSSH
sudo ufw enable
Digita y quando richiesto e UFW dovrebbe essere in esecuzione e abilitato.
Ora esegui il comando seguente per aggiungere il profilo WWW completo e verificare lo stato UFW. Il profilo WWW completo aprirà sia i protocolli HTTP che HTTPS sul tuo sistema Debian.
sudo ufw allow "WWW Full"
sudo ufw status
L'output dovrebbe indicare che UFW è attivo con i profili OpenSSH e WWW completi abilitati.
Installazione e configurazione di Apache2 come proxy inverso
In questa guida eseguirai il server multimediale Jellyfin all'interno di Apache2 come proxy inverso. Inoltre, proteggerai la tua installazione con certificati SSL/TLS generati tramite Certbot e Letsencrypt.
Ora, completa le seguenti attività: installa Apache2 e Certbot, genera certificati SSL/TLS e crea la configurazione dell'host virtuale Apache2 per il server multimediale Jellyfin.
Installazione di Apache2 e Certbot
Innanzitutto, esegui il comando seguente per installare il server Web Apache2 e Certbot. Digitare y per la conferma e premere INVIO.
sudo apt install apache2 certbot
Al termine dell'installazione, il servizio apache2 dovrebbe essere in esecuzione e abilitato per impostazione predefinita. Verificalo utilizzando il comando systemctl riportato di seguito.
sudo systemctl is-enabled apache2
sudo systemctl status apache2
L'output abilitato indica che il servizio apache2 verrà avviato automaticamente all'avvio. E l'output attivo (in esecuzione) indica che lo stato del servizio è in esecuzione.
Generazione di certificati SSL/TLS con Certbot
Prima di generare certificati SSL/TLS, abilitare alcuni moduli Apache2 tramite il comando a2enmod e riavviare il servizio Apache2.
sudo a2enmod proxy proxy_http ssl proxy_wstunnel remoteip http2 headers
sudo systemctl restart apache2
Ora esegui il comando seguente per creare una nuova directory /var/www/html/jellyfin/public_html e modificare la proprietà dell'utente e del gruppo www-data. Questa directory verrà utilizzata come directory web-root temporanea per generare certificati SSL/TLS.
sudo mkdir -p /var/www/html/jellyfin/public_html
sudo chown -R www-data:www-data /var/www/html/jellyfin/public_html
Successivamente, esegui il comando certbot riportato di seguito per generare nuovi certificati SSL/TLS. Assicurati di modificare l'indirizzo e-mail e il nome di dominio prima di eseguire il comando.
sudo certbot certonly --agree-tos --email [email --no-eff-email --webroot -w /var/www/html/jellyfin/public_html -d media.hwdomain.io
Dopo il processo, i tuoi certificati SSL/TLS saranno disponibili nella directory /etc/letsencrypt/live/domain.com. Il file fullchain.pem è la chiave pubblica e privkey.pem è la chiave privata.
Configurazione di Apache2 come proxy inverso
Crea una nuova configurazione di host virtuale /etc/apache2/sites-available/jellyfin.conf utilizzando il seguente comando dell'editor nano.
sudo nano /etc/apache2/sites-available/jellyfin.conf
Inserisci la configurazione qui sotto e assicurati di modificare il nome del dominio, il percorso dei certificati SSL/TLS e l'indirizzo IP del server con le tue informazioni. Con questo, configurerai Apache2 come proxy inverso per il server multimediale Jellyfin in esecuzione sulla porta 8096.
<VirtualHost *:80>
ServerName media.hwdomain.io
# Comment to prevent HTTP to HTTPS redirect
Redirect permanent / https://media.hwdomain.io/
ErrorLog /var/log/apache2/media.hwdomain.io-error.log
CustomLog /var/log/apache2/media.hwdomain.io-access.log combined
</VirtualHost>
# If you are not using an SSL certificate, replace the 'redirect'
# line above with all lines below starting with 'Proxy'
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName media.hwdomain.io
# 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/" "!"
# Tell Jellyfin to forward that requests came from TLS connections
RequestHeader set X-Forwarded-Proto "https"
RequestHeader set X-Forwarded-Port "443"
ProxyPass "/socket" "ws://192.168.10.15:8096/socket"
ProxyPassReverse "/socket" "ws://192.168.10.15:8096/socket"
ProxyPass "/" "http://192.168.10.15:8096/"
ProxyPassReverse "/" "http://192.168.10.15:8096/"
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/media.hwdomain.io/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/media.hwdomain.io/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/media.hwdomain.io-error.log
CustomLog /var/log/apache2/media.hwdomain.io-access.log combined
</VirtualHost>
</IfModule>
Salvare il file e uscire dall'editor una volta terminato.
Successivamente, esegui il comando a2ensite riportato di seguito per attivare l'host virtuale jellyfin.conf, quindi verifica la sintassi Apache2.
sudo a2ensite jellyfin.conf
sudo apachectl configtest
Se hai una sintassi Apache2 corretta, dovresti ottenere un output Syntax OK.
Ora riavvia il servizio apache2 utilizzando il comando seguente per applicare le modifiche. L'installazione di Jellyfin dovrebbe essere in esecuzione e protetta dal proxy inverso Apache2.
sudo systemctl restart apache2
Avvia il tuo browser web e visita il nome di dominio della tua installazione Jellyfin, come https://media.hwdomain.io/. Se la configurazione ha esito positivo, dovresti ottenere la procedura guidata di installazione di Jellyfin in questo modo:
Installazione del server multimediale Jellyfin
Nel passaggio successivo, completerai la configurazione del server multimediale Jellyfin tramite la procedura guidata di installazione.
Innanzitutto, seleziona la lingua predefinita per l'installazione di Jellyfin e fai clic su Avanti.
Ora crea un nuovo utente amministratore per la tua installazione Jellyfin. Inserisci il tuo nome utente e la tua password, quindi fai clic su Avanti.
Per le librerie multimediali è possibile configurarle in seguito. Fai clic su Avanti per continuare.
Seleziona la lingua dei metadati preferita per le tue librerie e fai clic su Avanti.
Seleziona l'opzione Consenti connessioni remote per abilitare l'accesso remoto al tuo server multimediale Jellyfin. Inoltre, puoi abilitare la mappatura delle porte selezionando l'opzione. Quindi, fai clic su Avanti.
Se la configurazione ha esito positivo, dovresti ricevere il messaggio Hai finito!. Fai clic su Fine per completare l'installazione di Jellyfin.
Ora dovresti essere reindirizzato alla pagina di accesso di Jellyfin. Inserisci l'utente amministratore e la password per Jellyfin, quindi fai clic su Accedi.
Se tutto va bene, dovresti ottenere la dashboard di amministrazione di Jellyfin in questo modo:
Infine, fai clic sul menu Dashboard nella sezione Amministrazione. Dovresti vedere informazioni dettagliate sull'installazione del tuo server multimediale Jellyfin:
Conclusione
In conclusione di questa guida, hai completato l'installazione del server multimediale Jellyfin su Debian 12 con proxy inverso Apache2 e SSL/TLS di Letsencrypt. Hai anche protetto il tuo server Jellyfin con UFW e completato la configurazione di base del server multimediale Jellyfin. Puoi creare un nuovo catalogo multimediale e caricare i tuoi file multimediali su Jellyfin.