Saltar al contenido
homelab@casa:~/servidor
~$homelabista

// JELLYFIN

Jellyfin como alternativa a Plex: instalarlo en Docker

Qué es Jellyfin y por qué es la alternativa libre a Plex. Cómo montarlo en Docker paso a paso y transcodificar con QuickSync, medido en un Intel N100.

14 min de lecturaGonzalo
  • #jellyfin
  • #plex
  • #docker
  • #quicksync
  • #servidor-multimedia
Jellyfin, la alternativa libre a Plex, en Docker sobre un mini PC Intel N100

El día que Plex me pidió iniciar sesión en su nube para ver una peli que tengo en un disco a tres metros de mí, algo hizo clic. Mi biblioteca, mi hardware, mi salón. ¿Por qué tengo que pasar por un servidor de una empresa en California para reproducir un archivo que es mío? Esa pregunta es exactamente la que responde Jellyfin.

Jellyfin es un servidor multimedia libre y gratuito. Ni cuentas, ni Plex Pass, ni funciones capadas detrás de una suscripción: coges tu colección de películas, series y música, la sirves a la tele, al móvil o al navegador, y se acabó. Lo he montado en el mismo mini PC con el que llevo el resto del laboratorio y aquí están los números reales, no un folleto.

[aff]Hay enlaces de afiliado más abajo: si compras algo desde ellos me llevo una pequeña comisión y a ti no te cuesta ni un céntimo más. En calidad de Afiliado de Amazon, obtengo ingresos por las compras adscritas que cumplen los requisitos aplicables.

Qué es Jellyfin y en qué se parece (y en qué no) a Plex

Si vienes de Plex, la sensación es de casa. Organiza tu biblioteca, te baja carátulas y sinopsis, tiene apps para casi todo y reproduce en el navegador sin instalar nada. La diferencia de fondo es la filosofía: Jellyfin es un fork de Emby que nació precisamente cuando aquel cerró el código, y todo su desarrollo es comunitario. No hay una empresa que un día decida que la función que usabas ahora cuesta seis euros al mes.

Lo segundo importante: Jellyfin no mete tu servidor en la nube de nadie. Plex, incluso para reproducir en tu propia red, autentica contra sus servidores. Si Plex tiene un mal día, tú lo notas. Jellyfin va directo, servidor y cliente, por tu LAN o por tu VPN si sales de casa. Para el que monta un homelab por soberanía sobre sus datos, eso no es un detalle menor.

Lo que hace bien, y lo que vas a echar de menos

No te voy a vender que Jellyfin es Plex pero gratis y punto. Sería mentira y aquí no vendemos motos.

Lo que hace de sobra: reproducción local impecable, transcodificación por hardware (ahora vamos a ello), gestión de usuarios, subtítulos, sincronización de progreso entre dispositivos. Para el 90% de lo que la gente usa un servidor de cine en casa, cumple sin peros.

Lo que aún le falta frente a Plex: el acceso remoto es más manual. Plex te resuelve el ver-fuera-de-casa con un par de clics; en Jellyfin lo limpio es montarte una VPN —yo salgo por WireGuard, y de hecho tengo una guía de por qué la Pi 5 es perfecta para eso—. Las apps de tele oficiales han mejorado un montón, pero el catálogo de clientes de Plex sigue siendo más amplio y pulido. Y no tiene el equivalente exacto a “Descubrir” con contenido en streaming integrado, cosa que a mí personalmente me da igual, pero a alguien le importará.

Montarlo en Docker: el compose que uso de verdad

Aquí va la parte que has venido a buscar. Mi servidor de servicios del laboratorio es un Beelink con Intel N100 —el mismo cacharro de bajo consumo del que hablo en la comparativa de mini PC—, con Docker por encima. Plex, por herencia, me corre nativo por systemd desde antes de dockerizar la casa; Jellyfin lo he metido en contenedor, que es como lo montaría hoy cualquiera empezando de cero.

Este es el docker-compose.yml tal cual lo tengo funcionando:

