TPTito Pinardo Gutiérrez
← Volver al rack
English
1U · PLEXPlex · GTX 1050 Ti · NVENC En producción

Posición 12 de 25 en el rack · En producción

Unidad 1U · Multimedia

Plex · con la GPU dentro

Prioridad de la casa

El servidor multimedia de la casa. Cuando la tele o el móvil no pueden reproducir un formato, Plex lo convierte al vuelo en una GTX 1050 Ti que el contenedor ve como propia, sin cargar la CPU del servidor.

Por qué una GPU
Convertir un 4K por CPU satura varios núcleos. Con la GPU, el mismo trabajo usa una fracción de uno.
Cómo llega la GPU
El driver vive en el hipervisor y el contenedor recibe sus dispositivos. Desde septiembre, en un contenedor sin privilegios con el mapeo de grupos justo.
Lo difícil
Que siga funcionando tras cada actualización del kernel o del driver: dos veces se rompió sin que nada dijera nada.
  • ~30 %de un núcleo para un 4K convertido en la GPU
  • 3.295ficheros revisados buscando AV1
  • 12películas convertidas a HEVC
  • 0reinicios de Plex para arreglar la GPU la segunda vez

Su código, en abierto Versión pública del repositorio: sin IPs ni secretos.

La multimedia por dentro

Una película puede llegar tal cual o convertirse al vuelo en la GPU. Elige un recorrido.

Hermesde visita en la unidad

