Guía de despliegue

Migrar de Plex a Jellyfin tras el paywall de julio de 2026

Desplegar en un VPS Cloud →

Tutorial

Autoalojamiento

Migrar de Plex a Jellyfin tras el paywall de julio de 2026

El streaming remoto de sus contenidos personales ya no es gratuito en Plex: hace falta un Plex Pass en la cuenta del administrador del servidor, o un Remote Watch Pass para cada espectador, que se renueva a 2,99 $ al mes desde el 1 de junio de 2026. Jellyfin sustituye a Plex para el vídeo, sin muro de pago ni cuenta obligatoria, en su propio VPS; Navidrome toma el relevo para la música si quiere dejar Plex por completo. Sus archivos se quedan donde están: solo cambia la capa del servidor, y sus dispositivos se reconectan con las aplicaciones de Jellyfin o con un cliente de terceros como Infuse.

16 min de lectura14 pasos
Contenido· Por qué dejar Plex ahora1/13
  1. 01Por qué dejar Plex ahora
  2. 02Los fallos de Plex en 2026: actualizar durante la transición
  3. 03Lo que Jellyfin aporta en concreto
  4. 04Requisitos previos antes de empezar
  5. 05Migración paso a paso
  6. 06Exponer Jellyfin con Nginx en lugar de Caddy
  7. 07¿Y la música? Pasar de Plexamp a Navidrome
  8. 08Migrar la biblioteca musical a Navidrome
  9. 09Plex, Jellyfin y Navidrome: comparativa funcional
  10. 10Configuración posterior a la instalación recomendada
  11. 11Proteger el acceso a Jellyfin
  12. 12Resolución de problemas: errores frecuentes tras la migración
  13. 13Para ir más lejos: enlaces útiles y enlazado interno

Por qué dejar Plex ahora

Durante años, Plex permitía ver la biblioteca fuera de casa sin pagar. Ya no: según la página de planes de Plex, el streaming remoto de contenido personal exige un Plex Pass en la cuenta del administrador del servidor o un Remote Watch Pass en la cuenta de cada espectador. Esta segunda suscripción se lanzó con precio de introducción y, desde el 1 de junio de 2026, se renueva a 2,99 $ al mes o 29,99 $ al año. Un acceso denegado en el móvil o en casa de un familiar suele ser el detonante: se busca una salida inmediata, no una evaluación larga.

Jellyfin es la respuesta directa. Es un fork comunitario de la base de código de Emby, publicado bajo licencia GPL-2.0, sin cuenta obligatoria, sin telemetría y sin funciones limitadas tras un muro de pago. No imita la API de Plex: expone la suya propia, que usan las aplicaciones oficiales de Jellyfin (Android, iOS, Android TV, Roku, webOS, Tizen, Xbox) y clientes de terceros que la admiten de forma nativa, como Infuse. Los archivos multimedia no se mueven: solo cambia la capa del servidor.

Los fallos de Plex en 2026: actualizar durante la transición

La migración lleva unas horas o unos días, y Plex sigue funcionando mientras tanto. No lo deje en una versión antigua: dos vulnerabilidades corregidas a partir de la build 1.43.3.10861 recibieron sus identificadores el 23 de septiembre de 2026.

CVE-2026-96656 (CVSS 3.1: 7,2) permite a una cuenta de administrador escribir archivos que se ejecutan al cargarse: la preferencia TranscoderH264Options se copia tal cual en las opciones de x264, y las bibliotecas .so se cargan al arrancar sin comprobar firma ni bit de ejecución. La CISA la incluyó el 20 de octubre de 2026 en su catálogo de vulnerabilidades explotadas activamente.

CVE-2026-96651 (CWE-22, CVSS 3.1: 6,5) es un recorrido de directorios en /system/agents/media/get: una sesión autenticada puede leer cualquier archivo al que acceda el usuario de sistema de Plex, incluido el token PlexOnlineToken, que da el control de la cuenta y del servidor.

