miniDLNA con XigmaNAS y otras configuraciones

Mis primeros inicios en la informática por allá, 2009, en esos tiempos cuando ni una dirección IP sabiamos que era, cuando ni prender una pc, eso era una hasaña, y aún, porque siempre seremos novatos, de mis primeras versiones FreeNAS muy poco conocido, su hijo(fork) XigmaNAS antes llamado Nas4FREE, este por intereses de sus desarrolladores (lo más seguro es que sea lo típico) money, política, una parte tendrá licenciamiento.

iXSystems en este interesante timeline, se ve parte de la historia de FreeNAS el que encendio la chispa, ahora FreeNAS es TrueNAS CORE, durante la creación de este post, TrueNAS y FreeNAS ambos eran mantenidos por iXSystems, luego de un tiempo lograron unirlos.

Dado que la situación de FreeNAS cambió mucho y open media vault no me inspira tanto pero "me gusta también", vamos a usar XigmaNAS para librarnos de todo eso, recordando hace años cuando FreeNAS era verderamente free, bajo fondo xigmanas sigue siendo un derivado de FreeBSD, tiene muchos servicios interesantes para utilizarlos en nuestra red local/remota compatible con el sistema de ficheros ZFS unos de los formatos más avanzados que existen teniendo una de sus ventajas más prominentes es el uso de snapshots o instantáneas de los datasets.

Usare virtualbox para ir probando luego migrare (es decir hacer un backup y luego importarlo al NAS real) todo a una placa supermicro x8dtn+, unos dual Xeon E5645 socket 1366, 2 discos en ZFS mirror marca Western Digital Red Pro (WD2001FFSX) 24/7 de 7200RPM y unos 32gb de memorias RAM-ECC de 1333MHz en aliexpress por cierto xD.

Y aqui lo tenemos todo montado ya, respaldamos lo que teníamos de virtualbox y lo importamos en el propio nas

systemInformation

nas activo

Flujo importante inicial

El flujo comienza desde el circulo rojo, bastante ideal con la mayoria de los pasos necesarios para dejar nuestro NAS activo.

FLOW install de XigmaNAS

Info:


Comunicacíon vía puerto serie

Necesitamos un cable y la simple app cu, y la gran ventaja de esto es que no necesitamos un monitor fijo, esta conexón la hize en mi portatil.

DSD TECH SH-RS232G USB a Serie DB9 Cable Hembra Chip FTDI FT232RL Incorporado

cable puerto serie

sudo apt install cu (1)
sudo chmod a+rw /dev/ttyUSB0 (2)
sudo cu -l /dev/ttyUSB0 -s 9600 (3)
1 la app cu
2 Executar permisos al puerto serie /dev/ttyUSB0
3 Conexión al NAS via puerto serie

conexion serial al nas

DLNA - Digital Living Network Alliance

Un protocolo basado en UPNP nos vendra bien para ver peliculas muy sangrientas de noche en la TV, mmmm sin estar usando tanto el USB, en caso de que NETFLIX no tenga esa pelicula que tanto queramos ver.

Pestaña Settings

Aquí existen configuraciones interesantes que podemos hacer algunas de ellas son:

settings minidlna

- Name

Es el nombre de nuestro servidor dlna y es xigmaNAS movies así se va a mostrar en nuestros clientes dlna

- Broadcast Interval

El tiempo de escaneo lo tendré a 5 segundos, si los clientes escanean los sevidores dlna en la red, dichos servidores se mostraran en ese tiempo, por defecto son 300 segundos. FIXME

- Database Directory

Debemos tener un directorio base raíz, el mío se llamara igual pero en minúscula minildlna, entonces si escaneo con mí TV, o ANDROID, IOS sucks(que en realidad tendrán sus propios clientes dlna), los directorios que saldrán son los contenidos en el, por ejemplo:

minidlna/directorioConContenidoParaMostrar

- Vizualizar status del miniDLNA

La url siguiente nos permite vizualizar el estado del servidor miniDLNA nuestro, y los dispositivos de nuestra red, por ejemplo SmartTV, teléfonos disponibles.

http://ipxigmanas:8200/status
  • Media library actuamente contiene 1 solo video.

status minidlna

En caso de que "Video files" no nos muestre ningun video que eso no es bueno, porque podemos pasar el rato buscando el porque, en la parte inferior de la pestaña settings se debe dar click en "rescan" que dicho botón bajo fondo es equivalente a este comando:

sudo service minidlna rescan
  • También muy importante mirar los permisos del fichero, deberían estan así:

  • -rwxr-xr-x si hacemos lo siguiente damos permisos de ejecución y que se visualize en la tabla de la imagen anterior.

sudo chmod 755 nombreArchivo

O al contenido de un directorio de manera recursiva

sudo chmod -R 755 nombreDir

Este comando También viene útil si se guarda en opciones avanzadas

/bin/chmod -R 755 /mnt/mydataset/minidlna

Cron ?

tenemos la posibilidad de añadir dicha tarea de "rescan" de nuestro minidlna usando cron por ejemplo:

/usr/sbin/service minidlna rescan

Pero, solo la guardaré, si ese "rescan" se hace cada pocos segundos, lo que se este reproduciendo via DLNA se interrumpiría.


Pestaña Media Folder

