msgbartop
Me encanta el olor del napalm por la mañana
msgbarbottom

24 ene 25 Nuevo servidor de virtualización – Instalación de ProxMox

Esta entrada es la parte 6 de 6 de la serie Nuevo servidor de virtualización

Llegamos a la parte final de esta serie de artículos sobre el nuevo servidor de virtualización, que es precisamente, la parte de virtualización. Tenía claro desde el principio que iba a hacer uso de ProxMox para implementar el servicio. Al fin y al cabo, es lo que venía usando desde hace años, en un mero PC convencional, para contener mis máquinas virtuales. ProxMox proporciona una interfaz de administración amigable a la virtualización KVM de Linux, y permite una operación profesional del entorno. Como es habitual en proyectos software libre, es posible desplegar una versión completamente funcional del entorno de manera gratuita, y contratar un servicio de suscripción para tener soporte especializado por parte de la empresa que manteniene la solución.

En cuanto al mecanismo de despliegue, como adelanté en los capítulos anteriores, opté por realizar una instalación de Debian 12, para a continuación desplegar sobre ella la configuración específica de ProxMox. Para los pasos concretos de cómo hacerlo, existe una guía bien detallada oficial de ProxMox que muestra cómo realizar dichos pasos: Install Proxmox VE on Debian 12 Bookworm.

Un detalle importante a tener en cuenta, en caso de que se desee que las máquinas virtuales tengan direccionamiento de la red donde está instalado el servidor de ProxMox (lo que es mi caso), es que es necesario crear un Bridge Linux. Existe una guía detallada al respecto: Default Configuration using a Bridge que vale la pena consultar. En este caso, puedo indicar que es más sencillo configurar el bridge desde la interfaz gráfica (aunque sea contraintuitivo), ya que la instalación de Debian 12 hace que una interfaz física ya tenga asignada la configuración de red. Desde la interfaz gráfica simplemente es eliminar la configuración de la tarjeta, crear el Bridge Linux, asignar esa configuración de IP y máscara, y vincular la interfaz física a la tarjeta. Una vez hecho esto, se aplican los cambios, y el sistema sale andando solo sin mayores dolores de cabeza.

El siguiente paso a dar para mí fue migrar las máquinas virtuales de mi antiguo entorno al nuevo. Hubiera sido una idea interesante el configurar un cluster HA con las dos máquinas, pero por desgracia no fue posible, ya que el entorno antiguo está en la versión 6.x de ProxMox y el nuevo en la 8.x, y no hay compatibilidad directa. Hubiera sido preciso escalar la instalación antigua a 7, y posteriormente a 8, y prefería dejar la antigua como estaba, para tener una máquina de respaldo en caso de desastre.

En lugar de esto, y dado que tengo un servidor NAS donde hago las copias de seguridad de mi entorno ProxMox, opté por generar copias nuevas, y posteriormente añadir este servidor como un volumen NAS externo al servidor y, una vez añadido, simplemente restaurar las copias. La adición del servidor NAS se hace desde Datacenter->Storage->Add->NFS, e indicar los datos del servidor y el cometido que se le quiere dar a ese volumen (en mi caso, VZDump backup).

Configuración de un servidor NFS

Configuración de un servidor NFS

El proceso funcionó sin problemas, y una vez importadas las máquinas desde el backup en el nuevo servidor, hice algunos cambios menores, como asignar mayor cantidad de RAM por máquina (4 GB a cada una), más procesadores (8 a cada una), y mapear a la máquina de la domótica dos dispositivos USB externos que tengo configurados, que funcionaron también sin mayor problema. Paré el servidor antiguo, arranqué máquinas, y todo funcionó perfectamente.

Estado del servidor ProxMox

Estado del servidor ProxMox

Como se puede ver, incluso con las máquinas a pleno rendimiento, el servidor está más que sobrado para atenderlas, y con unos niveles de sonoridad incluso más reducidos que con el servidor original. He notado además, como era de esperar, que las máquinas virtuales responden de manera mucho más ágil que en el entorno antiguo, por lo que todo son ventajas. Espero que este servidor dure muchos, muchos años.

VN:F [1.9.20_1166]
Rating: 0.0/10 (0 votes cast)

Etiquetas: , ,

23 ene 25 Nuevo servidor de virtualización – Configuración de red

Esta entrada es la parte 5 de 6 de la serie Nuevo servidor de virtualización