Encadenados, los dos fallos llevan del robo de sesión a la ejecución de código. Actualice Plex antes de empezar, mantenga su puerto cerrado a Internet durante el cambio y aplique en paralelo los parches del sistema del VPS (véase las actualizaciones de seguridad automáticas en Debian y Ubuntu). Con Jellyfin el reflejo es el mismo: siga las versiones y actualice la imagen con regularidad.

Lo que Jellyfin aporta en concreto

  • Cero muro de pago — el acceso remoto, las cuentas multiusuario y la transcodificación están disponibles sin suscripción ni Pass vitalicio.
  • Ninguna cuenta obligatoria — la instalación no pide vincular ningún servicio externo; la gestión de usuarios es totalmente local.
  • Cero telemetría — por defecto no se envía ningún dato de uso a terceros; el código es auditable (GPL-2.0).
  • Clientes compatibles — las aplicaciones oficiales de Jellyfin y clientes de terceros como Infuse se conectan al servidor mediante su URL, sin cuenta externa ni servicio de relé.
  • Los archivos multimedia se quedan donde están — solo hay que reconstruir la base de metadatos; el almacenamiento no se toca.
  • Clientes nativos disponibles — Android, iOS, Android TV, Apple TV, navegador web y decenas de aplicaciones de terceros son compatibles con Jellyfin de forma nativa.
  • Transcodificación por hardware compatible — Intel Quick Sync, VAAPI y NVENC son configurables para reducir la carga de CPU en los flujos de alta definición.
  • Comunidad activa y actualizaciones periódicas — publicaciones frecuentes, plugins comunitarios y documentación oficial completa.

Requisitos previos antes de empezar

La migración da por supuesto que ya dispone de un VPS con Docker instalado. Jellyfin en Direct Play (los dispositivos leen el archivo sin transcodificación) funciona correctamente con 2 vCPU y 2 GB de RAM. Si prevé transcodificación por software en 1080p, cuente con 4 vCPU como mínimo por flujo simultáneo: Jellyfin exige mucho de la CPU sin aceleración por hardware. Para 4K, se recomienda encarecidamente una GPU o un chip Intel con Quick Sync.

El almacenamiento es la partida que marca el dimensionamiento: una biblioteca multimedia de tamaño medio ocupa varios terabytes. Sus archivos multimedia se quedan donde están: no hay ninguna copia que hacer. En cuanto a la red, su dominio debe apuntar al VPS y el puerto 8096 debe ser accesible internamente (del acceso HTTPS se encarga el reverse proxy).

Lo que necesita, en resumen: un VPS con Linux (Debian 12 o Ubuntu 22.04+), Docker y docker compose v2, un dominio configurado, un reverse proxy (Caddy o Nginx) y acceso SSH al servidor.

Antes de tocar nada, haga una instantánea (snapshot) del VPS desde su panel de alojamiento: es la red de seguridad que le devuelve al estado de Plex en minutos si el cambio sale mal. La última versión de Jellyfin a 7 de noviembre de 2026 es la 12.4 (publicada el 26 de octubre de 2026); la imagen jellyfin/jellyfin:latest la sigue.