services:
  jellyfin:
    image: jellyfin/jellyfin:latest
    container_name: jellyfin
    user: 1000:1000
    group_add:
      - "993"          # grupo render, para /dev/dri
    ports:
      - "8096:8096"
    devices:
      - /dev/dri:/dev/dri   # la gráfica Intel, para transcodificar
    volumes:
      - ./config:/config
      - ./cache:/cache
      - ./media:/media:ro   # tu biblioteca, en solo lectura
    environment:
      - TZ=Europe/Madrid
    mem_limit: 2g
    cpus: 2.0
    restart: unless-stopped

Un docker compose up -d y a los pocos segundos tienes la interfaz en http://IP-del-servidor:8096. La primera vez sale un asistente que te pide idioma, un usuario admin y las carpetas de tu biblioteca. Cinco minutos.

Dos cosas que te ahorro, porque las pagué yo:

El montaje /media:ro no es paranoia: un servidor multimedia no tiene por qué poder borrar tu colección. Si un día algo va mal o te comprometen el contenedor, tus archivos no se tocan. Cuesta cero y duermes mejor.

Diagrama de cómo Jellyfin en Docker usa la gráfica Intel del N100 para transcodificar por VAAPI
Cuando el cliente entiende el archivo, Jellyfin lo reenvía tal cual (Direct Play) y el servidor casi no trabaja. Cuando no, entra la gráfica.

El detalle que casi todos se saltan: transcodificar por hardware

Esto es lo que separa un servidor que funciona de uno que da tirones. Cuando el aparato donde ves la peli no entiende el archivo, alguien tiene que reconvertirlo al vuelo. Si ese trabajo lo hace la CPU, un N100 se ahoga. Si lo hace el chip de vídeo integrado (Intel lo llama Quick Sync), vuela. Ya desmenucé el porqué en la guía de transcodificación; aquí lo que toca es enseñar que en Jellyfin también funciona, y a cuánto.

Primero, comprobar que la gráfica está accesible dentro del contenedor y qué sabe hacer. Le pregunté a la propia máquina con vainfo (que Jellyfin trae en su ffmpeg):

VAProfileH264Main    : VAEntrypointEncSlice
VAProfileH264Main    : VAEntrypointEncSliceLP
VAProfileH264High    : VAEntrypointEncSlice
VAProfileH264High    : VAEntrypointEncSliceLP

Ese EncSliceLP es la clave: el N100 solo codifica H.264 en modo low power. Si lo ignoras, ffmpeg te suelta un críptico Function not implemented. Media hora perdí con eso la primera vez, y no fui el único.

Con eso claro, medí el mismo trabajo por los dos caminos, usando el ffmpeg que empaqueta Jellyfin (versión 7.1.4). Convertir un vídeo 1080p a 720p:

# Por hardware (Quick Sync / VAAPI)
$ ffmpeg -hwaccel vaapi -vaapi_device /dev/dri/renderD128 \
    -i src.mp4 -vf scale_vaapi=1280:720 \
    -c:v h264_vaapi -low_power 1 -b:v 4M -f null -
  speed=11.3x

# Por software (la CPU a pelo)
$ ffmpeg -i src.mp4 -vf scale=1280:720 -c:v libx264 \
    -preset veryfast -b:v 4M -f null -
  speed=1.78x

Léelo despacio. Por hardware, ese N100 reconvierte a 11,3 veces la velocidad a la que se ve el vídeo: le sobra para servir varias pelis a la vez con la CPU medio dormida. Por software cae a 1,78x: técnicamente va por encima del tiempo real en 1080p, pero con la CPU clavada, sin margen para un segundo stream y calentando el cacharro para nada. En 4K por software, ya te adelanto, ni eso.

Un aviso para no venderte humo: ese clip de prueba es material sintético, más fácil de comprimir que una película real, así que tómate el 11,3x como el techo del hardware, no como una promesa de un número exacto de pantallas. Con 4K y HDR de verdad —incrustar subtítulos, mapear el tono— los números bajan. La idea que sí te llevas es la de siempre: por hardware sobra de largo; por software, ni te molestes.

Gráfica de velocidad de transcodificación 1080p a 720p en el Intel N100: Quick Sync 11,3x frente a software 1,78x
El mismo trabajo, dos caminos. Por hardware el N100 va sobrado; por software apenas pasa del tiempo real, con la CPU clavada y sin margen para un segundo stream.

