Cómo instalar el servidor multimedia Jellyfin en Debian 10

Servidor multimedia Jellyfin

Jellyfin es un sistema de transmisi√≥n de medios de c√≥digo abierto que le permite administrar y transmitir sus medios. Es multiplataforma y alternativa a otras aplicaciones como Emby y Plex. Con Jellyfin, puede organizar y compartir sus archivos multimedia, programas de televisi√≥n, m√ļsica y fotos desde la interfaz basada en la web. Puede acceder a esos medios transmitidos en su PC, tableta, tel√©fono, Roku y TV a trav√©s de Internet. Jellyfin obtiene autom√°ticamente metadatos de la base de datos TheMovieDB, OpenMovie, Rotten Tomatoes y TheTVDB.

En esta publicación, le mostraremos cómo instalar el servidor de transmisión de medios Jellyfin con Nginx como proxy inverso en Debian 10.

requisitos previos

  • Un servidor que ejecuta Debian 10.
  • Un nombre de dominio v√°lido apuntado con la IP de su servidor.
  • Se configura una contrase√Īa de root en el servidor.

Empezando

Primero, deber√° actualizar los paquetes de su sistema con la √ļltima versi√≥n. Puede actualizarlos con el siguiente comando:

apt-get update -y

Una vez que todos los paquetes estén actualizados, instale otros paquetes requeridos con el siguiente comando:

apt-get install apt-transport-https ca-certificates gnupg2 curl git -y

Una vez que todos los paquetes estén instalados, puede continuar con el siguiente paso.

Instalar Jellyfin

De forma predeterminada, el paquete Jellyfin no est√° incluido en el repositorio de Debian 10. Por lo tanto, deber√° agregar el repositorio Jellyfin a su APT.

Puedes agregarlo con el siguiente comando:

echo "deb [arch=$( dpkg --print-architecture )] https://repo.jellyfin.org/debian buster main" | tee /etc/apt/sources.list.d/jellyfin.list

Una vez agregado el repositorio, agregue la clave GPG con el siguiente comando:

wget -O - https://repo.jellyfin.org/jellyfin_team.gpg.key | apt-key add -

A continuación, actualice el repositorio e instale Jellyfin con el siguiente comando:

apt-get update -y
apt-get install jellyfin -y

Una vez que se haya instalado Jellyfin, puede verificar el estado de Jellyfin con el siguiente comando:

systemctl status jellyfin

Deberías obtener el siguiente resultado:

? jellyfin.service - Jellyfin Media Server
   Loaded: loaded (/lib/systemd/system/jellyfin.service; enabled; vendor preset: enabled)
  Drop-In: /etc/systemd/system/jellyfin.service.d
           ??jellyfin.service.conf
   Active: active (running) since Mon 2021-03-22 08:27:42 UTC; 5min ago
 Main PID: 10192 (jellyfin)
    Tasks: 17 (limit: 4701)
   Memory: 113.9M
   CGroup: /system.slice/jellyfin.service
           ??10192 /usr/bin/jellyfin --webdir=/usr/share/jellyfin/web --restartpath=/usr/lib/jellyfin/restart.sh --ffmpeg=/usr/lib/jellyfin-ffm

Mar 22 08:27:45 debian10 jellyfin[10192]: [08:27:45] [WRN] 127.0.0.1/32: GetBindInterface: Loopback 127.0.0.1 returned.
Mar 22 08:27:45 debian10 jellyfin[10192]: [08:27:45] [INF] Executed all pre-startup entry points in 0:00:00.1545678
Mar 22 08:27:45 debian10 jellyfin[10192]: [08:27:45] [INF] Core startup complete
Mar 22 08:27:46 debian10 jellyfin[10192]: [08:27:46] [INF] Executed all post-startup entry points in 0:00:00.1976994
Mar 22 08:27:46 debian10 jellyfin[10192]: [08:27:46] [INF] Startup complete 0:00:03.6985068
Mar 22 08:27:48 debian10 jellyfin[10192]: [08:27:48] [INF] StartupTrigger fired for task: Update Plugins
Mar 22 08:27:48 debian10 jellyfin[10192]: [08:27:48] [INF] Queuing task PluginUpdateTask
Mar 22 08:27:48 debian10 jellyfin[10192]: [08:27:48] [INF] Executing Update Plugins
Mar 22 08:27:49 debian10 jellyfin[10192]: [08:27:49] [INF] Update Plugins Completed after 0 minute(s) and 0 seconds
Mar 22 08:27:49 debian10 jellyfin[10192]: [08:27:49] [INF] ExecuteQueuedTasks