Una vez realizados los ajustes de configuración del servidor era el momento para pensar en la definición de la red. En principio esta parte tendría que haber sido bastante sencilla: el servidor venía con una interfaz de red de 4 bocas 10/100/1000, además de la iLO. Simplemente tendría que escoger una boca, asignarle direccionamiento IP fijo, y configurar además la iLO para acceder de manera remota en caso de fallo. Simple, ¿verdad? Pues… no. Y es que la tarjeta HP Ethernet 1Gb 4-port 331FLR Adapter, con chipset Broadcom NetXtreme BCM5719 no iba a hacer más que dar dolores de cabeza.

Con la idea anterior en mente, preparé una memoria USB con la última versión de Proxmox VE lista para instalar. El proceso de instalación en sí iba bien, en el aspecto específico de la tarjeta de red la detectaba y dejaba configurarla, pero con la instalación ya completa y usando el kernel específico de ProxMox la tarjeta dejaba de aparecer. Y sin enlace de red un servidor es poco menos que inusable. Probé con versiones algo más antiguas de ProxMox, con resultados incluso peores: ni siquera durante la fase de instalación se detectaba la tarjeta de red.

Por ello, me decidí a dar un paso intermedio: realizar el despliegue de ProxMox no directamente con el instalador, sino instalando una Debian 12 primero, y después realizar la actualización a ProxMox. De nuevo, grabé una memoria USB con una ISO DVD de Debian 12, y realicé la instalación. Como esperaba, con una Debian limpia ésta reconocía correctamente la tarjeta de red 331FLR. Fue en este punto cuando aproveché para realizar la modificación de la iLO mencionada anteriormente. Pero en cuanto realicé el despliegue de la ProxMox (eso quedará para un artículo posterior), la tarjeta de red sencillamente desaparecía.

Tras investigar un poco, pude averiguar que determinadas distribuciones de linux modificadas para propósitos específcos (pfsense, unraid, ProxMox…) presentan problemas con esta tarjeta debido a que tiene determinado firmware propietario que es necesario cargar, y que no está presente fuera de las ramas non-free de Debian. En mi caso, como había instalado indicando de manera específica que quería hacer uso de fuentes non-free, era por lo que había podido hacer uso de la tarjeta con el kernel convencional. Pero en cuanto desplegué el kernel específico de ProxMox, ésta dejó de funcionar.

Así que no me quedó otra que hacerme con otra tarjeta de red PCI Express para instalar en el servidor. Conseguí una tarjeta de red con chipset Intel, igualmente de 4 bocas a giga y, en cuento se la instalé, el sistema la reconoció, pude configurar la red, y acceder de manera remota al servidor. Lo curioso del asunto es que la tarjeta 331FLR también pasó a ser mostrada correctamente por el sistema, y de manera completamente funcional:

Configuración de red en mi servidor ProxMox

Configuración de red en mi servidor ProxMox

…pero en cuanto retiraba la nueva tarjeta, la 331FLR también desaparecía. Así que no me ha quedado otra que dejar ambas tarjetas, con lo que dispongo de 8 bocas de red giga en mi nuevo servidor.

En cuanto a la configuración de red en sí, la opción de configuración más adecuada para mis propósitos era definir un bridge linux, que contendrá la configuración de red, de tipo estático, de la red a la que esté conectado el servidor, de tal manera que las máquinas virtuales también tengan direccionamiento de red en la red de datos de casa, sin tener que aplicar NAT. Esto fue lo que hice, configurando como puerto del bridge la boca de red donde tengo conectado el cable que va al switch físico.

VN:F [1.9.20_1166]
Rating: 0.0/10 (0 votes cast)

Etiquetas: , , , , , , ,

19 ene 25 Nuevo servidor de virtualización – Introducción

Esta entrada es la parte 1 de 6 de la serie Nuevo servidor de virtualización

En las últimas semanas he estado realizando una serie de cambios bastante importante en mi sistema informático. Desde hace muchos años tengo desplegado en casa un servidor que históricamente ha contenido mi sitio web, pero que con el paso del tiempo ha ido ganando en funcionalidades: domótica, servicio de mensajería, automatización, almacenamiento, VPN, streaming de vídeo… Todo empezó en la Universidad, con unas prácticas de alguna asignatura que ni siquiera recuerdo, pero ha persistido con el paso del tiempo.