media folder

- Path

Aqui vamos buscar el directorio que estara contenido dentro del directorio raíz minidlna y será movies, que es donde se alojaran ficheros con formato (.mp4 .mkv .avi etc), dicho directorio es el que mostrará su contenido al ser escaneado ejemplo:

minidlna/movies


Usando DMS Explorer en Android

Con esta app podemos ver los servidores DLNA disponibles en nuestra red y como resultado tenemos lo siguiente:

dmsExplorer


Panasonic es el SmartTV de ejemplo

Si buscamos los dispositivos disponibles desde nuestro SmartTV tenemos lo siguiente:

dispositivos smartTV

smartTV movie


Navegando al directorio movies desde CIFS/SMB (Samba), FTP etc

Si tenemos samba habilitado y nuestro usuario correspondiente podemos ir al directorio movies, y copiar las peliculas ahí.

directorio movies desde samba

Usando Cx Explorer desde Android

La interface de esta app es mas pulida y es la que estoy usando ahora mismo, además al compartir puedo subir cosas al directorio del NAS sin problemas.

cxExplorer


Configuración para acceso vía SSH

En nuestra pc cliente, generamos la clave asimétrica tipo

ssh-keygen -t ed25519 (1)
1 Fuerte y rápido, el algoritmo de clave pública mas brutal de hoy en día.
Con añadir una passphrase sería más seguro aún.

Luego la clave publica generada la copiamos en el usuario correspondiente como aquí

clave ssh

Permisos al autenticar con el servidor ssh

En caso de no poder autenticar con el XigmaNAS vía ssh es necesario mirar los logs

/var/log/sshd.log (1)
1 En el servidor tenemos este fichero, para mirar logs del servicio sshd

Y vemos lo siguiente

Could not open user 'ruben' authorized keys '/mnt/pool/ruben/.ssh/authorized_keys': Permission denied

Se debe verificar que el dataset del usuario al cual se desea acceder tenga los permisos correctos, en este caso use:

  • ACL inherit: Passthrough - Inherit all entries

  • ACL mode: Passthrough - Do not change ACL

Y también esto

dataset permissions ssh

El grupo ruben no debe tener permisos de escritura, solo lectura y ejecución o chmod -R 750 ruben

De manera más precisa el dir .ssh debe estar con el mode 750 y el fichero authorize_keys con mode 600

Luego debemos sincronizar desde la UI el pool

sync dataset

https://192.168.1.250/disks_zfs_config_sync.php (1)
1 Este fichero .php se le hace la request para hacer el Synchronize

Si todo sale bien, deberíamos poder hacer login ssh con el usuario correspondiente.

rubn ⲁƛ ▸ ssh -i ~/.ssh/key xxx@192.168.1.250
Enter passphrase for key '/xxx/xxx/.ssh/key:
Last login: Wed Jan 10 16:21:21 2024 from 192.168.x.x
Welcome to Xigmanas!
[xxx@servernas ~]$

Via SFTP con Filezilla

Generamos nuestros certificados en formato X.509.pem tanto publico como privado con firma RSA(SHA512withRSAEncryption), he usado el api bouncy castle y su dependencia para FIPS (Federal Information Processing Standards), aún toca mejorarlo con Elliptic Curve Cryptography (ECC)

ftp tls

Con la clave privada anterior generada ed25519, para ssh, la usaremos también para hacer login con Filezilla via SFTP, pero debemos importarla primero para que filezilla cree un fichero con extension .ppk compatible.

Entonces, vamos a Edit/Settings…​

Importamos el fichero

conversion fichero para filezilla

nas filezilla loginSFTP

Vamos al Site Manager y buscamos el fichero que generamos con filezilla en formato .ppk

site manager filezilla

Y con eso sería suficiente para conectarnos desde Filezilla por SFTP.


Reiniciar servicio miniDLNA desde la WEB-GUI

Podemos reiniciar el servidor miniDLNA desde la WEB-GUI o desde la shell del XigmaNAS

restart minidlna

Desde la shell de XigmaNAS hacemos login con las credenciales del usuario admin que posee permisos para escritura en la consola, o También nos serviria el usuario del grupo de ssh.

sudo service minidlna restart

Configurando conexión IPMI

Esto es muy útil, porque permite que tengamos acceso a nuestro server vía LAN, como es eso?

Podemos acceder a la BIOS por medio de ella, pero necesitamos una tarjeta que permita hacer esto por ejemplo:

  • La AOC-SIMLP-3+

ipmi card

Si intentamos ir al BIOS por puerto serie, no podemos, pero por IPMI si 💥 y no nos haría falta tener un monitor para eso.

ipmi card motherboard

Este es el socket para la tarjeta IPMI encaja perfectamente, aun teniendo un disipador de aire justo arriba.

Reseteando tarjeta con el IPMItool

Por alguna razón, cuando cambie de http a https no pude acceder más, entonces desde el XigmaNAS ya viene instalado por defecto.

ipmitool raw 0x3c 0x40

Can’t find /boot/zfsloader

Un error que puede arrojar el NAS a la hora de iniciar, y por lo visto que por el orden de los discos, tocaria seleccionar el correcto donde se realizo la instalación.


Sería interesante probar el uso de apps como BubbleUpnP, jupnp etc