Hace ya unos años realicé una serie de entradas sobre Kodi, antiguamente llamado XBMC, y cómo montarlo en tu Raspberry Pi para sacarle todo el partido a tu colección de películas, series y música. A día de hoy sigue siendo una solución muy válida y además existen distribuciones mejoradas como son LibreELEC o OSMC.

En esta entrada te voy a contar qué es lo que tengo actualmente montado en mi salón como mediacenter y no es ninguna de estas opciones que te he contado, se trata de una mezcla entre OpenMediaVault, un sistema que permite montar una NAS sobre Raspberry Pi, y Plex Server, un servicio que nos permite realizar streaming, ver TV en directo, y que además ahora ofrece películas y series de forma gratuita desde su propia plataforma (mas info aqui).

El hardware

Pero comencemos por el principio, el hardware. No es necesario que montes exactamente el mismo hardware que te voy a describir, en mi caso me he decido por este porque dispongo de títulos en 4K que requieren de más ancho de banda así como de un almacenamiento más alto. Si tienes dudas, pregúntame.

Raspberry Pi 4

Empezamos por la Raspberry Pi 4. Actualmente la versión de 2 GB está prácticamente al mismo precio que un Pi 3b+ y las características que ofrece son muy superiores, sobre todo en lo referente a los 2 puertos USB 3.0 y la conexión Gigabit . No obstante, si ya dispones de una Raspberry Pi 3 es suficiente.

Os dejo unos enlaces de afiliado por si os interesa (importante el kit o al menos disponer de un cable micro HDMI a HDMI en el caso de la Pi 4):

Disco duro externo

Lo siguiente que nos hace falta es un disco externo donde almacenar el contenido. Para aprovechar bien el ancho de banda de la Raspi 4 se recomienda que sea compatible con USB 3.0.

En mi caso, estoy utilizando un disco WD Elements Desktop de 4 TB. Dispone de su propia fuente de alimentación lo que aliviará cualquie estrés energético de la Raspi. Aqui igual que antes. Si ya dispones de un disco o prefieres utilizar uno en formato 2.5 de tipo SSD o mecánico. Todo dependerá de tus necesidades de almacenamiento, velocidad requerida, y presupuesto claro está. Os dejo el enlace de afiliados de Amazon:

El software

En la parte del software ya hemos mencionado parte de él, aunque como veremos he agregado algunas cosillas adicionales para tener más funcionalidades.

Raspbian

Antiguamente OMV se ofrecia como imagen y estaba basado en armbian, pero a dia de hoy ha evolucionado y está basado en Raspbian.

Yo prefiero descargarme una base de rapsbian que sea compatible con nuestra Raspi 4 y sobre ella montar el resto de componentes. De esta forma nos garantizamos un rendimiento adecuado de todo.

Ya explicamos como hacer esta operativa usando Win32 Disk Imager o Etcher aqui. Una vez flasheada la tarjeta SD deberemos conectar la Raspi a un monitor y conectarle un teclado para las primeras configuraciones. El servicio SSH es uno de ellos, para poder conectarnos de manera remota. Para realizarlo una vez autenticados en el sistema (usuario: pi, contraseña: raspberry) ejecutamos el comando:

sudo raspi-config

Se nos abrirá un menú de configuración y lo recomendable es realizar lo siguiente:

  • 1. Change User Password. Para cambiar la contraseña por defecto.
  • 5. Interfacing options. SSH. Para activar el servicio que nos permite conectarnos de forma remota.

Opcionalmente podremos configurar otros parámetros interesantes como:

  • Nombre del host. O como queremos que se llame la raspi.
  • Conexión por WiFi. Esto lo podemos hacer después, aunque dado el objetivo de este proceso es muy recomendable mantener la conexión por red, máxime si queremos reproducir películas FHD o 4K.
  • Idioma del teclado (localisation). Importante si vamos a estar conectados en local y no queremos volvernos locos buscando símbolos en un teclado español.

Cuando salgamos de la herramienta podremos el ejecutar el comando ifconfig para saber que IP tenemos asignada y conectarnos de forma remota con PuTTy o Cyberduck.

Instalación OpenMediaVault

OpenMediaVault o OMV, es una solución de tipo NAS (Network Attached Storage) basada en Debian, por lo que es idea para nuestra Raspi.

Dispone de servicios como SSH, FTP, SMB/CIFS, etc. Es muy modular ya que permite instalar multitud de plugins directamente desde su entorno web.

Para su instalación deberemos realizarlo desde la consola de Raspbian. El proceso es el siguiente:

# Agregamos  el respositorio Jessie editando el archivo sources.list
sudo nano /etc/apt/sources.list

# Agregamos la siguiente linea y pulsamos Ctrl-X para guardar y salir
deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi

# Actualizamos
sudo apt-get update 
sudo apt-get upgrade

