Durante años fui usuario de Plex. Lo consideraba la solución definitiva para tener mi biblioteca de películas y series accesible desde cualquier dispositivo. Luego llegaron los cambios en las condiciones del servicio, la cuenta online obligatoria para acceder a tu propio servidor en red local, y la dirección cada vez más claramente orientada a convertirlo en otra plataforma de contenido de pago.
No digo que Plex sea malo. Sigue siendo muy bueno en muchas cosas. Pero cuando empecé a investigar alternativas, encontré Jellyfin y me di cuenta de que no necesito Plex para lo que yo hago.
Jellyfin nació como un fork de Emby cuando Emby cerró su código fuente en 2018. Es completamente libre, sin suscripciones, sin nube obligatoria, sin limitaciones de transcodificación en la versión gratuita. Todo lo que en Plex requiere Plex Pass, en Jellyfin viene incluido por defecto.
Por qué Jellyfin y no Plex#
La respuesta corta: porque Jellyfin no necesita una cuenta online para funcionar.
Plex requiere que te autentiques en sus servidores para acceder a tu propio servidor local. Si los servidores de Plex tienen un problema, o si Plex decide cambiar sus condiciones, o simplemente si tu conexión a internet está caída, no puedes ver tu propia biblioteca desde algunos clientes. Eso es un problema de diseño fundamental para un servidor self-hosted.
Jellyfin funciona completamente en local. Creas una cuenta de administrador en tu instalación, accedes directamente por IP o dominio local, y no hay ningún servidor externo en el camino. Puedes exponerlo a internet con Tailscale o Cloudflare Tunnels si quieres acceso remoto, pero eso es tu decisión y tu control.
Las otras diferencias que importan para homelab:
La transcodificación por hardware (NVENC, QuickSync, VAAPI) está disponible sin pagar nada extra. En Plex necesitas Plex Pass para eso.
Los plugins de metadatos son gratuitos. En Plex el modelo freemium toca algunos de los mejores plugins.
El código es abierto. Si algo falla, puedes investigar. Si quieres una función, puedes contribuirla o esperar a que alguien lo haga.
Instalación con Docker Compose#
La forma más limpia de instalarlo en homelab es con Docker Compose. Jellyfin tiene imagen oficial que funciona bien.
Antes de instalar, decide dónde van a estar los datos y dónde está tu biblioteca de media. En mi caso tengo los medios en un NAS montado por NFS en el servidor.
| |
Uso network_mode: host porque facilita el autodescubrimiento en red local. Algunos clientes de Jellyfin (como el de Android TV) pueden encontrar el servidor automáticamente si está en la misma red, igual que Plex.
El volumen de media lo monto como solo lectura (ro). Jellyfin no necesita escribir en tu biblioteca, y limitar los permisos es una buena práctica.
| |
Accedes a http://ip-del-servidor:8096 y aparece el asistente de configuración inicial.
Configuración inicial#
El asistente te pide crear el usuario administrador, elegir el idioma y añadir las bibliotecas.
Cuando añades una biblioteca, seleccionas el tipo (películas, series, música, libros, fotos) y la carpeta. Jellyfin empieza a escanear los medios y a descargar metadatos automáticamente.
Algo que ayuda mucho para las películas y series es tener los archivos con nombres que los scrapers de metadatos puedan identificar. El estándar es Nombre de la Película (Año).mkv para películas y Nombre Serie/Season 01/Nombre Serie S01E01.mkv para series. Si tienes la biblioteca organizada así, el 95% de los medios se identifican solos.
Para metadatos en español hay que ajustar el orden de preferencia de los proveedores. Por defecto usa The Movie Database (TMDB) y TheTVDB, que tienen buena cobertura en español si está disponible en esos servicios. En Ajustes > Biblioteca > Metadatos, puedes configurar el idioma preferido.
Transcodificación por hardware#
Este es uno de los puntos fuertes de Jellyfin. La transcodificación por hardware reduce el uso de CPU cuando un cliente necesita un formato diferente al que está almacenado.
El escenario típico: tienes una película en H.265 (HEVC) y la ves desde un dispositivo que no soporta HEVC nativamente, como ciertos Smart TVs o el navegador web. Jellyfin tiene que transcodificar al vuelo a H.264. Sin aceleración hardware, eso come mucha CPU. Con aceleración, lo hace la GPU en tiempo real sin casi carga de CPU.
Intel QuickSync (iGPU Intel)#
Para servidores con procesador Intel con gráficos integrados, QuickSync es muy eficiente. En Docker, hay que pasar el dispositivo de la GPU:
| |
En la configuración de Jellyfin (Panel de administración > Codificación), seleccionas “Intel QuickSync (QSV)” como acelerador y activas los codecs que quieras usar (H.264, HEVC, AV1 si el procesador lo soporta).
El Intel N100, muy popular en mini PCs para homelab, tiene QuickSync de 12ª generación con soporte para AV1. Transcodifica 4K HEVC sin sudar.
NVIDIA NVENC#
Para servidores con GPU NVIDIA, el proceso requiere instalar el runtime de NVIDIA para Docker:
| |
Luego en el docker-compose añadir:
| |
Y en la configuración de Jellyfin seleccionar NVENC como acelerador.
AMD VAAPI#
Para GPUs AMD y también para Intel en sistemas más antiguos donde QSV no funciona bien, VAAPI es la alternativa:
| |
En configuración de Jellyfin seleccionar “Video Acceleration API (VAAPI)”.
Los clientes#
Jellyfin tiene clientes para prácticamente todo. Algunos los mantiene el proyecto oficial, otros son de la comunidad.
Web: el cliente web que viene incluido. Funciona en cualquier navegador. Límite: los navegadores tienen restricciones en los codecs que soportan, así que si el archivo está en un formato que el navegador no soporta, Jellyfin tiene que transcodificar siempre. Para ver en el navegador del ordenador del trabajo sin instalar nada, cumple.
Android y Android TV: la app oficial está en F-Droid y en la Play Store. La versión de Android TV es bastante buena, con soporte para reproducción directa de la mayoría de formatos y acceso a los controles del mando a distancia.
iOS/tvOS: hay app oficial, aunque con algunas limitaciones por las restricciones de Apple respecto a los codecs de terceros.
Infuse (iOS/tvOS/macOS): esta es la mejor opción para el ecosistema Apple. Infuse es una app de pago (hay versión gratuita con limitaciones) que soporta casi cualquier formato de video y tiene soporte para servidores Jellyfin. La experiencia es notablemente mejor que la app oficial de Jellyfin en iOS.
Jellyfin Media Player (escritorio): cliente de escritorio basado en MPV. Soporta todos los formatos que MPV soporta (prácticamente todo), tiene reproducción directa sin transcodificación y es la opción más potente para ver desde el ordenador.
Kodi: hay plugin oficial de Jellyfin para Kodi. Si tienes Kodi en un HTPC o Amazon Fire Stick, puedes conectarlo a tu servidor Jellyfin.
Funciones que uso más allá del playback básico#
Perfiles de usuario y control parental#
Jellyfin tiene un sistema de usuarios. Puedo tener mi usuario con acceso a todo y usuarios con acceso restringido a ciertas bibliotecas o con límites de clasificación de edad. Útil si quieres dar acceso a alguien más sin que vea todo.
Las cuentas son locales. No hay que crear cuentas en ningún servicio externo.
Sincronización del progreso de visualización#
Jellyfin recuerda dónde dejaste cada película o episodio. Empiezas a ver algo desde el cliente web en el ordenador y continúas desde el móvil donde lo dejaste. Funciona entre todos los clientes que soporten la API de Jellyfin.
Gestión de subtítulos#
Jellyfin descarga subtítulos automáticamente si los configuras. Soporta OpenSubtitles y otras fuentes. También puede usar los subtítulos que tengas en los archivos o en la carpeta junto al video.
Para películas en idioma original, el sistema de subtítulos automático me ahorra buscarlos manualmente.
Colecciones y listas de reproducción#
Puedes crear colecciones para agrupar películas relacionadas (trilogías, sagas de un director, etc.) y listas de reproducción para música o para encadenar episodios de series de formas no lineales.
Rendimiento y recursos#
Jellyfin en reposo consume muy poco. Con la instalación base con Docker, el proceso base usa entre 50 y 150 MB de RAM cuando nadie está viendo nada.
Cuando hay streams activos depende mucho de si hay transcodificación. Con reproducción directa (el cliente soporta el formato y no necesita convertir nada), el consumo adicional es mínimo, solo la lectura del disco y el envío de datos por red.
Con transcodificación por software, un stream 1080p H.265 a H.264 puede usar fácilmente el 50-100% de un núcleo de CPU moderno. Por eso la aceleración por hardware marca tanta diferencia.
En mi servidor con Intel N100 (4 núcleos, 16 GB RAM), puedo tener 3-4 streams 1080p con transcodificación por hardware sin que el servidor sude. El consumo de QuickSync apenas es perceptible en las métricas de CPU.
La comparativa con Plex que nadie quiere hacer pero todos quieren leer#
Seré directo: Plex tiene mejor pulido de UI, mejores aplicaciones en algunas plataformas (especialmente Roku y Apple TV), y un ecosistema más maduro. Si la experiencia visual y el acabado importan más que el control, Plex sigue siendo mejor en eso.
Jellyfin gana en todo lo que tiene que ver con control y privacidad. Sin cuenta online, sin datos enviados a terceros, sin funciones de pago para lo básico, sin riesgo de que el servicio cambie las condiciones mañana.
Llevo usando Jellyfin varios meses junto a Plex, y para el 90% de lo que hago, Jellyfin cubre perfectamente. El 10% restante, las películas que solo veo en Apple TV con la app de Plex que tiene mejor integración con el ecosistema, todavía uso Plex.
Si empezaras hoy desde cero, yo empezaría con Jellyfin.
Migrar desde Plex#
No hay una herramienta oficial de migración, pero el proceso no es complicado si tu biblioteca ya está organizada correctamente.
Los medios no hay que moverlos. Jellyfin apunta a la misma carpeta que Plex y los descansa escanear y descargar metadatos propios.
Lo que sí hay que rehacer: las listas de reproducción, las colecciones personalizadas, el historial de visualización y las valoraciones. No hay forma automática de migrar eso.
Para quien tenga una biblioteca grande bien organizada, la migración es principalmente esperar a que Jellyfin descargue los metadatos. Dependiendo del tamaño puede llevar horas, pero es un proceso automático.
El historial de visualización lo perdí. Asumí que era el precio del cambio y empecé de cero. En retrospectiva, no ha sido ningún problema.