Solucionar VAAPI en Jellyfin LXC sin privilegios de Proxmox
Este post es la continuación de Jellyfin cortes 4K y disco lleno. Hace un par de días parecía que todo estaba arreglado y que la transcodificación funcionaba bien, pero resulta que no: la GPU no estaba bien configurada y los cortes seguían apareciendo.
Problema – Error de transcodificación en Jellyfin
Jellyfin muestra la siguiente excepción:
Device creation failed: -542398533.
Failed to set value 'vaapi=va:,vendor_id=0x8086,driver=iHD' for option 'init_hw_device': Generic error in an external library
Error parsing global options: Generic error in an external library
Esto ocurre aunque la comprobación de vainfo funciona dentro del contenedor y el driver iHD está presente.
Diagnóstico – ¿Por qué Jellyfin no accede a /dev/dri?
En el nodo Proxmox:
ls -la /dev/dri/
# crw-rw---- 1 root video 226, 1 card1
# crw-rw---- 1 root render 226, 128 renderD128
Al inspectar el LXC (ID 108) los dispositivos aparecen como root:root en lugar de root:video / root:render, bloqueando el acceso del usuario jellyfin.
Solución – Hook script de Proxmox para cambiar permisos
# Create the snippets directory if it doesn't exist
mkdir -p /var/lib/vz/snippets
# Create the hook script
cat > /var/lib/vz/snippets/lxc-108-dri-perms.sh << 'EOF'
#!/bin/bash
VMID="$1"
PHASE="$2"
if [ "$VMID" != "108" ] || [ "$PHASE" != "post-start" ]; then
exit 0
fi
sleep 2
lxc-attach -n 108 -- chown root:render /dev/dri/renderD128
lxc-attach -n 108 -- chown root:video /dev/dri/card1
EOF
chmod +x /var/lib/vz/snippets/lxc-108-dri-perms.sh
# Register the hook script in the LXC config
pct set 108 --hookscript local:snippets/lxc-108-dri-perms.sh
# Restart the LXC (pct restart does not exist in Proxmox 9)
pct stop 108 && pct start 108
Al instalar y registrar el script (pct set 108 --hookscript local:snippets/lxc-108-dri-perms.sh) los dispositivos adquieren la propiedad correcta.
Verifica:
pct exec 108 -- ls -la /dev/dri/
# crw-rw---- 1 root video 226, 1 card1
# crw-rw---- 1 root render 226, 128 renderD128
Con los permisos corregidos, Jellyfin transcodifica vía VAAPI sin errores.
Resultados – Transcodificación confiable y sin disrupciones
Jellyfin ahora accede a todos los dispositivos DRI y la funcionalidad de hardware transcoding con Intel Quick Sync funciona de manera estable.
FAQ
¿Qué diferencia hay entre <em>card1</em> y <em>renderD128</em> en /dev/dri?
card1 es el dispositivo principal de renderizado de la GPU; renderD128 permite la entrada VRAM sin asociarse directamente a la pantalla, usado para streaming e Inteligencia Artificial.
¿Necesito reiniciar el contenedor cada vez que cambie los permisos?
Solo es necesario hacerlo una vez después de instalar el hook. Posteriormente el script corre en post-start automáticamente.
¿Puedo usar este script en Proxmox 8?
Sí, la lógica permanece igual. Solo ajusta la path y el ID del contenedor.
¿Alguien más ha tenido un error similar?
Este patrón es frecuente en LXC sin privilegios: los dispositivos se mapean con root:root por defecto.
Conclusión
Con el hook script y la corrección de permisos, Jellyfin transcodifica sin errores. Mantén este esquema en tu entorno Proxmox para evitar caídas inesperadas de la biblioteca de VAAPI. ¿Tienes dudas con la configuración? Escríbeme o deja un comentario. Compártelo si te ha gustado. ¡Y hasta aquí por hoy!
Artículos relacionados
Cómo resolví los cortes de Jellyfin en 4K: disco lleno y más
Películas en 4K que se cortan a los 5 minutos, salvapantallas que salta solo... No era la red. El disco del LXC estaba al 100%. Descubrí y solucioné cinco problemas encadenados: disco lleno que impedía escribir logs y segmentos de transcoding, archivo MKV corrupto con error EBML, falta de aceleración por hardware Quick Sync en Intel HD Graphics 530, montaje NTFS incorrecto que no permitía borrar archivos, y NFS que no detectaba archivos nuevos por falta de inotify. Aprende a diagnosticar con journalctl, ffprobe y ffmpeg.
Firefly III: finanzas personales en tu servidor sin suscripciones
Firefly III es un gestor de finanzas personales de código abierto con contabilidad de doble entrada, presupuestación y reglas automáticas. Instálalo en tu Home Lab conectado a tu base de datos centralizada y olvídate de suscripciones como YNAB.
La regla 3-2-1 de backups: No perder tus datos nunca más
La regla 3-2-1 de backups es el estándar para proteger tus datos: 3 copias, 2 tipos de almacenamiento, 1 fuera de casa. Te explico cómo aplicarla con Proxmox Backup Server, Backblaze B2 o Wasabi, y comparativa de costes por TB.