En un momento dado tuve una serie de sistemas aislados que complementaban al servidor: un Mini-ITX, un par de Raspberry Pi, una Asus Tinker Board, una NAS… Pero con el paso del tiempo fui simplificando. Un paso trascendental fue la consolidación de las máquinas físicas separadas en un único servidor de virtualización. Para ello escogí realizar un despliegue de ProxMox, virtualización basada en KVM, pero que proporcionaba una interfaz de usuario vía web bastante amigable, lo que hacía la administración del entorno fuera sencilla. Para ello utilicé un viejo PC de oficina con un procesador Intel y 4 GB de RAM. Todo bastante ajustado para contener tres máquinas virtuales: un frontal web NGINX que además desplegaba un servidor MQTT y VPN, un backend con el servidor web WordPress, securizado por el frontal antes comentado, y una máquina separada para el entorno de domótica. Durante años ha funcionado bien, pero hace unos meses el servidor, ya veterano cuando lo desplegué, empezó a presentar fallos hardware. El principal fue que se estropeó uno de los módulos de RAM, quedando reducida la cantidad disponible a 3 MB. Además, presentaba fallos de encendido en caso de que se fuera la luz, lo que hacía que la recuperación del sistema fuera bastante complicado.

Ante ello, decidí renovar el hardware, para lo que me puse a mirar precio de módulos RAM para añadirle el módulo faltante al PC, y también precios de PCs nuevos. Tanto lo uno como lo otro tenían precios elevados (la RAM por tener que adquirirla a través de Ebay y sitios así), y el PC nuevo por el hecho de comprarlo nuevo. Y en ello andaba cuando se me ocurrió una idea disparatada:

Servidor HP Proliant DL360p Gen8

Servidor HP Proliant DL360p Gen8

Hacerme con un servidor. Uno de verdad. No un viejo PC reconvertido. Un ser-vi-dor. Y resultó que la idea no era tan disparatada. Encontré un servidor HP DL360p Gen8 con doble fuente de alimentación, dos procesadores de 12 núcleos cada uno, 96 GB de RAM, 4 discos de 2 TB a 7200 RPM y controladora RAID, 4 puertos de red a giga, y un año de garantía por la ridícula cifra de 100€. Resultaba que la idea no era tan disparatada. Así que me hice con él. Pero es un servidor, claro. Está optimizado para el rendimiento. Y eso suele tener algunos problemillas cuando lo metes en una casa. Y no es el menor de ellos el que puede ponerse a sonar como un MIG 21 despegando.

Estas semanas he estado lidiando para poner el servidor de manera funcional, adaptarlo a un uso doméstico, volver a instalar un entorno de virtualización, y migrar las máquinas desde el viejo servidor. Por el camino he aprendido una serie de cosas bastante interesantes, y creo que vale la pena recopilarlas por si a alguien más le resultan interesantes, así que espero escribir unos cuantos artículos al respecto.

VN:F [1.9.20_1166]
Rating: 0.0/10 (0 votes cast)

Etiquetas: , , , , , , ,

31 ene 21 Concentrador Zigbee basado en software libre: zigbee2mqtt

Llevo ya unos cuantos artículos hablando sobre mi sistema de domótica, y hasta ahora he omitido uno de los puntos centrales del mismo: el concentrador zigbee. Mi sistema de domótica es algo sui generis, ya que es un compendio de distintas piezas que he ido amalgamando con el paso del tiempo. El punto central del mismo es el estupendo software Home Assistant, junto con un servidor MQTT. Sobre este núcleo he ido añadiendo diversos dispositivos, empezando por hardware basado en NodeMCU programados por mí mismo. Empecé con ello en 2016, en Irlanda, pero realicé algunos proyectos preliminares aún antes, pero completamente desacoplados. Pero todo lo hecho ha tenido como hilo común el experimentar con diversas tecnologías.