En este punto, Jellyfin se inicia y escucha en el puerto 8096. Puede verificarlo con el siguiente comando:

ss -antpl | grep 8096

Producción:

LISTEN    0         128                0.0.0.0:8096             0.0.0.0:*        users:(("jellyfin",pid=10192,fd=289))                                          

Configurar Nginx como proxy inverso

A continuación, deberá configurar Nginx como proxy inverso para acceder a Jellyfin en el puerto 80.

Primero, instale el paquete Nginx con el siguiente comando:

apt-get install nginx -y

Una vez instalado, cree un nuevo archivo de configuración de Nginx con el siguiente comando:

nano /etc/nginx/conf.d/jellyfin.conf

Agregue las siguientes líneas:

server {
      listen 80;
      server_name jellyfin.example.com;

      access_log /var/log/nginx/jellyfin.access;
      error_log /var/log/nginx/jellyfin.error;

      set $jellyfin 127.0.0.1;

      location / {
          proxy_pass http://127.0.0.1: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://$127.0.0.1:8096;
          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;
      }

        # 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";
}

Guarde y cierre el archivo, luego verifique el Nginx para cualquier error de sintaxis con el siguiente comando:

nginx -t

Producción:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

A continuación, reinicie el servicio Nginx para aplicar los cambios:

systemctl reload nginx

Acceso Jellyfin

Ahora, abra su navegador web y acceda a la interfaz web de Jellyfin usando la URL http://jellyfin.ejemplo.com. Ser√° redirigido a la siguiente p√°gina:

Servidor multimedia Jellyfin

Seleccione su idioma y haga clic en el próximo botón. Deberías ver la siguiente página:

Establecer un nombre de usuario y contrase√Īa

Proporcione su nombre de usuario, contrase√Īa y haga clic en el pr√≥ximo bot√≥n. Deber√≠as ver la siguiente p√°gina:

Bibliotecas de medios

Haga clic en el próximo botón. Deberías ver la siguiente página:

Ajustes de idioma

Seleccione su idioma de metadatos y haga clic en el próximo botón. Deberías ver la siguiente página:

Configurar el acceso remoto

Permita el acceso remoto y haga clic en el próximo botón. Una vez finalizada la instalación, debería ver la siguiente página:

Finalizar instalación

Haga clic en el Finalizar botón para finalizar la instalación. Debería ver la página de inicio de sesión de Jellyfin:

iniciar sesión en Jellyfin

Proporcione su nombre de usuario, contrase√Īa y haga clic en el Se√Īal En bot√≥n. Deber√≠a ver el panel de control de Jellyfin en la siguiente p√°gina: Publicidad

Tablero Jellyfin

Asegure Jellyfin con Let’s Encrypt SSL

A continuaci√≥n, deber√° instalar el paquete de cliente de Certbot para instalar y administrar Let’s Encrypt SSL. Primero, instale el Certbot con el siguiente comando:

apt-get install python3-certbot-nginx -y

Una vez finalizada la instalaci√≥n, ejecute el siguiente comando para instalar Let’s Encrypt SSL en su sitio web:

certbot --nginx -d jellyfin.example.com

Se le pedirá que proporcione una dirección de correo electrónico válida y acepte el término del servicio como se muestra a continuación:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): [email protected]

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for jellyfin.example.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/conf.d/jellyfin.conf

A continuación, elija si desea redirigir o no el tráfico HTTP a HTTPS como se muestra a continuación:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

Escriba 2 y presione Entrar para finalizar la instalación. Debería ver el siguiente resultado:

Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/jellyfin.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://jellyfin.example.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=jellyfin.example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/jellyfin.example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/jellyfin.example.com/privkey.pem
   Your cert will expire on 2020-10-30. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot again
   with the "certonly" option. To non-interactively renew *all* of
   your certificates, run "certbot renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

 - We were unable to subscribe you the EFF mailing list because your
   e-mail address appears to be invalid. You can try again later by
   visiting https://act.eff.org.

Ahora, su sitio web est√° protegido con Let’s Encrypt SSL. Puede acceder de forma segura utilizando la URL https://jellyfin.ejemplo.com.

Conclusión

¡Felicidades! ha instalado con éxito Jellyfin en el servidor Debian 10. Ahora puede compartir fácilmente sus medios con sus amigos, familiares y otros usuarios.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *