GNU/Linux >> Tutoriales Linux >  >> Debian

Cómo instalar Jellyfin Media Server en Debian 11 Bullseye

Jellyfin es una aplicación multimedia gratuita de código abierto diseñada para organizar, administrar y compartir archivos multimedia digitales con dispositivos en red en una red interna y se puede acceder a ella de forma remota. Es una plataforma cruzada y una alternativa a otros jugadores importantes, Plex y Emby. Puede acceder a él desde una variedad de dispositivos, como dispositivos móviles, tabletas, TV y PC, o dispositivos de medios populares como Roku o Nvidia Shield. Jellyfin también sirve medios para dispositivos habilitados para DLNA y Chromecast y puede obtener metadatos como lo hacen Plex y Emby para organizar sus medios en categorías en una rica experiencia multimedia.

Si desea probar, Jellyfin ha creado un servidor de demostración para iniciar sesión y comprobarlo por ti mismo.

En el siguiente tutorial, aprenderá cómo instalar Jellyfin en Debian 11 Bullseye, junto con cómo configurar sus unidades de medios para tener acceso correcto de lectura y escritura; además, si desea transmitir una opción de proxy inverso de Apache o Nginx de forma remota, cómo asegurarlo con el certificado SSL gratuito de Let's Encrypt para ambas aplicaciones web.

Actualizar Debian

Primero, antes de comenzar a asegurarse de que la instalación se realice sin problemas, actualice su sistema de la siguiente manera.

sudo apt update && sudo apt upgrade -y

Instalar paquetes necesarios

Antes de continuar con el tutorial, deberá asegurarse de tener instalados los siguientes paquetes:

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

Si no está seguro, simplemente ejecute el comando; no te hará daño.

Instalar servidor multimedia Jellyfin

Jellyfin no viene con el repositorio predeterminado de Debian, por lo que debe importar el repositorio y la clave GPG de Jellyfin.

Importar clave GPG

Primero, deberá importar la clave GPG para verificar la autenticidad del paquete; sin él, la instalación fallará:

sudo wget -O- https://repo.jellyfin.org/jellyfin_team.gpg.key | gpg --dearmor | sudo tee /usr/share/keyrings/jellyfin.gpg

Importar el Repositorio

El siguiente paso es importar el repositorio, puede importar la versión estable (recomendada) o inestable (beta/en desarrollo), por lo que entiendo, la inestable puede funcionar bien, pero solo sugeriría esto a los usuarios que tienen más confianza en el terminal y solucionar problemas si surgen y tiene tiempo.

SOLO IMPORTE UN REPOSITORIO A LA VEZ.

Importar JellyFin estable (recomendado):

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

Importar JellyFin inestable:

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

A continuación, termine, actualice la lista de su repositorio para reconocer las nuevas incorporaciones de la siguiente manera:

sudo apt upgrade

Instalar Jellyfin

Ahora que tiene ordenado el repositorio apt, ahora puede proceder a instalar el servidor de medios con el siguiente comando:

sudo apt install jellyfin -y

Una vez instalado, el servicio Jellyfin se iniciará automáticamente. Confirme esto, use el siguiente comando systemctl .

systemctl status jellyfin

Ejemplo de salida:

Si su servidor de medios no se ha iniciado por algún motivo, use los siguientes comandos:

Iniciar el servicio:

sudo systemctl start jellyfin

Habilitar en el arranque del sistema:

sudo systemctl enable jellyfin

Configuración inicial del servidor multimedia Jellyfin

Para acceder a la interfaz de usuario web de Jellyfin, debe abrir su navegador de Internet e ingresar 127.0.0.1 en el puerto predeterminado 8096 de Jellyfin.

Ejemplo a continuación:

http://127.0.0.1:8096

Verá la pantalla de bienvenida para la configuración inicial del servidor.

Seleccione su Idioma de visualización preferido y haga clic en el botón Siguiente -> para proceder.

A continuación, se encontrará con la creación de un nombre de usuario y una contraseña.

Crea un nombre de usuario y una contraseña; como se indica en la imagen de arriba, se pueden ingresar más usuarios una vez que se completa la configuración inicial. Una vez hecho esto, haga clic en el botón Siguiente -> para proceder.

Ahora puede configurar sus bibliotecas multimedia.

Haga clic en el gran + (signo más) o Añadir biblioteca multimedia botón. Desde aquí, puede agregar su carpeta de medios, la configuración es muy sencilla y los usuarios de Plex sentirían especialmente un parecido muy cercano. Una vez hecho esto, haga clic en Next -> botón para continuar.

La siguiente pantalla es la pantalla Idioma de metadatos:

Elija su Idioma , luego haga clic en el botón Siguiente -> .

Si va a utilizar o, en mejores palabras, acceder al servidor desde fuera o detrás de un proxy, asegúrese de configurar Permitir conexiones remotas a este servidor como es la configuración predeterminada. Si solo está accediendo a una red local, desactívelo.

Ahora verá la pantalla que dice que ha terminado la instalación.

Paso fácil, haga clic en el botón Finalizar para terminar.

Accederá a la pantalla de inicio de sesión para iniciar sesión con la cuenta de usuario y la contraseña que creó en la configuración inicial.

Ahora estarás en tu tablero.

Si configura un medio durante la instalación, aparecerá automáticamente.

Restablecer configuración inicial

Si cometió un error durante la configuración inicial, puede revertirlo con los siguientes pasos:

Abra el archivo system.xml:

sudo nano /etc/jellyfin/system.xml

Cambie lo siguiente, que se encuentra en la línea 4:

<IsStartupWizardCompleted>true</IsStartupWizardCompleted>

A esto:

<IsStartupWizardCompleted>false</IsStartupWizardCompleted>

Reiniciar el servidor Jellyfin:

sudo systemctl restart jellyfin

Una vez que haya restablecido la configuración inicial, vuelva a visitar HTTP://127.0 .0.1:8096 y reinicie el proceso de nuevo.

Permisos de configuración para unidades de medios

Jellyfin requerirá tener permiso de lectura y ejecución en sus directorios de medios. Puede usar chown o chgrp comandos; sin embargo, aprenderá a usar el comando setfacl para el tutorial. Esto está siendo cubierto ya que tiene el potencial, más adelante, de ser más seguro, y puede controlar el acceso a un nivel muy detallado en comparación con la forma predeterminada de chown y chgrp.

Para instalar, ejecute el siguiente comando:

sudo apt install acl -y

Debian debería tener esto instalado de forma predeterminada, pero ejecute el comando para estar seguro si no está seguro.

Ahora, tiene algunas opciones con el comando setfalc , pero, de manera realista, no tendrá que dar permisos a cada película y programa de televisión; en su lugar, la forma más fácil es usar el bandera recursiva (-R) que proporcionará acceso a Jellyfin que necesita para todo lo que se encuentra en el directorio y subdirectorios.

sudo setfacl -R -m u:jellyfin:rx /media/mymediadrive

Si necesita asignar permisos a archivos o directorios multimedia individuales, use lo siguiente:

sudo setfacl -m u:jellyfin:rx /media/mymediadrive/example-name-of-file-or-directory

Configurar Apache como proxy inverso

Puede configurar un proxy inverso para acceder a Jellyfin desde una computadora o red remota. En este ejemplo, el tutorial configurará un servidor proxy Apache. Si desea utilizar Nginx, omita esta parte y vaya a Configurar Nginx como proxy inverso.

Primero, instale Apache:

sudo apt install apache2 -y

De forma predeterminada, Apache debe estar habilitado si no está activado. usar:

sudo systemctl start apache2

Para permitir que Apache se inicie en el arranque, use el siguiente comando:

sudo systemctl enable apache2

Ejemplo de salida si tiene éxito:

Synchronizing state of apache2.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable apache2

Verifique el estado de Apache:

systemctl status apache2

Ejemplo de salida:

Para usar Apache como proxy inverso, debe habilitar el módulo con el siguiente comando:

sudo a2enmod proxy proxy_http headers proxy_wstunnel

A continuación, cree un host virtual para su subdominio:

sudo nano /etc/apache2/sites-available/jellyfin.conf

Necesitará un nombre de dominio activo que se puede comprar por tan solo 1 o 2 dólares si no tiene uno. Nombre barato tiene los mejores dominios baratos que existen y si prefiere un .com, use Cloudflare.

Después de haber creado su subdominio, agregue lo siguiente al archivo de bloque del servidor:

<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>

Guarde el archivo (CTRL+O) , luego salga (CTRL+X) .

Ahora haga una prueba para asegurarse de que no haya errores en la configuración de Apache o en su host virtual:

sudo apache2ctl configtest

Si todo funciona correctamente, el resultado del ejemplo debería ser:

Syntax OK

Habilite el host virtual en Apache de la siguiente manera:

sudo a2ensite jellyfin.conf

Luego reinicie Apache:

sudo systemctl restart apache2

Configurar Nginx como proxy inverso

Puede configurar un proxy inverso para acceder a Jellyfin desde una computadora o red remota. En este ejemplo, el tutorial configurará un servidor proxy Nginx.

Primero, instale Nginx:

sudo apt install nginx -y

De forma predeterminada, Nginx debe estar habilitado si no está activado. usar:

sudo systemctl start nginx

Para permitir que Nginx se inicie en el arranque, use el siguiente comando:

sudo systemctl enable nginx

Ejemplo de salida si tiene éxito:

Synchronizing state of nginx.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable nginx

Verificar el estado de Nginx:

systemctl status nginx

Ejemplo de salida:

Si desea instalar la última compilación de Nginx, consulte nuestro tutorial sobre instalación de la última línea principal o estable de Nginx n Debian 11.

Ahora, cree un nuevo bloque de servidor de la siguiente manera:

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

Necesitará un nombre de dominio activo que se puede comprar por tan solo 1 o 2 dólares si no tiene uno. Nombre barato tiene los mejores dominios baratos que existen y si prefiere un .com, use Cloudflare.

Después de haber creado su subdominio, agregue lo siguiente al archivo de bloque del servidor:

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

Guarde el archivo (CTRL+O) , luego salga (CTRL+X) .

Ahora haga una prueba para asegurarse de que no haya errores en la configuración de Nginx o en el bloqueo de su servidor:

sudo nginx -t

Si todo funciona correctamente, el resultado del ejemplo debería ser:

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

Vuelva a cargar Nginx para que el cambio surta efecto:

sudo systemctl reload nginx

Si ha configurado su dominio y registros DNS para que apunten a la IP de su servidor, ahora puede acceder a su servidor multimedia Jellyfin en jellyfin.example.com .

Proteja Nginx o Apache con el certificado Let's Encrypt SSL gratuito

Idealmente, le gustaría ejecutar su Apache o Nginx en HTTPS usando un certificado SSL. La mejor manera de hacerlo es usar Let's Encrypt, una autoridad de certificación abierta, automatizada y gratuita administrada por la organización sin fines de lucro Internet Security Research Group (ISRG).

Primero, instale el paquete certbot, que coincida con el proxy inverso que instaló.

Apache:

sudo apt install python3-certbot-apache -y

Nginx:

sudo apt install python3-certbot-nginx -y

Una vez instalado, ejecute el siguiente comando para iniciar la creación de su certificado:

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

Esta configuración ideal incluye forzar redireccionamientos HTTPS 301, un encabezado de seguridad de transporte estricto y grapado OCSP. Solo asegúrese de ajustar el correo electrónico y el nombre de dominio a sus requisitos.

Ahora su URL será https://jellyfin.example.com en lugar de HTTP://jellyfin.example.com .

Cómo actualizar/mejorar el servidor multimedia Jellyfin

Jellyfin se puede actualizar según el comando de actualización estándar que usaría la mayor parte de su tiempo actualizando paquetes en su sistema.

Use el siguiente comando para buscar actualizaciones, y esto también detectará automáticamente cualquier otra cosa.

sudo apt upgrade

Si hay uno disponible, use el comando de actualización:

sudo apt upgrade

Cómo eliminar (desinstalar) Jellyfin Media Server

Los usuarios que ya no necesiten el software pueden eliminar Jellyfin de su sistema Debian.

Primero, elimine el software usando el siguiente comando.

sudo autoremove install jellyfin --purge -y

A continuación, elimine el repositorio agregado si no tiene planes de usar Jellyfin nuevamente.

sudo rm /etc/apt/sources.list.d/jellyfin.list

Y eso es todo; ha eliminado con éxito Jellyfin de su sistema.


Debian
  1. Cómo instalar Plex Media Server en Debian 9

  2. Cómo instalar el servidor multimedia Jellyfin en Debian 10

  3. Cómo instalar Docker en Debian 11 (Bullseye)

  4. Cómo instalar Jellyfin Media Server en Debian 10 Buster

  5. Cómo instalar TeamViewer en Debian 11 Bullseye

Cómo instalar Discourse en el servidor Debian 11 Bullseye

Cómo instalar Plex Media Server en Debian 10 Buster

Cómo instalar el servidor multimedia Jellyfin en Debian 11

Cómo instalar Plex Media Server en Debian 11

Cómo instalar Jellyfin Media Server en Ubuntu 20.04

Cómo instalar Plex Media Server en Debian 10