Como parte de ese proceso de experimentación acabé introduciendo dispositivos Zigbee. Son unos elementos interesantes, y la tecnología en la que se basan ha tenido gran difusión en el ámbito de la domótica doméstica. Para transmitir la señal se basan el frecuencia de 2’4GHz, lo que provoca que en entornos saturados de redes WiFi y Bluetooth estemos añadiendo más elementos que pueden provocar perturbaciones. Sin embargo, no es ese su gran problema. El gran problema que tienen es que estos dispositivos necesitan de un aparato que realice las veces de concentrador de señales, actuando como pasarela entre los dispositivos en sí y el software de control que nos permite interactuar con ellos. Y si este concentrador fuera genérico, no sería demasiado malo, pero cada fabricante requiere que uses el suyo y nada más que el suyo, lo que implica que no es posible mezclar, por ejemplo, luces del sistema TRÅDFRI de Ikea con sensores de temperatura Xiaomi, o interruptores Silvercrest de Lidl, a menos que quieras tener que usar tres concentradores y tres aplicaciones distintas para cada componente. Un verdadero rollo.

Y es aquí donde entra nuestro amigo el software libre. Existe un magnífico proyecto de desarrollo de un concentrador multifabricante que permite precisamente eso: utilizar un solo concentrador abierto para gestionar dispositivos de diversos fabricantes. Ese es el proyecto zigbee2mqtt. La idea de partida es sencilla: escuchar las señales Zigbee de los diversos dispositivos, procesarlas, e inyectarlas en un servidor MQTT para poder ser utilizadas posteriormente como mejor convenga a tus intereses. Sencilla, pero brillante. Y en mi caso, dado que ya disponía de un Home Assistant configurado y mi servidor MQTT, algo que me venía como anillo al dedo.

Arquitectura de zigbee2mqtt

Arquitectura de zigbee2mqtt

Sin embargo, hasta ahora he hablado sólo de sofware, y para construir un concentrador que reciba señales físicas es preciso de algo de hierro. El hardware esencial es el adaptador Zigbee que recibe las señales de los dispositivos. En mi caso hago uso de un adaptador CC2531, que se conecta por USB. Es preciso programarlo con un firmware que en la propia página de zigbee2mqtt se encargan de proporcionar. Y además de eso, hace falta un dispositivo linux donde instalarlo. La respuesta más obvia es una Raspberry Pi, pero hay otras alternativas:

  • En mi caso, allá por 2016, empecé utilizando una Asus Tinker Board, que por aquel entonces ofrecía mucha más potencia que la Raspberry Pi 2 que había disponible. Una placa estupenda, con mucha potencia, y con una versión de linux, Linaro OS, basada en Debian, por lo que ofrecía todo lo que necesitaba. Sin embargo, tenía una cierta pasión por devorar tarjetas microSD, por lo que hace algunos meses acabé migrando el sistema y desconectándola.
  • Otra opción interesante, dado que las necesidades de potencia de zigbee2mqtt son ciertamente reducidas (y ni de lejos requieren hacer uso de algo como una Raspberry Pi 4), es hacer uso de una placa más modesta. En mi caso, estoy teniendo estupendos resultados con una humilde Orange Pi Zero. Eso sí, siempre que cuides de ponerle un sistema de disipación y ventilación, ya el talón de Aquiles de esta placa es su disparatado problema de sobrecalentamiento del micro. Este sistema lo tengo en uso a día de hoy en Forcarey.
  • Y otra opción, perfectamente viable, es hacer uso de una máquina virtual. Este es el caso del entorno que tengo actualmente en Santiponce. Después de desechar la Tinker Board, moví el sistema a una pequeña máquina virtual en un servidor de virtualización basado en Proxmox que tengo en casa. El punto clave en este caso era verificar que el adaptador Zigbee funcionara presentándolo desde el servidor de virtualización a la máquina virtual (ya que, claro, no es posible conectar un hardware físico a una máquina virtual sin conectar el hardware al servidor de virtualización), cosa que hasta el momento ha ido como la seda. Y en cuanto a los recursos de la máquina virtual, no se necesita nada espectacular: con 512 MB de RAM y 1 vCPU hay de sobra para mover Home Assistant, zigbee2mqtt, el servidor MQTT y alguna que otra cosa más que tengo por ahí.
Home Assistant y zigbee2mqtt en Proxmox

Home Assistant y zigbee2mqtt en Proxmox

Una vez determinada qué opción para componer el concentrador, el resto es sencillo: ya hemos hablado del primer paso, que es cargar el firmware en el CC2531. El segundo es desplegar el software zigbee2mqtt en el concentrador. El proceso es bastante sencillo, ya que se trada de una aplicación Node.jsm y se instala tan sólo haciendo uso de un comando npm, una vez preparado el entorno para que pueda ejecutar este tipo de aplicaciones.

Procesos de zigbee2mqtt en Orange Pi Zero

Procesos de zigbee2mqtt en Orange Pi Zero

Por último, para tener el concentrador listo, hay que integrarlo con un servidor MQTT, que se hace mediante un fichero de configuración. Y a partir de ahí, tan sólo es cuestión de sacarle partido. Y es aquí donde entra de nuevo Home Assistant: zigbee2mqtt tiene una integración excelente con este sistema de domótica, siendo posible integrarlo con Home Assistant, y hacer que el proceso de descubrimiento en éste de los dispositivos registrados en zigbee2mqtt sea automático.

Pero he dejado lo mejor de todo para el final. Comentaba que el problema de utilizar concentradores de fabricante es que cada uno soporta solo y exclusivamente sus propios dispositivos. ¿Cuántos dispositivos soporta zigbee2mqtt? Literalmente cientos. A día de hoy, 1217 dispositivos de 189 fabricantes distintos. Y es una lista que no para de crecer. Hace algunas semanas han sido añadidos los Silvercrest de Lidl de los que escribí recientemente, solucionando el problema de que el botón físico de los interruptores no era reconocido dentro de las acciones: ahora sí lo reconoce.

¿Qué cuál es mi configuración? Bueno, a día de hoy es pelín compleja, pero tiene su gracia. Estrictamente hablando, hago uso de dos concentradores zigbee2mqtt, uno en Santiponce, y otro en Forcarey, que reportan a mi servidor MQTT, ubicado en Santiponce. Y manejo los dispositivos desde un único Home Assistant, también ubicado en Sevilla. Cada zigbee2mqtt escribe en el servidor MQTT bajo un topic diferenciado, ya que la cantidad de dispositivos es pelín larga ya. En Santiponce hago uso de:

  • Una luz Ikea TRÅDFRI, que fue la que lo empezó todo, ubicada en el salón. Es la luz que permite variar la calidez de la luz y la intensidad de la misma.
  • Su correspondiente mando, que no está integrado directamente con la luz, sino que se comunica con ella de manera independiente a través de zigbee2mqtt. Esto permite reconocer las acciones del mando en Home Assistant, y llegado el caso permitiría que el mando administrara dispositivos de terceros.
  • Una luz Müller Licht Tint de Aldi, de varios colores.
  • …y su mando a distancia. En este caso la integración no es tan limpia como en el del mando de Ikea, pero funciona bien.
  • Un cubo Aqara, que utilizo no sólo para controlar la luz Ikea del salón, sino para realizar acciones sobre la pérgola del patio. Y esto nos lleva a otra ventaja de utilizar zigbee2mqtt: que se puede interactuar sobre dispositivos que no son Zigbee. En mi caso, sobre un NodeMCU programado por mí mismo, a través de topic MQTT.
  • Tres sensores de apertura de puertas y ventanas Aqara MCCGQ11LM, que reportar la apertura de las mismas mediantes mensajes de Telegran y WhatsApp.
  • Un router CC2530 para mejorar la comunicación de los dispositivos Zigbee con el controlador. Y es que, aunque los dispositivos Zigbee pueden construir una red de tipo Mesh para llegar al concentrador, las comunicación con éste se veía perjudicada por la cantidad de señales en la banda de 2’4GHz y las distancias existentes en el caso de la casa de Santiponce. El uso de este concentrador mejoró de manera ostensible el comportamiento del sistema.
Diagrama de dispositivos de Santiponce

Diagrama de dispositivos de Santiponce

…y en el caso de Forcarey:

  • Los mismos sensores de apertura de puertas y ventanas Aqara MCCGQ11LM que comentaba antes.
  • Varios interruptores Lidl HG06337 para controlar los radiadores eléctricos del piso.
  • Otro Aqara Cube para controlar las luces del salón, que he domotizado mediante unos Sonoff Mini con software Tasmota.
  • Sensores de temperatura, humedad y presión atmosférica Aqara WSDCGQ11LM, que permitirán automatizar el encendido de los radiadores en función de las condiciones de las habitaciones.
Diagrama de dispositivos de Forcarey

Diagrama de dispositivos de Forcarey

No está mal, ¿no?

VN:F [1.9.20_1166]
Rating: 10.0/10 (2 votes cast)

Etiquetas: , , , , , , , , , , , , , , , ,