Cómo instalar el servidor multimedia Jellyfin en Debian 12
Jellyfin es un software gratuito para crear un servidor multimedia. Te permite recopilar, gestionar y transmitir tus archivos multimedia desde múltiples dispositivos o clientes. Jellyfin es una aplicación gratuita y autoalojada que se puede instalar en tu servidor, por lo que puedes crear tu propio servidor multimedia en tu entorno local, como en casa, y luego permitir que múltiples clientes y dispositivos accedan a todos tus archivos multimedia.
Jellyfin es un servidor de archivos multimedia alternativo a los propietarios como Emby y Plex. Te permite gestionar archivos multimedia desde cualquier dispositivo y en cualquier lugar.
Esta guía te mostrará cómo instalar el servidor multimedia Jellyfin en Debian 12. Instalarás Jellyfin mediante un paquete binario preconstruido y lo asegurarás con UFW (Cortafuegos sin complicaciones), certificados SSL/TLS de Letsencrypt y el proxy inverso Apache2.
Requisitos previos
Para comenzar el proceso, asegúrate de que tienes lo siguiente
- Un servidor Debian 12 con 2 ó 4 GB de memoria.
- Un usuario no root con privilegios de administrador.
- Un nombre de dominio apuntando a la dirección IP del servidor.
Añadir el repositorio Jellyfin
El servidor multimedia Jellyfin puede instalarse de muchas formas, manualmente o mediante un paquete preconstruido que está disponible para la mayoría de las distribuciones de Linux. En este primer paso, añadirás el repositorio de Jellyfin a tu servidor Debian.
En primer lugar, ejecuta el siguiente comando apt para instalar las dependencias en tu máquina Debian.
sudo apt install apt-transport-https ca-certificates gnupg curl -y
Una vez instaladas las dependencias, ejecuta el siguiente comando para añadir la clave GPG del repositorio jellyfin, que se almacenará en /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
Ahora ejecuta el siguiente comando para añadir el repositorio jellyfin a tu servidor Debian. Tras ejecutar el comando, se creará el archivo del repositorio /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
Por último, actualiza y refresca tu índice de paquetes Debian utilizando el comando apt update que aparece a continuación.
sudo apt update
Deberías ver el repositorio jellyfin añadido a la lista de repositorios del sistema.
Instalar y gestionar Jellyfin
Con el repositorio jellyfin añadido, estás listo para instalar el servidor multimedia jellyfin. Sigue estos pasos para instalar jellyfin y aprender a gestionar el servicio jellyfin mediante systemctl.
Ejecuta el siguiente comando apt install para instalar el servidor multimedia jellyfin. Escribe y para la confirmación y pulsa ENTER para continuar.
sudo apt install jellyfin
Tras la instalación, asegúrate de que el servicio Jellyfin se está ejecutando y está habilitado mediante el comando que aparece a continuación.
sudo systemctl is-enabled jellyfin sudo systemctl status jellyfin
Si se está ejecutando, deberías ver la salida activo (en ejecución). Si está habilitado, la salida que deberías obtener es habilitado. Esto significa que Jellyfin se iniciará automáticamente al arrancar el sistema.
Por defecto, Jellyfin se ejecuta en localhost con el puerto 8096. Ejecuta el siguiente comando ss para verificar la lista de puertos de tu sistema Debian.
ss -tulpn
Verás que el puerto 8096 es utilizado por el servidor multimedia Jellyfin.
Por último, ejecuta el siguiente comando systemctl para iniciar, detener o reiniciar el servicio Jellyfin.
sudo systemctl start jellyfin sudo systemctl stop jellyfin sudo systemctl restart jellyfin
Configuración de seguridad con UFW
En la siguiente sección, asegurarás tu servidor multimedia Jellyfin mediante UFW. Instalarás UFW y, a continuación, abrirás los protocolos HTTP y HTTPS para el acceso de los clientes. Debes abrir los protocolos HTTP y HTTPS porque utilizarás Apache2 como proxy inverso.
En primer lugar, instala UFW mediante el comando apt install que aparece a continuación.
sudo apt install ufw -y
Una vez instalado UFW, ejecuta el siguiente comando ufw para añadir el servicio OpenSSH y, a continuación, inicia y habilita UFW.
sudo ufw allow OpenSSH sudo ufw enable
Escribe y cuando te lo pida y UFW debería estar ejecutándose y habilitado.
Ahora ejecuta el siguiente comando para añadir el perfil WWW Comple to y verificar el estado de UFW. El perfil WWW Completo abrirá los protocolos HTTP y HTTPS en tu sistema Debian.
sudo ufw allow "WWW Full" sudo ufw status
El resultado debería indicar que la UFW está activa con los perfiles OpenSSH y WWW Completo activados.
Instalación y configuración de Apache2 como proxy inverso
En esta guía, ejecutarás el servidor multimedia Jellyfin dentro de Apache2 como proxy inverso. También asegurarás tu instalación con certificados SSL/TLS generados mediante Certbot y Letsencrypt.
Ahora, completa las siguientes tareas: instala Apache2 y Certbot, genera certificados SSL/TLS y crea la configuración del host virtual Apache2 para el servidor multimedia Jellyfin.
Instalar Apache2 y Certbot
En primer lugar, ejecuta el siguiente comando para instalar el servidor web Apache2 y Certbot. Escribe y para la confirmación y pulsa INTRO.
sudo apt install apache2 certbot
Una vez finalizada la instalación, el servicio apache2 debería estar ejecutándose y activado por defecto. Compruébalo utilizando el siguiente comando systemctl.
sudo systemctl is-enabled apache2 sudo systemctl status apache2
La salida enabled indica que el servicio apache2 se iniciará automáticamente al arrancar. Y la salida active (running ) indica que el estado del servicio es running.
Generar certificados SSL/TLS con Certbot
Antes de generar certificados SSL/TLS, habilita algunos módulos de Apache2 mediante el comando a2enmod y reinicia el servicio Apache2.
sudo a2enmod proxy proxy_http ssl proxy_wstunnel remoteip http2 headers sudo systemctl restart apache2
Ahora ejecuta el siguiente comando para crear un nuevo directorio /var/www/html/jellyfin/public_html y cambia la propiedad al usuario y grupo www-data. Este directorio se utilizará como directorio raíz web temporal para generar certificados SSL/TLS.
sudo mkdir -p /var/www/html/jellyfin/public_html sudo chown -R www-data:www-data /var/www/html/jellyfin/public_html
A continuación, ejecuta el siguiente comando certbot para generar nuevos certificados SSL/TLS. Asegúrate de cambiar la dirección de correo electrónico y el nombre de dominio antes de ejecutar el comando.
sudo certbot certonly --agree-tos --email [email protected] --no-eff-email --webroot -w /var/www/html/jellyfin/public_html -d media.hwdomain.io
Tras el proceso, tus certificados SSL/TLS estarán disponibles en el directorio /etc/letsencrypt/live/domain.com. El archivo fullchain.pem es la clave pública y el privkey.pem es la clave privada.
Configurar Apache2 como proxy inverso
Crea una nueva configuración de host virtual /etc/apache2/sites-available/jellyfin. conf utilizando el siguiente comando del editor nano.
sudo nano /etc/apache2/sites-available/jellyfin.conf
Inserta la configuración que aparece a continuación y asegúrate de cambiar el nombre de dominio, la ruta de los certificados SSL/TLS y la dirección IP del servidor con tu información. Con esto, configurarás Apache2 como proxy inverso para el servidor multimedia jellyfin que se ejecuta en el puerto 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>
Guarda el archivo y sal del editor cuando hayas terminado.
A continuación, ejecuta el comando a2ensite que aparece a continuación para activar el host virtual jellyfin.conf, y luego verifica tu sintaxis de Apache2.
sudo a2ensite jellyfin.conf sudo apachectl configtest
Si la sintaxis de Apache2 es correcta, deberías obtener una salida Sintaxis OK.
Ahora reinicia el servicio apache2 utilizando el siguiente comando para aplicar los cambios. Tu instalación de jellyfin debería estar funcionando y asegurada bajo el proxy inverso Apache2.
sudo systemctl restart apache2
Inicia tu navegador web y visita el nombre de dominio de tu instalación de Jellyfin, como https://media.hwdomain.io/. Si la configuración se ha realizado correctamente, deberías obtener el asistente de instalación de Jellyfin de la siguiente forma:
Instalación del servidor multimedia Jellyfin
En el siguiente paso, completarás la configuración del servidor multimedia Jellyfin mediante el asistente de instalación.
En primer lugar, selecciona el idioma predeterminado para tu instalación de Jellyfin y haz clic en Siguiente.
Ahora, crea un nuevo usuario administrador para tu instalación de Jellyfin. Introduce tu nombre de usuario y contraseña, y haz clic en Siguiente.
Para las bibliotecas multimedia, puedes configurarlas más adelante. Haz clic en Siguiente para continuar.
Selecciona el idioma de metadatos que prefieras para tus bibliotecas y haz clic en Siguiente.
Marca la opción Permitir conexiones remotas para permitir el acceso remoto a tu servidor multimedia jellyfin. Además, puedes habilitar la asignación de puertos marcando la opción. A continuación, haz clic en Siguiente.
Si la configuración se ha realizado correctamente, deberías recibir el mensaje ¡Has terminado! Haz clic en Finalizar para completar la instalación de jellyfin.
Ahora, deberías ser redirigido a la página de inicio de sesión de Jellyfin. Introduce tu usuario y contraseña de administrador de Jellyfin y haz clic en Iniciar sesión.
Si todo va bien, deberías obtener el panel de administración de Jellyfin como este:
Por último, haz clic en el menú Panel de control de la sección Administración. Deberías ver información detallada sobre la instalación de tu servidor multimedia Jellyfin:
Conclusión
Como conclusión de esta guía, has terminado la instalación del servidor multimedia Jellyfin en Debian 12 con el proxy inverso Apache2 y SSL/TLS de Letsencrypt. También has asegurado tu servidor Jellyfin con UFW y has completado la configuración básica del servidor multimedia Jellyfin. Puedes crear una nueva biblioteca multimedia y subir tus archivos multimedia a Jellyfin.