Laboratorio Casero (HomeLab)

 Hola estimados lectores. Hoy deseo mostrarles un proyecto que he tenido en mente desde hace algún tiempo: un servidor casero para montar mi laboratorio. Esta idea surgió mientras me preparaba para impartir una materia sobre IoT y, posteriormente, me fui dando cuenta de lo útil que podría ser para complementar varios proyectos, tanto del trabajo como personales.

¿Qué es un servidor casero?

Un servidor casero es una computadora configurada para brindar servicios, como los servidores que mantienen el Internet funcionando, pero implementado en casa. Existen varios tipos de servidores caseros; los más comunes son los NAS (Network Attached Storage), que permiten guardar y compartir archivos con todos los dispositivos del hogar. Incluso existe un libro para niños que toca este tema en particular: "Mommy, Why is There a Server in the House?". 

Otro caso menos común pero muy interesante son los servidores caseros que se utilizan para tareas que requieren una gran cantidad de cómputo o tiempo, ya sean simulaciones o renderizados, de manera que el usuario puede ocupar su equipo personal para otras tareas mientras su servidor realiza los cálculos extensos. Un amigo personal utiliza este enfoque para generar imágenes y videos con IA mientras juega Skyrim.

Y tenemos el caso del HomeLab, donde el servidor se usa para realizar experimentos que involucren la red, ya sean tareas propiamente de redes (probar protocolos, equipos o implementaciones), hacer pruebas a pequeña escala de sistemas IoT, controlar actuadores o guardar lecturas de sensores. Este es el caso del servidor que monté en casa. Esta definición queda en un área un poco gris, ya que existen otros casos en los que los servidores caseros se utilizan para controlar sistemas domóticos.

Hay más posibles usos para un servidor casero, pero los tres anteriores son los que he visto de manera más común. Si quieren profundizar en este tema, les recomiendo el blog de Reddit: r/HomeServer .

Arquitectura de la red del laboratorio

Sabiendo que voy a usar el servidor para diferentes tipos de tareas y considerando un presupuesto limitado, decidí empezar pensando en una arquitectura flexible para la red del laboratorio.

La arquitectura planteada consta de un router WiFi, el cual se conecta mediante cable al router que provee la conexión a Internet, con el objetivo de contar con una red aislada. A este router WiFi se conectan mi estación de trabajo, el servidor, una laptop y los diferentes dispositivos que esté utilizando en ese momento.



Hardware

Existen equipos diseñados específicamente para ser usados como servidores caseros, principalmente para tareas de NAS u otras, como la ZimaBoard, que originalmente nació para implementar pequeños servidores no necesariamente caseros. Es bastante común utilizar Raspberry Pi  laptops antiguas o equipos reacondicionados como servidores.

Para este caso, adquirí una Lenovo ThinkCentre M910q TFF Micro Desktop Mini PC reacondicionada en Amazon, principalmente para reducir gastos y porque confío bastante en la marca Lenovo; en mi experiencia, son de los equipos más robustos.

Sus características son:

  • CPU: Intel i5-6500T a 3.1GHz

  • GPU: Intel HD Graphics 530

  • RAM: 16 GB

  • SSD: 254 GB

 

Puesta en marcha

Una vez adquirido el hardware, pasé a la puesta en marcha. Lo primero fue configurar el router para asignarle una dirección IP fija al servidor, con el fin de poder acceder a él de manera remota y sencilla.

Después instalé el S.O. Debian 12 por dos motivos: el primero es que Debian es una de mis distribuciones favoritas y, en segundo lugar, es bastante común encontrar este S.O. en servidores montados en la nube debido a su confiabilidad. Lo instalé sin ambiente gráfico, ya que planeo acceder a él mediante terminal y web.

Hace falta configurar la lista de sudoers para darle permisos de administrador al usuario, y también habilitar el protocolo de comunicación SSH.

 

Llegado a este punto, se facilita bastante el resto del trabajo. Procedí a instalar Node.js, Node-RED y Ollama. Después instalé Apache2; esto normalmente conlleva configurar el firewall para que funcione correctamente, aunque en mi caso no fue necesario. Finalmente, instalé Docker y PM2.

Con todo instalado, pasé a probar el funcionamiento, primero instalando LLaMA3.2 mediante Ollama, para probar las capacidades del hardware y porque está genial tener una IA asistente.



Se me olvidaba mencionar que también instalé gotop para monitorear el rendimiento.

Intefaz web

La idea de tener una interfaz web es permitir un acceso fácil desde cualquier dispositivo de mi red local. De momento hice una bastante sencilla; espero en un futuro darle un estilo más llamativo y cyberpunk, algo que pudiera verse en una terminal de la Sulaco o la Nostromo.

 

Esta interfaz es básicamente una página web que corre en Apache2. Usando PM2, lanzo Node-RED como un servicio, de manera que se mantenga activo y se pueda acceder. Estuve haciendo pruebas para correr Open-WebUI y así poder acceder al chatbot desde web, pero al final no pude. Una de las soluciones que encontré es instalar Ollama dentro del contenedor de Open-WebUI, pero para lo que planeo usar no es muy práctico. Voy a checar otras opciones; cualquier sugerencia es bienvenida en los comentarios.

Acceso mediante SSH

Para varias tareas es bastante útil el acceso mediante SSH al servidor. De momento, para lo que más lo he usado es para consultar el chatbot. Desde el móvil hay una aplicación que me gustó para esto llamada Tempest, y además ver la terminal en el teléfono da una sensación muy retrofuturista.

 






¿Qué sigue?

Planeo ir agregándole cosas al servidor conforme vaya necesitándolas, empezando por la interfaz web para el chatbot. Posiblemente continúe con la mejora de la página web o con unos proyectos de IoT mediante Node-RED.

 

Despedida

Espero que esta entrada les sea útil o, al menos, entretenida. Ya me encuentro en la recta final del doctorado y espero poder trabajar más en proyectos propios, así como retomar este blog. Tengo ganas de narrar la historia de mis dos gatas (Noa y Yuko), que se han vuelto una parte muy importante de mi vida. También les debo el robot con Julia, que sería la parte 3 y final de esa serie, además de otras cosas que involucran lenguajes poco comunes y affective computing.

Voy a estar subiendo las actualizaciones del servidor en este repositorio.

También pueden visitar mi página personal: www.jose-navarro.info

Si les gustó el blog y quisieran apoyarme, pueden invitarme un café dando clic en el botón que se encuentra en la parte inferior izquierda.

 

 

 

 

 

Comentarios

Entradas populares