Migración paso a paso

  1. Hacer una instantánea del VPS

    Cree un snapshot desde el panel de su proveedor (o mediante su API) antes de cualquier cambio. Solo lleva unos minutos y protege a la vez la configuración de Plex, los metadatos y el sistema. No se salte este paso: es lo que hace reversible todo lo que sigue.

  2. Exportar sus datos de Plex antes de detener el servicio

    Antes que nada, exporte su biblioteca de Plex mientras siga funcionando. Desde el servidor Plex, copie la carpeta de metadatos (~/.config/Plex Media Server/ en Linux, /var/lib/plexmediaserver/ según la instalación). Esta copia de seguridad le permitirá recuperar listas de reproducción, progreso de reproducción y valoraciones si algún día decide volver.

    Sus archivos multimedia (/mnt/media/films, /mnt/media/series, etc.) no se mueven: no los desplace.

  3. Detener Plex correctamente

    Detenga el contenedor o el servicio Plex:

    docker compose stop plex

    O bien, si Plex se ejecuta mediante systemd:

    systemctl stop plexmediaserver

    Libere el puerto 32400; Jellyfin usará el 8096 por defecto, así que puede dejar libre el puerto de Plex o cerrarlo en su firewall.

  4. Crear la estructura de carpetas de Jellyfin

    Cree las carpetas de configuración y de caché que va a usar Jellyfin:

    mkdir -p /opt/jellyfin/config /opt/jellyfin/cache

    Sus archivos multimedia se quedan en su ubicación original: no los desplace. Jellyfin los declarará como bibliotecas en el asistente inicial.

  5. Redactar el archivo docker-compose.yml

    Cree /opt/jellyfin/docker-compose.yml con el contenido siguiente:

    cat > /opt/jellyfin/docker-compose.yml << 'EOF'
    services:
      jellyfin:
        image: jellyfin/jellyfin:latest
        container_name: jellyfin
        restart: unless-stopped
        environment:
          - JELLYFIN_PublishedServerUrl=https://media.yourdomain.com
        volumes:
          - /opt/jellyfin/config:/config
          - /opt/jellyfin/cache:/cache
          - /mnt/media:/media:ro
        ports:
          - "127.0.0.1:8096:8096"
    EOF

    Adapte /mnt/media a la ruta real de sus archivos multimedia. El :ro (solo lectura) es una buena práctica: Jellyfin no necesita escribir en sus archivos multimedia.

  6. Arrancar Jellyfin y abrir el asistente

    Lance el contenedor:

    docker compose -f /opt/jellyfin/docker-compose.yml up -d

    Abra http://su-ip:8096 en un navegador. El asistente le pide crear una cuenta de administrador local (no hace falta ninguna dirección de correo externa) y, después, declarar sus bibliotecas. Apunte a sus carpetas multimedia existentes (/media/films, /media/series, etc.): Jellyfin lanza un escaneo automático y reconstruye los metadatos desde TheMovieDB y TheTVDB.

  7. Configurar el reverse proxy con SSL

    Exponga Jellyfin en HTTPS mediante Caddy o Nginx. Ejemplo con Caddy (archivo Caddyfile):

    media.yourdomain.com {
        reverse_proxy 127.0.0.1:8096
    }

    Caddy obtiene y renueva el certificado Let's Encrypt automáticamente. Con Nginx, añada las cabeceras X-Real-IP y X-Forwarded-For que Jellyfin usa para los registros de acceso.

  8. Reconfigurar sus clientes y activar el acceso remoto

    En Jellyfin (Panel de control → Red), compruebe que la URL publicada (JELLYFIN_PublishedServerUrl) es correcta. Instale la aplicación de Jellyfin en cada dispositivo (Android, iOS, Android TV, Roku, televisores LG y Samsung, Xbox) y añada el servidor mediante su URL. En iPhone, iPad y Apple TV, Infuse también puede conectarse a Jellyfin: según la documentación de Firecore, use «Añadir servidor multimedia» y elija Jellyfin, con inicio de sesión directo en el servidor. Plexamp, en cambio, sigue siendo un reproductor exclusivo de Plex: la música pasa por Navidrome (véase más abajo).

    Compruebe el acceso desde una conexión móvil (no desde su Wi-Fi) para confirmar que el acceso remoto funciona sin restricciones.

  9. Recuperar el historial de visionado (opcional)

    Jellyfin no lee la base SQLite de Plex. Para el historial «visto / en curso», la herramienta comunitaria JellyPlex-Watched sincroniza localmente los estados entre Plex y Jellyfin, usuario por usuario, emparejando los archivos por nombre y por identificadores de metadatos (TMDB, TVDB). Ejecútela con los dos servidores en marcha: vuelva a arrancar Plex mientras dura la sincronización y deténgalo de nuevo después.

    Las listas de reproducción de vídeo se recrean a mano en la interfaz de Jellyfin; bastan unos minutos para un uso familiar.

  10. Mantener Plex en reserva y luego desinstalarlo

    Deje Plex detenido pero instalado durante al menos 48 horas, el tiempo de validar Jellyfin en cada dispositivo de la casa. Cuando esté seguro, elimine el paquete y su configuración:

    systemctl disable --now plexmediaserver
    apt remove --purge plexmediaserver
    rm -rf /var/lib/plexmediaserver

    Con Docker, docker compose down y después la eliminación de la carpeta de configuración de Plex hacen el mismo trabajo. El snapshot del paso 1 sigue siendo su vuelta atrás hasta ese momento.