# Agregamos el repositorio y obtenemos la llave GPG:
echo "deb http://packages.openmediavault.org/public erasmus main" | sudo tee -a /etc/apt/sources.list.d/openmediavault.list
wget -O - http://packages.openmediavault.org/public/archive.key | sudo apt-key add -

# Volvemos a actualizar los respositorios e instalamos un fix del keyring y el propio OMV:
sudo apt-get update
sudo apt-get install openmediavault-keyring postfix -y --force-yes
sudo apt-get install php-apc openmediavault -y --force-yes

# Nos aparecerán algunas ventanas de configuración, la primera sobre configuración de correo diremos "No configuration". 
# La segunda nos indica si queremos utilizar WINS. Si tu DHCP proporciona esta info, dile que si, pero tampoco tiene importancia para el funcionamiento del servicio.  
# Una vez finalizado ejecutaremos el siguiente comando para configurar la interfaz web por primera vez:
sudo omv-firstaid

# Elegimos la opción 3 para cambiar la contraseña del usuario admin de la interfaz web. Después vamos a cambiar el motor web de Apache por el NGINX, no es obligatorio pero es recomendable:

sudo service apache2 stop
sudo update-rc.d apache2 disable
sudo update-rc.d apache2 remove
sudo service nginx start
	
# Deshabilitamos la memoria de intercambio y los preocesos de caché para reducir las escrituras en la SD y aumentar la vida de la tarjeta SD:
sudo swapoff -a
sudo update-rc.d rrdcached disable
sudo update-rc.d collectd disable
sudo monit stop rrdcached
sudo monit stop collectd

En el proceso de instalación notaremos que hemos perdido el acceso SSH de nuestro usuario Pi. Podemos volver a activarlo desde la interfaz web de OMV. Para ello nos conectamos via web a la IP de la Raspi con http://x.x.x.x

Introducimos el usuario admin y la contraseña openmediavault. Hacemos clic en User, usuario pi, Edit, señalamos el grupo SSH y guardamos.

Nos saldrá un banner superior indicando que apliquemos la configuración. Le damos clic a aplicar.

Lo siguiente es configurar el disco duro externo donde almacenaremos todo el contenido audiovisual. Si queremos mantener compatibilidad con Windows, lo ideal es que formateemos el disco externo como EXFAT (también suelo crear una carpeta llamada Media donde irán todos los archivos). Para que nuestra raspi sea compatible con este formato de ficheros deberemos instalar los paquetes correspondientes:

sudo apt install exfat-fuse exfat-utils

Una vez hecho esto podemos proceder a configurar el disco, el share y el protocolo SMB para que sea accesible por red desde un equipo Windows. Lo primero validamos que desde el menú ‘Physical Disks‘ vemos nuestro disco. En mi caso en un Western Digital Elements de 4TB.

Siguiente paso es crear el Share: desde el menú ‘Share Folders‘ hacemos clic en ‘+ Add‘, ponemos un nombre al share, en device seleccionamos nuestro disco duro y en Path una carpeta dentro del dispositivo (yo selecciono la carpeta Media que ya creé cuando hice el formato del disco). Damos a guardar, puede que nos dé un error, pero veremos que realmente se ha creado, así que seguimos para adelante.

Ahora deberemos configurar el servicio SMB para que sea accesible por red. Vamos al menú SMB/CIFS, pulsamos en ‘Enable‘ y guardamos.

Y ahora configuramos el Share SMB. Junto al menú superior ‘Settings‘ encontramos ‘Shares‘, hacemos clic y pulsamos en ‘+ Add‘. En ‘Share folder‘ seleccionamos el share que hemos creado previamente, en ‘Public‘ seleccionamos ‘Guest allowed‘.

Desde este momento tenemos acceso SMB al disco con la ip de nuestra Raspberry Pi \\<ip> Podremos crear carpetas y subir ficheros. En mi caso yo he creado aqui una carpeta que he llamado Cine que luego usaré para que Plex la escanee.

Instalación Plex Server

Plex es mucho más que un servidor de contenidos. Con los sistemas tipo Kodi lo que hacíamos era conectar directamente a la TV la Raspi y convertir esa TV es una especie de SmartTV. Con Plex tenemos mucha más flexibilidad ya que se trata de una configuración cliente-servidor que nos permite conectarnos de forma simultánea desde varios dispositivos de forma simultánea y también podremos hacerlo desde fuera de nuestra red local.

Esto significa que podremos centralizar en un solo dispositivo todo nuestro contenido multimedia: fotos, música y vídeo. Disponemos de clientes de Plex en todas las plataformas: iOS, Android, Amazon Fire TV, Chromecast, Xbox, PlayStation, y muchos más.

Para configurar el servidor en nuestra Raspi vamos a hacer lo siguiente desde una shell:

# Habilitar https para obtener paquetes
sudo apt-get install apt-transport-https

# Descargamos la clave de firma para asegurarnos que los paquetes descargados está bien firmados y agregamos el respositorio de PMS
curl https://downloads.plex.tv/plex-keys/PlexSign.key | sudo apt-key add -
echo deb https://downloads.plex.tv/repo/deb public main | sudo tee /etc/apt/sources.list.d/plexmediaserver.list

# Actualizamos, si obtenemos un error es que no se ha instalado bien el paquete apt-transport-https
sudo apt-get update

# Ahora si instalamos PMS
sudo apt-get install plexmediaserver

# Por defecto PMS utiliza el usuario "plex", para evitar problema vamos a cambiarlo por el usuario "pi". Editamos el archivos plexmediaserver
sudo nano /etc/default/plexmediaserver

# Buscamos esta linea
export PLEX_MEDIA_SERVER_USER=plex

# Y la sustituimos por esta y pulsamos Ctrl+X para guardar y salir
export PLEX_MEDIA_SERVER_USER=pi

# Reiniciamos el servicio
sudo systemctl restart plexmediaserver

El servicio es accesible por el puerto 32400 y la url /web/ sumada a la ip de nuestra raspi, por tanto, la dirección completa sería:

http://<ip>:32400/web/

Ahora nos pedirá que creemos una cuenta, ya que para ciertos servicios premium se requiere aunque para su uso gratuito no es necesario. Podremos saltarnos esto volviendo a actualizar la página con la url de arriba.

Ahora necesitamos configurar nuestras librerías de contenido, lo cual es tremendamente sencillo. Junto al nombre que le hayamos dado a nuestro Plex aparece un icono + que nos permite agregar una biblioteca.

Ahora debemos elegir que tipo de biblioteca queremos agregar. Esto es importante para el tipo de búsqueda y clasificación automática que hará el servicio. Le daremos un nombre a la biblioteca y el idioma principal del contenido agregado.

En añadir carpetas nos aparecerá un botón para navegar por las carpetas de la raspi y veremos que habrá una carpeta del tipo dev-disk-by-label-nombre. Ese es nuestro disco externo, si accedemos veremos nuestra carpeta del share creado anteriormente y las subcarpetas que ya hayamos creado.

Una vez hecho esto el sistema comenzará a analizar el contenido y a generar las miniaturas y la información. Si vemos que en algún caso no coincide o lo hace en otro idioma, podremos editarlo manualmente haciendo clic en el lapicero en la esquina inferior izquierda de cada miniatura.

Con esto ya podemos activar los clientes Plex en nuestros dispositivos para consumir el contenido. En mi caso estoy usando una TV LG que tiene el sistema WebOS 3.5, el cliente para el iOS (que tiene un coste entorno a los 5€ y activa el streaming de por vida), y también lo uso en un par de Amazon Fire TV Stick que tengo por casa.

Una función muy buena de que dispone Plex es que podremos crear versiones adaptadas de los contenidos, me explico. Suponed que tenemos una película en 4K pero si queremos verla desde el móvil y fuera de casa es posible que con una versión en HD de la misma sea suficiente, además que el ancho de banda necesario será mucho menor. Esto lo podremos hacer desde el menú de opciones accesible con los 3 puntitos verticales en la parte inferior derecha de cada minutura. La opción se llama Optimizar y nos dará a elegir que tipo de optimización. Esto pondrá a trabajar a la raspi (que tardará lo suyo) y finalmente tendremos 2 versiones del mismo contenido

Mi experiencia personal

Llevo ya cerca de 6 meses usando de forma intensiva este sistema y puedo decir que estoy muy contento con el rendimiento y la experiencia de usuario.

En mi caso tengo la Raspberry Pi conectada directamente por cable a un router (un Linksys WRT3200) y la TV, una LG 4K, conectada por WiFi al mismo router por una señal 5 GHz (esta TV también dispone de conexión ethernet pero solo es de 100 Mbps).

La visualización de vídeos 4K, HDR y 3D es perfecta. En ningún momento hay ralentizaciones ni cortes. Las Raspberry Pi (aunque tiene instalado un ventilador), no sube del 20% de uso de la CPU. De hecho, tengo instalado en la misma raspi, un cliente de torrent (Transmission, lo contaré en otra entrada) y también tiene instalado un Homebridge (un sistema de gestión de domótica para Homekit que también os contaré en otra entrada) y la verdad que lo soporta todo perfectamente.

Si tienes montado algo parecido en tu casa cuéntamelo en los comentarios que me quiero enterar.

¡Hasta otra pensadores!

Última modificación: 9 marzo 2020

Autor

Comentarios

Escribe una respuesta o comentario

Tu dirección de correo electrónico no será publicada.