En la interfaz de Jellyfin esto se activa en Panel → Reproducción → Aceleración por hardware → Video Acceleration API (VAAPI), con el dispositivo /dev/dri/renderD128. Marca los códecs que quieras descargar (H.264 y HEVC), guarda, y a partir de ahí las transcodificaciones pasan por el silicio en vez de por la CPU. El group_add: 993 y el devices: /dev/dri del compose son lo que hace que el contenedor pueda tocar la gráfica; sin eso, VAAPI ni aparece.

Panel de aceleración por hardware de Jellyfin con VAAPI seleccionado, dispositivo /dev/dri/renderD128 y códecs H264, HEVC y VP9 activados
Los cuatro ajustes que encienden la gráfica. En el N100, si no marcas la codificación de bajo consumo, H.264 ni arranca.

Lo que ocupa de verdad encendido

Un servidor de cine está encendido las veinticuatro horas, así que lo que consume en reposo importa más que el pico. Con el contenedor arrancado, la biblioteca cargada y nadie reproduciendo, esto es lo que gasta:

$ docker stats jellyfin --no-stream
RAM  144.1 MiB / 2 GiB    CPU  0.33%

144 MiB de RAM en reposo. En un mini PC con 16 GB eso es ruido de fondo: te caben Jellyfin, un Pi-hole, el blog, un par de bots y lo que se te ocurra sin despeinar la máquina. Le puse un tope de 2 GB en el compose por costumbre —para que un transcode desbocado nunca se coma la RAM de otros servicios—, pero ni de lejos lo roza en marcha normal.

Y de consumo eléctrico, lo de siempre con el N100: ronda los 8-10 W sirviendo, menos que la bombilla del pasillo. Un servidor de cine que no oyes y que en la factura no se nota.

¿En qué equipo lo monto?

Jellyfin corre hasta en una Raspberry Pi, pero con matices: para reproducir formatos que tus aparatos ya entienden (direct play) la Pi tira; para transcodificar al vuelo no está pensada, porque no tiene un Quick Sync equivalente y acaba usando la CPU. Para eso, un mini PC x86 con gráfica Intel es el punto dulce.

Comparativa de Raspberry Pi 5, mini PC con Intel N100 y mini PC Ryzen para direct play y transcodificación por hardware en Jellyfin
Para direct play casi cualquier cosa vale. La diferencia está en el transcode al vuelo: ahí la gráfica Intel del N100 es la que menos guerra da.

Para empezar sobrado (y es el que uso)

Mini PC Beelink Mini S12 Pro con procesador Intel N100 para homelab
Nuestra elección · primer servidor

Beelink Mini S12 Pro — Intel N100, 16 GB

Tu primer servidor 24/7. Contenedores, transcodificación de vídeo por QuickSync y un puñado de servicios sin que la factura de la luz se entere. Es el que operamos nosotros.

  • +iGPU con QuickSync: transcodifica por hardware
  • +Consumo mínimo, silencioso de verdad
  • +x86 total: cualquier contenedor corre
  • -Se queda corto para virtualizar en serio (varias VM)
  • -Solo una ranura NVMe
coste orientativo
Ver precio en Amazon →

Es literalmente el hardware con el que he medido todo lo de arriba. Un N100 con Quick Sync transcodifica lo que le eches en 1080p, se defiende en 4K, gasta una miseria y no hace ruido. Para la inmensa mayoría de casas, empieza y termina aquí.

Si además quieres que te haga de NAS silencioso

Beelink ME Mini, mini NAS con seis ranuras M.2 para almacenamiento flash
El NAS de bolsillo

Beelink ME Mini — Intel N95, 6x M.2

Un NAS todo-flash silencioso: seis ranuras M.2 y fuente integrada en una caja diminuta. Le pones un sistema NAS y a correr.

  • +Seis ranuras M.2 en formato mínimo
  • +Sin discos girando: silencio absoluto
  • +Fuente integrada, consumo irrisorio
  • -No es para 40 TB baratos en discos de 3,5 pulgadas
  • -Un chip de bajo consumo de cuatro núcleos no está pensado para virtualizar
coste orientativo
Ver precio en Amazon →

Misma familia Intel, un pelín más rápido, pero con seis ranuras M.2 para llenarlo de SSD. Mismo Quick Sync para Jellyfin y encima te resuelve el almacenamiento de la biblioteca sin discos externos colgando.

Si vienes de AMD o quieres un todoterreno

