Plex avec Proxmox et Intel N100

Le processeur Intel N100 est idéal pour faire un serveur Plex avec sa prise en compte du transcodage hardware, et avec un noyau linux à jour celui-ci est directement détecté par Plex, mais pour le combiner avec proxmox il y a un peu plus de travail.

Pourquoi cette combinaison Plex/Proxmox/Intel N100 ?

Historiquement j’utilisais une Nvidia Shield comme serveur Plex (avec le transcodage hardware même sans Plex Pass). Mais celle-ci a fini par manquer de fiabilité : stockage limité et carte SD non utilisable suite aux MAJ de l’OS, problème avec ma Shield qui s’éteint parfois sans raison, …
Le transcodage hardware semblant compliqué à obtenir sur un SBC je me suis tourné vers un mini PC avec une base Intel N100 basse conso (TDP de 6W) et gérant le transcodage hardware via la techno Quicksync d’Intel.

Après quelques essais concluant sous Ubuntu Server j’ai cherché à transposer ça sur proxmox (le sujet mériterait d’ailleurs un article) ce qui n’est pas sans quelques écueils pour réussir à activer le transcodage hardware.

Activer la virtualisation du GPU du N100

Une fois proxmox installé il faut activer la techno de virtualisation du GPU pour rendre celui-ci utilisable dans les VM.

On pourra ce référer à des guides complets comme par ex. https://www.reddit.com/r/homelab/comments/b5xpua/the_ultimate_beginners_guide_to_gpu_passthrough/

Mais avec notre processeur cela peut se limiter à quelques étapes :

Activation de iommu :

nano /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"

et on met à jour grub

update-grub

On active les modules requis

nano /etc/modules

en ajoutant à la liste

vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

Et on peut alors redémarrer proxmox.

Mise en place du passthrough dans Proxmox vers la VM Plex

Une fois le GPU rendu disponible on le passe à la VM hébergeant Plex.

Onglet hardware de la VM cible, bouton « Add » > « PCI Device ».

On sélectionne « Raw Device » et on cherche notre « UHD Graphcs »

On redémarre ensuite notre VM

SI la VM refuse de démarrer il faut vérifier que le GPU n’est pas utilisé par ailleurs par proxmox

Activation dans Plex

En redémarrant Plex doit détecter tout seul le GPU et activer le transcodage hardware.

On peut le vérifier sur l’écran « Transcodage » et pendant la lecture d’un média (en forçant le transcodage si on est en « lecture directe »).

Le premier (hw) indique un décodage hardware, le second un encodage hardware. Notre CPU est délesté de la partie vidéo et n’a plus qu’à gérer l’audio.

En cas de soucis le premier point à vérifier est la prise en compte du GPU dans la VM. On peut par exemple exécuter la commande « intel_gpu_top » (du paquet intel-gpu-tools sous ubuntu) qui montre l’utilisation du GPU.

Il faut ensuite vérifier que Plex voit bien le GPU. Direction « réglages > transcodeur » dans les paramètres du serveur et vérifier la partie suivante :

On vérifie les cases cochées et que notre GPU apparaît dans la liste (on laisse la valeur à Auto).

Autre cas, en important un docker provenant d’une autre machine (cas que j’ai rencontré), il faut vider le dossier « Library/Application Support/Plex Media Server/Drivers/ » puis redémarrer plex pour qu’il redétecte correctement le GPU.

Et voilà vous pouvez profiter du transcodage hardware de votre Intel N100 et de la souplesse de Proxmox pour votre serveur Plex.