♥ Partecipa anche tu alle donazioni: sostieni SaggiaMente, sostieni le tue passioni!
Plex è un mediacenter cross-platform che permette di organizzare tutte le nostre librerie multimediali in un unico ambiente. Esiste sia in versione freeware che a pagamento, con sottoscrizione mensile, annuale e a vita. Si presenta in due vesti :
- Server: che ha il compito di catalogare e trasmettere le nostre librerie multimediali
- Player: solitamente app su mobile o smartTV, tramite le quali vengono riprodotti i contenuti in streaming
Uno dei motivi che mi ha spinto a scegliere la soluzione NUC + Proxmox in casa è stata quella di svincolare il server Plex dal mio vecchio Synology, non più in grado di effettuare transcodifiche “on the fly” dei formati video non supportati dai client. I NUX non sono solitamente molto potenti ma quelli con processori Intel dotati di Quick Sync Video riescono comunque a lavorare bene grazie all’accelerazione hardware. Va però sottolineato che questa funzione è disponibile solo per chi possiede un abbonamento Plex pass.
Nota: per scoprire se la vostra CPU è supportata basta ricercarla nella sezione ark del sito Intel o più semplicemente digitare su Google il codice del processore, ad esempio J3455.
Gli obiettivi di questa guida sono:
- Installare Plex in un container LXC su Proxmox;
- Abilitare gli aggiornamenti mediante il comando “apt-get upgrade”;
- Abilitare il passthrough della GPU a cui sarà demandata la transcodifica dei contenuti multimediali non supportati.
I primi due punti vanno eseguiti nella shell del container, mentre l’ultimo dalla shell del nodo PVE
Creare un container LXC
Non descriverò nel dettaglio questa parte poiché molto semplice, soprattutto se avete già una installazione di Proxmox attiva, che è un prerequisito per procedere nel setup. Sul web è pieno di guide ma in realtà basteranno le impostazioni di base nella creazione di un container, che poi andrà impostato come privilegiato. Personalmente ho usato Ubuntu 16 come base ed ho assegnato 4GB di RAM e 4 Core. Infine suggerisco di impostare un indirizzo IP statico per evitare di riceverne uno sempre diverso dal modem/router. Una volta completata la creazione è consigliabile prima di tutto aggiornare lanciando i seguenti comandi:
apt-get update
apt-get upgrade -y
Bind Mount
Questa procedura è necessaria se i file multimediali da aggiungere nella libreria di Plex sono ospitati su hard disk di rete e non direttamente collegati al NUC. Nel mio caso si trovano sul NAS, sul quale si possono creare delle cartelle condivise. Per accedervi dal container di Plex dobbiamo installare CIFS con questo comando:
apt-get install cifs-utils
Nota: di norma l’accesso al container avviene tramite account root (ovvero con privilegi di amministratore) pertanto nei comandi lanciati da terminale non servirà il prefisso sudo.
Una volta installato il pacchetto dovremo creare una directory al cui interno verrà montato il volume condiviso del NAS. Io ad esempio ho creato nella cartella media
due cartelle film
e serietv
. Per farlo basta usare mkdir:
mkdir /media/film
mkdir /media/serietv
Nota: per evitare errori e confusione non utilizzate nomi con spazi, sia per le cartelle di destinazione del mount che per le condivisioni sul NAS.
Il passo successivo prevede la modifica del file fstab
aggiungendo la configurazione delle condivisioni che saranno montante in automatico all’avvio. Di seguito vedete le stringhe standard per CIFS su cui dovrete modificare in ordine:
- percorso completo della sorgente (quindi
//IP_NAS/condivisione
) - percorso locale di destinazione per il mount (ad esempio
/media/film
) - nome_utente e password (se richieste dalla condivisione della sorgente sul NAS)
//192.168.x.x/film /media/film cifs username=nome_utente,password=password_scelta,iocharset=utf8,sec=ntlmssp 0 0
//192.168.x.x/serietv /media/serietv username=nome_utente,password=password_scelta,iocharset=utf8,sec=ntlmssp 0 0
Per maggiori dettagli sull’argomento potete approfondire nel Wiki di Ubuntu relativo al mount. Ricordo che sul NAS deve già essere presente un utente con le credenziali indicate su fstab che abbia accesso alle cartelle condivise.
Installare Plex
Come prima cosa basta andare sulla pagina di download della versione server di Plex, selezionare la piattaforma Linux, scegliere la versione (nel mio caso Ubuntu 64 bit per Intel/AMD) e copiare il link per il download. Nella shell del container si dovrà digitare il comando wget e poi incollare il link subito dopo uno spazio. Prendete le righe qui sotto solo come esempio ma generate voi il link di download perché il numero di versione cambierà con i futuri update. Proprio per questo motivo il successivo comando di installazione prevede l’uso del carattere jolly *
nella parte che potrà variare.
wget https://downloads.plex.tv/plex-media-server-new/1.18.5.2309-f5213a238/debian/plexmediaserver_1.18.5.2309-f5213a238_amd64.deb
dpkg -i plexmediaserver*.deb
Avvio automatico
Per far avviare automaticamente Plex insieme al container basta abilitare il suo servizio con questi due comandi in successione:
systemctl enable plexmediaserver.service
systemctl start plexmediaserver.service
Integrare l’aggiornamento automatico di Plex
Digitando il comando dpkg -L plexmediaserver
otterremo a schermo una lista molto lunga di file, scorrendo in basso dovremmo vedere la seguente voce /etc/apt/sources.list.d/plexmediaserver.list
. Questo è il file che va modificato per far sì che lanciando il comando apt-get upgrade
vengano installate automaticamente le nuove versioni di Plex. Iniziamo dunque entrando in modifica sul file
nano /etc/apt/sources.list.d/plexmediaserver.list
Avremo a schermo le seguenti righe:
# When enabling this repo please remember to add the PlexPublic.Key into the apt setup.
# wget -q https://downloads.plex.tv/plex-keys/PlexSign.key -O - | sudo apt-key add -
# deb https://downloads.plex.tv/repo/deb/ public main
A questo punto è sufficiente togliere il commento #
sull’ultima riga, salvare il file e lanciare i seguenti comandi:
apt-get install gnupg
wget -q https://downloads.plex.tv/plex-keys/PlexSign.key -O - | sudo apt-key add -
A questo punto possiamo lanciare il comando apt-get update
e dovremmo vedere nella lista dei pacchetti aggiornabili anche Plex.
Abilitare il Passthrough della GPU
La prima parte di questo passaggio va eseguito nella Shell del nodo PVE di Proxmox. Lanciare i seguenti comandi:
apt-get update
apt-get install i965-va-driver
Per controllare se i drivers siano stati installati correttamente e che funzionino basta installare il pacchetto vainfo con il comando apt-get install vainfo
e successivamente digitare semplicemente vainfo
ottenendo un output di questo tipo:
error: can't connect to X server!
libva info: VA-API version 1.4.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_1_4
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.4 (libva 2.4.0)
vainfo: Driver version: Intel i965 driver for Intel(R) Coffee Lake - 2.3.0
vainfo: Supported profile and entrypoints
VAProfileMPEG2Simple : VAEntrypointVLD
VAProfileMPEG2Simple : VAEntrypointEncSlice
VAProfileMPEG2Main : VAEntrypointVLD
VAProfileMPEG2Main : VAEntrypointEncSlice
VAProfileH264ConstrainedBaseline: VAEntrypointVLD
VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
VAProfileH264ConstrainedBaseline: VAEntrypointEncSliceLP
VAProfileH264Main : VAEntrypointVLD
VAProfileH264Main : VAEntrypointEncSlice
VAProfileH264Main : VAEntrypointEncSliceLP
VAProfileH264High : VAEntrypointVLD
VAProfileH264High : VAEntrypointEncSlice
VAProfileH264High : VAEntrypointEncSliceLP
VAProfileH264MultiviewHigh : VAEntrypointVLD
VAProfileH264StereoHigh : VAEntrypointVLD
VAProfileVC1Simple : VAEntrypointVLD
VAProfileVC1Main : VAEntrypointVLD
VAProfileVC1Advanced : VAEntrypointVLD
VAProfileNone : VAEntrypointVideoProc
VAProfileJPEGBaseline : VAEntrypointVLD
VAProfileJPEGBaseline : VAEntrypointEncPicture
VAProfileVP8Version0_3 : VAEntrypointVLD
VAProfileHEVCMain : VAEntrypointVLD
VAProfileHEVCMain10 : VAEntrypointVLD
VAProfileVP9Profile0 : VAEntrypointVLD
VAProfileVP9Profile2 : VAEntrypointVLD
Ora possiamo passare alla configurazione del passthrough della GPU al container Plex. Per prima cosa bisogna identificare i parametri della scheda video digitando:
ls -l /dev/dri
Ottenendo come output qualcosa del genere:
total 0
drwxr-xr-x 2 root root 80 Feb 4 20:35 by-path
crw-rw---- 1 root video 226, 0 Feb 4 20:35 card0
crw-rw---- 1 root render 226, 128 Feb 4 20:35 renderD128
Annotate i numeri associati alla scheda video:
- La card0 ha come ID 226, 0
- Il renderD128 ha come ID 226, 128
Per abilitare il passthrough bisogna editare il file xxx.conf, dove xxx rappresenta il container in cui abbiamo installato Plex. Per editare il file usiamo ancora nano, quindi:
nano /etc/pve/lxc/100.conf
e aggiungiamo le seguenti righe:
lxc.cgroup.devices.allow = c 226:0 rwm
lxc.cgroup.devices.allow = c 226:128 rwm
lxc.cgroup.devices.allow = c 29:0 rwm
lxc.autodev: 1
lxc.hook.autodev:/var/lib/lxc/100/mount_hook.sh
Da notare che l’ultima linea richiama un script che andremo a creare ora con l’editor. Nel comando seguente sostituite xxx
con il numero del container LXC di Plex su Proxmox:
nano /var/lib/lxc/xxx/mount_hook.sh
All’interno incollate queste righe:
mkdir -p ${LXC_ROOTFS_MOUNT}/dev/dri
mknod -m 666 ${LXC_ROOTFS_MOUNT}/dev/dri/card0 c 226 0
mknod -m 666 ${LXC_ROOTFS_MOUNT}/dev/dri/renderD128 c 226 128
mknod -m 666 ${LXC_ROOTFS_MOUNT}/dev/fb0 c 29 0
Una volta salvato il file e ritornati nella shell, bisogna rendere il file eseguibile con:
chmod 755 /var/lib/lxc/xxx/mount_hook.sh
A questo punto, per verificare che sia tutto funzionante basta avviare la riproduzione di un video da un dispositivo forzando la codifica. Nella bacheca di Plex dovremmo vedere la scritta Transcodifica (hw)
.
Autore:
Matteo (@tamet)
Revisore:
Davide (@daxda)
Articoli correlati
Nessun articolo.