Pulsa una pieza o elige un recorrido. Si vienes de una habilidad, ya están encendidas las piezas donde la uso.

      Una película en la tele
      1. La tele de casa — La tele pide una película.
      2. Router — El router la deja llegar a Plex: es su única excepción.
      3. Plex Media Server — Plex busca el fichero.
      4. Biblioteca — En la biblioteca.
      5. Almacenamiento — El pool lo lee.
      6. Biblioteca — Vuelve a Plex.
      7. Reproducción directa — La tele entiende el formato: reproducción directa, sin convertir nada.
      8. La tele de casa — Y se ve.
      La misma película, fuera de casa
      1. El móvil, fuera de casa — Desde el móvil, con datos, pido la misma película.
      2. Traefik — Entra por Traefik.
      3. Plex Media Server — Plex ve que hace falta menos calidad.
      4. Decodificación (NVDEC) — La GPU decodifica el original.
      5. GTX 1050 Ti — Todo el trabajo pesado se queda en la GPU.
      6. Codificación (NVENC) — Y lo codifica a la calidad que aguanta la conexión.
      7. Sesiones — En la sesión se ve que va por hardware.
      8. El móvil, fuera de casa — Y llega al móvil sin cargar la CPU del servidor.
      Ficheros que nada en casa puede reproducir
      1. Escaneo de códecs — Un escaneo de la biblioteca busca el códec de cada fichero.
      2. Biblioteca — Aparecen 14 en AV1; dos pares eran el mismo fichero enlazado dos veces: 12 películas.
      3. Conversión de la biblioteca — Se convierten de una en una.
      4. CPU, cuando no queda otra — La CPU decodifica el AV1, porque esta GPU no sabe.
      5. Codificación (NVENC) — La GPU codifica en HEVC de 10 bits, conservando el HDR.
      6. GTX 1050 Ti — El trabajo de codificación, en la GPU.
      7. Biblioteca — El resultado sustituye al original.
      8. Plex Media Server — Y Plex lo reproduce en cualquier dispositivo de casa.
      La GPU llega al contenedor
      1. IOMMU y arranque — El hipervisor arranca con la IOMMU activa.
      2. Driver en el hipervisor — Carga el driver de NVIDIA, en su versión fijada.
      3. GTX 1050 Ti — La GPU queda lista.
      4. Dispositivos de la GPU — Sus dispositivos se pasan al contenedor con su número exacto.
      5. Contenedor sin privilegios — Sin privilegios: solo el grupo de vídeo coincide con el del hipervisor.
      6. Plex Media Server — Plex arranca.
      7. Detección de hardware — Y detecta la GPU. Si no estaba al arrancar, no la verá hasta reiniciarlo.
      Actualizo Plex
      1. Actualización — Instalo la versión nueva dentro del contenedor.
      2. Plex Media Server — Plex arranca y migra su base de datos.
      3. Detección de hardware — Compruebo que detecta la GPU.
      4. GTX 1050 Ti — Y que una conversión de prueba va por hardware.
      1. La tele de casa

        En el segmento WiFi, con una excepción en el cortafuegos solo para Plex.

      2. Router

        Deja que la tele llegue a Plex y a nada más del servidor.

        • VLANs
      3. El móvil, fuera de casa

        Con una conexión peor, suele necesitar conversión.

      4. Traefik

        La entrada desde fuera.

        • Traefik
      5. GTX 1050 Ti

        Una GPU modesta que codifica H.264 y HEVC por hardware, incluido HEVC de 10 bits con HDR. No sabe decodificar AV1.

      6. Almacenamiento

        La biblioteca vive en un pool ZFS de varios discos.

        • ZFS
      7. Plex Media Server

        El servidor, actualizado al canal beta porque el repositorio público va por detrás.

        • Linux (Debian, Alpine, Arch)
      8. Reproducción directa

        Si el dispositivo entiende el formato, el fichero sale tal cual: ni GPU ni CPU.

      9. Sesiones

        Cada reproducción en curso, con su comando de conversión. Ahí se ve si va por GPU o por software.

      10. Actualización

        Paquete del canal beta, instalado dentro del contenedor y comprobado: versión, GPU detectada y migración de base de datos terminada.

        • Linux (Debian, Alpine, Arch)
      11. Decodificación (NVDEC)

        La GPU descomprime el vídeo original.

      12. Codificación (NVENC)

        Y lo vuelve a comprimir al formato y calidad que pide el dispositivo.

      13. CPU, cuando no queda otra

        Lo que la GPU no sabe hacer (decodificar AV1) cae en la CPU.

      14. Detección de hardware

        Plex mira una vez qué hardware tiene y lo recuerda. Si la GPU vuelve después, no se entera hasta reiniciar.

      15. IOMMU y arranque

        Parámetros del kernel para que la GPU tenga su grupo propio y se pueda asignar.

        • Proxmox VE
        • Linux (Debian, Alpine, Arch)
      16. Driver en el hipervisor

        La versión se fija a propósito: cada kernel nuevo es una ocasión de que deje de compilar.

        • Linux (Debian, Alpine, Arch)
      17. Dispositivos de la GPU

        Los ficheros de dispositivo del hipervisor se pasan al contenedor, con su número exacto.

        • LXC
      18. Contenedor sin privilegios

        Solo el grupo de vídeo se mapea uno a uno; el resto va desplazado. El root del contenedor no es root del servidor.

        • LXC
        • Linux / SSH hardening
      19. Biblioteca

        Películas y series en el pool, con un tiempo de acceso desactivado para ahorrar escrituras.

        • ZFS
      20. Escaneo de códecs

        Un recorrido de la biblioteca con ffprobe para saber qué códec tiene cada fichero.

        • Linux (Debian, Alpine, Arch)
      21. Conversión de la biblioteca

        Lo que ningún dispositivo de casa puede reproducir se convierte una vez y para siempre.

        • Linux (Debian, Alpine, Arch)
      22. Canales en directo

        Canales públicos de TDT, con su guía, servidos por la unidad de TV en directo.

      Lo que uso de mi árbol

      Pulsa una habilidad: se encienden en el mapa las piezas donde la uso y te cuento para qué.

      Terraform
      Crea el contenedor de Plex.
      Proxmox VE
      IOMMU, el driver de la GPU en el hipervisor y los permisos que el contenedor no puede tocar.
      LXC
      Contenedor sin privilegios con los dispositivos de la GPU pasados dentro y el grupo de vídeo mapeado uno a uno.
      ZFS
      La biblioteca en un pool ZFS, con el tiempo de acceso desactivado.
      Linux (Debian, Alpine, Arch)
      Driver fijado, ffmpeg y ffprobe para revisar y convertir la biblioteca, y comprobaciones por usuario.
      VLANs
      La tele está en el segmento más aislado, con una excepción solo para Plex.
      Traefik
      La entrada a Plex desde fuera de casa.
      Linux / SSH hardening
      Contenedor sin privilegios y una única excepción de red para la tele.

      Bitácora de incidencias

      Averías reales. Lee el síntoma, elige la causa que creas y mira cómo se arregló.

      1. #1

        La GPU estaba bien, pero Plex no la usaba

        21-07-2026 · transcodificación

        Tras arreglar los dispositivos, la decodificación ya iba por GPU, pero la codificación seguía en la CPU. Probé incluso a quitar el límite de sesiones del driver: nada.

        ¿Qué crees que pasaba?

        Ver la solución
        Causa
        Plex detecta el hardware una vez y lo recuerda mientras el proceso vive. Cuando arrancó, la GPU no estaba disponible, y arreglarla por debajo no hacía que lo volviera a mirar.
        Solución
        Reiniciar Plex en un momento sin nadie viendo nada. La siguiente conversión ya fue entera por GPU.
        Lección
        Arreglar la capa de abajo no basta si la de arriba guardó el estado roto. Hay que saber qué se cachea y cuándo se vuelve a mirar.
      2. #2

        La GPU desaparece del contenedor

        Julio de 2026 · driver

        Tras una saga de actualizaciones del driver con un kernel nuevo, Plex volvió a convertir todo por CPU. En el hipervisor la GPU funcionaba.

        ¿Qué crees que pasaba?

        Ver la solución
        Causa
        Los dispositivos de la GPU se crean al arrancar el driver con unos números concretos. Los que veía el contenedor no coincidían con los reales del hipervisor tras el cambio.
        Solución
        La segunda vez que pasó, sin reiniciar Plex: recrear dentro del contenedor los dispositivos con los mismos números que el hipervisor. Y comprobar con una conversión de cinco fotogramas como usuario de Plex.
        Lección
        Hay que saber cómo comprobar de verdad que algo va por hardware: el comando de la sesión, la CPU del proceso y los dispositivos abiertos.
      3. #3

        Películas que no se podían ver

        06-08-2026 · formatos

        Algunas películas no se veían bien en ningún dispositivo de casa, ni siquiera convirtiéndolas al vuelo.

        ¿Qué crees que pasaba?

        Ver la solución
        Causa
        La GTX 1050 Ti es anterior a la decodificación de AV1 por hardware. Al vuelo, la CPU sola no llegaba a tiempo real en 4K.
        Solución
        Convertir esas 12 películas una vez: decodificar por CPU y codificar HEVC de 10 bits en la GPU, conservando el HDR. Comprobado contra la lista del gestor de la biblioteca.
        Lección
        Si un trabajo caro se va a repetir en cada reproducción, se hace una vez y se guarda.
      4. #4

        Borrar desde Plex no funcionaba

        19-09-2026 · permisos

        Tras pasar Plex a un contenedor sin privilegios, al borrar contenido desde su interfaz daba error. Y ni siquiera el root del contenedor podía arreglar los permisos.

        ¿Qué crees que pasaba?

        Ver la solución
        Causa
        Algunas carpetas no tenían permiso de escritura para el grupo. Y en este contenedor solo el grupo de vídeo coincide con el del hipervisor: el root de dentro no puede cambiar ficheros que no le pertenecen.
        Solución
        Dar el permiso de grupo desde el hipervisor, solo en las carpetas que lo necesitaban, y probar a crear y borrar como el usuario de Plex. Sin parar Plex.
        Lección
        Un contenedor sin privilegios es más seguro precisamente porque su root no puede con todo. Eso cambia dónde se arreglan las cosas.

      Cómo se construyó

      1. Primavera de 2026

        GPU para Plex

        • GTX 1050 Ti con su grupo IOMMU propio y el driver en el hipervisor.
        • Conversión por hardware en el contenedor de Plex.
      2. Julio de 2026

        La saga del driver

        • Driver fijado a una versión que compila con el kernel nuevo.
        • Dispositivos y detección arreglados, y una forma fiable de comprobarlo.
      3. Agosto y septiembre de 2026

        Biblioteca y contenedor nuevo

        • AV1 convertido a HEVC.
        • Plex en un contenedor sin privilegios gestionado con Terraform.

      Decisiones (y por qué)

      • Qué GPU

        Una modesta, para conversión

        Para convertir vídeo no hace falta potencia de cálculo sino el bloque de codificación, y una GeForce pequeña lo tiene.

      • Con privilegios o sin ellos

        Sin privilegios, con el mapeo justo

        Con privilegios todo es más fácil, pero el root del contenedor sería el del servidor. Sin ellos, solo el grupo de vídeo se comparte.

      • El driver

        Fijado, no el último

        Plex es lo que más se usa en casa. Una versión que funciona con el kernel actual vale más que una más nueva que quizá no compile.

      Lo que aprendí

      • Comprobar por hardware de verdad, no por lo que dice el panel.
      • Saber qué guarda en caché cada capa y cuándo lo vuelve a mirar.

      Lo siguiente

      • Una GPU con decodificación AV1 para dejar de convertir la biblioteca.
      • Pasar el driver a un repositorio firmado como manda la política actual de APT.

      ¿Hablamos?

      Puedo contar cualquiera de estas decisiones en detalle en una entrevista.

      Descargar CV Contactar ← Volver al rack

      Reconstrucción a partir de mi documentación: sin direcciones, rutas, títulos ni nada de la biblioteca.