Exponer Jellyfin con Nginx en lugar de Caddy

Si su VPS ya sirve otros sitios con Nginx, consérvelo. La configuración siguiente recoge las directivas que recomienda la documentación de Jellyfin: redirección de HTTP a HTTPS, cabeceras X-Forwarded-*, búfer desactivado para los flujos y un bloque /socket dedicado a los WebSockets que usan los clientes para la reproducción sincronizada y las notificaciones.

# /etc/nginx/sites-available/jellyfin
server {
    listen 80;
    server_name media.yourdomain.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name media.yourdomain.com;

    ssl_certificate     /etc/letsencrypt/live/media.yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/media.yourdomain.com/privkey.pem;
    ssl_protocols TLSv1.3 TLSv1.2;

    client_max_body_size 20M;
    add_header X-Content-Type-Options "nosniff";

    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-Host $http_host;
        proxy_buffering off;
    }

    location /socket {
        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-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Obtenga el certificado con Certbot (el bloque del puerto 80 debe quedarse para las renovaciones) o mediante su CDN en modo Full (strict). Active el sitio y recargue Nginx:

ln -s /etc/nginx/sites-available/jellyfin /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx

No publique nunca el puerto 8096 directamente en Internet: el mapeo 127.0.0.1:8096:8096 del archivo Compose garantiza que solo Nginx lo alcanza. Para Navidrome, duplique el bloque con otro subdominio y el puerto 4533.

¿Y la música? Pasar de Plexamp a Navidrome

Jellyfin sabe reproducir música, pero no es su punto fuerte. Si escuchaba su colección con Plexamp, tenga en cuenta que el muro de pago de Plex solo afecta al vídeo: según la página de planes de Plex, la música y las fotos siguen disponibles a distancia en Plexamp y Plex Photos sin suscripción. Navidrome resulta útil, por tanto, cuando quiere dejar Plex por completo. Es un servidor de música libre (GPL-3.0, escrito en Go) compatible con la API de Subsonic: todos los clientes Subsonic, Madsonic y Airsonic se conectan a él, en el móvil y en el ordenador. Transcodifica al vuelo, admite Opus e importa automáticamente las listas .m3u. La versión vigente a 7 de noviembre de 2026 es la 0.64.2. La guía alojar Navidrome en un VPS detalla una instalación completa; este es el cambio desde Plex.

Migrar la biblioteca musical a Navidrome

  1. Auditar las etiquetas de los archivos

    Navidrome ordena la música a partir de los metadatos incrustados en los archivos, no de las carpetas. Compruebe una muestra:

    find /mnt/media/musique -name '*.mp3' | head -20 | xargs -d '\n' id3v2 -l

    Los campos TPE1 (artista), TALB (álbum) y TIT2 (título) deben estar rellenos. Un archivo sin estas etiquetas se importa, pero se muestra mal. Para corregirlas en bloque, la herramienta libre beets reetiqueta una colección a partir de la base de MusicBrainz.

  2. Desplegar Navidrome con Docker Compose

    El archivo sigue el ejemplo de la documentación de Navidrome: imagen oficial navidrome/navidrome, usuario no root y música montada en solo lectura.

    mkdir -p /opt/navidrome/data
    cat > /opt/navidrome/docker-compose.yml << 'EOF'
    services:
      navidrome:
        image: navidrome/navidrome:latest
        container_name: navidrome
        user: 1000:1000
        restart: unless-stopped
        ports:
          - "127.0.0.1:4533:4533"
        environment:
          ND_LOGLEVEL: info
        volumes:
          - /opt/navidrome/data:/data
          - /mnt/media/musique:/music:ro
    EOF
    docker compose -f /opt/navidrome/docker-compose.yml up -d

    La directiva user debe indicar el UID:GID propietario de /opt/navidrome/data (id -u e id -g se los dan); las variables PUID/PGID no tienen ningún efecto aquí. Sin ella, el contenedor se ejecuta como root.

  3. Crear la cuenta de administrador y conectar los clientes

    Abra Navidrome detrás de su reverse proxy (subdominio dedicado, puerto 4533 en interno). La primera cuenta creada es la de administrador. El primer escaneo de la biblioteca arranca solo al iniciar el contenedor; sígalo en los registros (docker logs navidrome). En el móvil sirve cualquier cliente compatible con Subsonic: introduzca la URL HTTPS, el usuario y la contraseña.

  4. Recuperar sus listas de reproducción

    Navidrome importa automáticamente los archivos .m3u que encuentra en la biblioteca y los mantiene sincronizados. Exporte, pues, sus listas de Plex en formato .m3u, con rutas relativas a la raíz musical, y colóquelas en /mnt/media/musique: aparecerán en el siguiente escaneo. Si no, recréelas en la interfaz web, que también admite arrastrar y soltar pistas.

Plex, Jellyfin y Navidrome: comparativa funcional

Desplace la tabla

FunciónPlex (sin Pass)JellyfinNavidrome
Streaming local (red doméstica)SíSíSí (música)
Streaming remoto de vídeoDe pago (Remote Watch Pass, 2,99 $/mes, o Plex Pass)GratuitoNo aplica (solo audio)
Streaming remoto de músicaGratuito en PlexampGratuitoGratuito
Cuenta externa obligatoriaSí (plex.tv)NoNo
Licencia del códigoPropietariaGPL-2.0GPL-3.0
ClientesAplicaciones Plex y PlexampAplicaciones oficiales de Jellyfin, InfuseCualquier cliente compatible con Subsonic
Transcodificación por hardwareDe pago (requiere Plex Pass)Gratuita (Quick Sync, VAAPI, NVENC)No aplica (transcodificación de audio por software)
Invitados en streaming remotoPlex Pass del administrador o un Remote Watch Pass por invitadoSin límite, cuentas localesSin límite, cuentas locales

Configuración posterior a la instalación recomendada

Una vez terminada la migración, unos cuantos ajustes mejoran la experiencia del día a día.

Metadatos. Jellyfin usa TheMovieDB y TheTVDB por defecto. Si algunas películas o series no se reconocen automáticamente, renombre los archivos siguiendo la convención Título (Año)/Título (Año).mkv para las películas y Serie/Temporada 01/Serie - S01E01.mkv para las series: Jellyfin aplica estas convenciones durante el escaneo.

Subtítulos. Active OpenSubtitles o los subtítulos integrados en Panel de control → Plugins. La descarga es automática durante el escaneo de la biblioteca.

Transcodificación por hardware. Si su VPS dispone de un chip Intel, active VAAPI en Panel de control → Reproducción → Transcodificación. Reduce de forma significativa la carga de CPU en las conversiones de flujo.

Proteger el acceso a Jellyfin

Una vez detrás de su reverse proxy, Jellyfin expone su pantalla de inicio de sesión a todo Internet. Algunas medidas desde el primer día: cree una cuenta por persona en Panel de control → Usuarios, sin derechos de administración para las cuentas de la familia, y elimine las que ya no se usen. Jellyfin no incluye autenticación de dos factores: si la quiere, coloque un proveedor de identidad (Authelia, Authentik) delante de la interfaz. Limite el acceso al panel a la red local si es posible y, con Nginx, aplique un rate-limit a /Users/AuthenticateByName para frenar los ataques de fuerza bruta. Por último, mantenga la imagen al día: docker compose pull && docker compose up -d descarga los parches de seguridad.

Resolución de problemas: errores frecuentes tras la migración

Algunos errores aparecen sistemáticamente en una migración de Plex a Jellyfin.

Connection refused en el puerto 8096. El contenedor está arrancado pero nada responde. Compruebe que el mapeo de puertos sea 127.0.0.1:8096:8096 y no 0.0.0.0:8096:8096 si quiere pasar por el reverse proxy. Comando de diagnóstico: docker logs jellyfin.

Los metadatos no se cargan. El escaneo inicial puede durar de 10 minutos a varias horas según el tamaño de la biblioteca. Siga el avance en Panel de control → Actividad. Si algunos archivos siguen sin carátula, compruebe que el nombre del archivo respeta la convención y fuerce un nuevo escaneo con «Analizar los metadatos».

El acceso remoto no funciona. Si https://media.yourdomain.com responde desde el servidor pero no desde fuera, compruebe que el firewall permita el puerto 443 (ufw allow 443), que el DNS apunte a la IP correcta y que la variable JELLYFIN_PublishedServerUrl coincida exactamente con la URL pública configurada en el reverse proxy.

Infuse no encuentra el servidor. Añádalo como servidor Jellyfin, no como servidor Plex, e introduzca a mano la URL HTTPS completa. La detección automática solo funciona en la red local; a distancia, la URL manual es la única vía fiable.

La transcodificación por CPU llega al 100 %. Sin aceleración por hardware, un solo flujo 4K transcodificado puede saturar varios núcleos. Pase a VAAPI si su procesador lo admite, o anime a sus usuarios a activar el Direct Play en los ajustes de su cliente.

La biblioteca sigue vacía tras el primer escaneo. La ruta montada en Docker no coincide con la carpeta real. Compruebe lo que ve el contenedor y después el estado del servicio a través del proxy:

docker exec jellyfin ls /media
curl -s https://media.yourdomain.com/health

Si ls no muestra nada, corrija el volumen en docker-compose.yml y reinicie el contenedor; /health debe responder Healthy.

La transcodificación falla con un error de ffmpeg. Casi siempre se debe a la transcodificación por hardware activada en un VPS que no expone ninguna GPU al contenedor. Desactive la aceleración en Panel de control → Reproducción y deje que Jellyfin transcodifique por software: en un VPS sin GPU, es la configuración normal.

Para ir más lejos: enlaces útiles y enlazado interno

La migración cubre la sustitución de Plex, pero Jellyfin se integra en un ecosistema más amplio. Si parte de cero (sin Plex previo), la guía Alojar Jellyfin en su propio VPS cubre la instalación inicial desde el principio. Para una comparativa funcional en profundidad entre ambas plataformas, consulte Jellyfin frente a Plex: qué servidor multimedia elegir. Para la música, la guía de Navidrome va más allá del cambio descrito aquí.

Si esta migración forma parte de un movimiento más amplio hacia el self-hosting para reducir sus costes de SaaS, alojar Ghost en su VPS cubre otro caso habitual. La lógica es la misma: un software libre, un VPS y un acceso cuyas reglas controla usted.

La documentación oficial de Jellyfin (jellyfin.org/docs) es completa y se mantiene de forma activa: es la referencia para los casos avanzados (transcodificación por hardware, LDAP, plugins, reverse proxy avanzado).

Su servidor Jellyfin en unos minutos

La plantilla Jellyfin de ServOrbit despliega un entorno Docker preconfigurado en un VPS dedicado: acceso root, IP dedicada, reverse proxy listo. Importe su biblioteca el mismo día.