Mini PC Beelink SER8 con Ryzen 7 8845HS para virtualización en homelab
El todoterreno

Beelink SER8 — Ryzen 7 8845HS

Virtualización con varias máquinas a la vez, transcodifica de sobra y hasta echa una partida. 8 núcleos Zen 4 y hasta 64 GB de RAM ampliables.

  • +8 núcleos / 16 hilos Zen 4, Radeon 780M
  • +Dos ranuras NVMe, hasta 64 GB de RAM
  • +Refrigeración contenida para lo que rinde
  • -Su precio se ha ido por encima de los 800 €: hay minis con la misma CPU más baratos
  • -Consume más en idle que un N100
coste orientativo
Ver precio en Amazon →

Un Ryzen 7 con Radeon 780M transcodifica de sobra y además te virtualiza en serio si el homelab crece. Solo recuerda que el soporte de aceleración por hardware en Linux, aunque bueno, aún da algún dolor de cabeza más que el de Intel. Si el equipo va a hacer muchas cosas además de vídeo, compensa.

Puedes comparar los tres cara a cara, con consumos y usos, y ver la foto completa de la gama en la comparativa a fondo.

Preguntas que me hacen siempre

// preguntas frecuentes

Preguntas frecuentes

¿Jellyfin es realmente gratis del todo?
Sí. Es software libre, sin suscripciones ni funciones de pago. La transcodificación por hardware, los usuarios, las apps... todo está incluido. No hay un 'Jellyfin Pass'.
¿Puedo tener Plex y Jellyfin en el mismo servidor?
Sin problema, es justo lo que yo hago. Usan puertos distintos (Plex el 32400, Jellyfin el 8096) y pueden apuntar a la misma carpeta de películas montada en solo lectura. No se pisan.
¿Cómo veo mi biblioteca fuera de casa con Jellyfin?
Lo recomendable es una VPN a tu red, por ejemplo WireGuard, y conectar el cliente como si estuvieras en casa. Exponer Jellyfin directamente a internet es posible pero pide más cuidado; la VPN es más simple y más segura.
¿Sirve una Raspberry Pi 5 para Jellyfin?
Para reproducir en direct play, sí. Para transcodificar al vuelo, no la recomiendo: sin un equivalente a Quick Sync acaba tirando de CPU y se ahoga. Para vídeo con transcodificación, un mini PC Intel.
¿Necesito una gráfica dedicada para transcodificar?
No. La gráfica integrada de un Intel N100 ya trae Quick Sync y transcodifica H.264 y HEVC de sobra para una casa. Una gráfica dedicada solo tiene sentido en escenarios de muchísimos streams simultáneos.

Qué haría yo

Si empiezas de cero y quieres control sobre tu cine sin pagar peajes, monta Jellyfin en Docker sobre un Beelink N100, pásale la gráfica con /dev/dri, activa VAAPI y a disfrutar. Gastas cuatro vatios, no oyes el ventilador y no dependes de la nube de nadie para ver lo que ya es tuyo.

¿Que quieres el ver-fuera-de-casa masticado y te da igual la filosofía? Entonces Plex sigue teniendo su hueco, y no pasa nada por tener los dos. Lo que no haría es descartar Jellyfin por prejuicio: hoy compite de tú a tú, y en soberanía gana de calle. Los números que has visto salieron de tenerlo corriendo en el N100 del banco de pruebas mientras escribía esto, conviviendo con Plex sin que ninguno pisara al otro. Cuando quieras montarlo, ya tienes el compose y las trampas señaladas.

Lo tienes también en vídeo

Si prefieres verlo contado, he grabado esta misma historia en vídeo: por qué el streaming es alquiler y no propiedad, qué es Jellyfin y en qué se diferencia de Plex, con qué se llena una biblioteca de forma legítima y cuánto disco hace falta de verdad. Sale el asistente de instalación y la biblioteca funcionando, grabados de nuestra propia máquina.

👉 Pagas 4 plataformas y la película no está en ninguna: monta tu propio Netflix con Jellyfin (6 minutos)

Actualización 6 jul 2026: instalado y medido sobre Jellyfin 10.11.11 en un Intel N100. Los números de transcodificación son de nuestra propia máquina; los de Plex de referencia, en la guía de transcodificación.