Homelab · Proyecto personal
Homelab
Homelab que provee y expone diferentes servicios tanto a la red pública como a una red privada accedida mediante una VPN. Estos servicios van desde un servidor web hasta un servicio de streaming de video y audio privado. Además, también permite llevar a cabo laboratorios en entornos aislados y completamente virtualizados de forma remota.
Sobre el proyecto
Cuando estaba en el último curso de la carrera de informática tuve que llevar a cabo un proyecto donde necesitaba desplegar simular un red completa. Además, tenía la necesidad de desplegar de forma manual muchos de los servicios que la red debía proveer. Este trabajo me enseñó que no resulta complicado montar ciertos servicios siempre y cuando se tuviera una maquina donde ejecutarlos. Y ahí me pregunté, ¿por qué no hacer yo lo mismo con un ordenador viejo? Así nació este proyecto de homelab y, tras investigar, descubrí que era un mundo con infinitas posibilidades.
Inicialmente, y siguiendo la línea del trabajo de la universidad, decidí montarlo utilizando una imagen base de Debian server. De esta manera, cada servicio debía ser montado y configurado con cuidado por mi parte. Más tarde descubrí ProxmoxVE y eso cambió completamente la forma de gestionar el homelab. ProxmoxVE es un sistema operativo que funciona como hipervisor tipo 1 y que posee una enorme comunidad que, usando scripts, te permite desplegar un servicio en cuestión de minutos. Más allá de la facilidad de desplegar servicios, la faceta de hipervisor de este sistema operativo abría una nueva posibilidad: maquinas virtuales remotas.
Durante el desarrollo del proyecto mencionado al inicio me topé con una complicación importante: necesitaba demasiadas máquinas virtuales. Al tener que simular una topología de ser de dos empresas eran necesarias más maquinas virtuales de las que mi ordenador era capaz de sostener comodamente. Gracias a ProxmoxVE esta limitante queda resuelta gracias a la posibilidad de conectarse a maquinas virtuales que se ejecutan en ProxmoxVE. Además, al ser un hipervisor tipo 1, ProxmoxVE es mucho más eficiente que otras herramientas de virtualización como VirtualBox.
Servicios desplegados
Immich
Nube de fotos privada
Immich es un servicio que permite tener una nube al puro estilo de Google Fotos. Esto me ha permitido no depender de suscripciones para mis imágenes y videos; garantizando que si mi móvil se rompe, mi contenido se encuentra a salvo. Además, haciendo uso de sus usuarios me ha permitido compartir este servicio con familiares y amigos.
Jellyfin
Servicio de streaming privado
Jellyfin es un servicio de streaming de audio y video al estilo de Netflix. A diferencia de Immich, este servicio no sustituye a Netflix pues no cuenta con un catálogo tan extenso. Sin embargo, me ha permitido disfrutar de peliculas y series que tenía en casa en formato físico. Mucho de este contenido no está en otras plataformas y me parecia una pena dejar de disfrutar de este contenido por no tener un reproductor DVD a mano. Además, Jellyfin permite reproducción en dispositivos tipo ChromeCast y así tengo todo el contenido en cualquier parte. ¿Quién no quiere eso?
Servidor Nginx
Servidor web
Nginx es un conocido servidor web que me ha permitido desplegar cualquier página web que desee. Tener un servicio de este estilo proporciona una gran versatilidad ya que me permite servir cualquier contenido que quiera publicar. De hecho, este mismo portfolio se sirve gracias a este servidor web. Otro ejemplo de uso es el distribuir documentos PDFs relevantes para mi como mi CV o mis informes de los TFGs.
Laboratorio virtual
Entorno de maquinas virtuales aisladas
Este es el servicio más curioso de todos. Gracias a la versatilidad y la eficiencia de ProxmoxVE ejecutando maquinas virtuales, decidí montar un servicio de laboratorios virtuales. Este es completamente privado.
Para poder crear las maquinas virtuales y las redes entre ellos, como en VirtualBox, es necesario tener acceso al panel de ProxmoxVE. Este acceso está muy protegido ya que precisa de un usuario y contraseña de Authelia para acceder a la página de selección de nodo; luego también será necesario un usuario con permisos y contraseña de ProxmoxVe del nodo asignado. De esta manera, se garantiza una gran protección para gestionar las maquinas virtuales y las redes del labortatorio.
Para acceder a la red de las maquinas virtuales, se necesita un certificado válido de una VPN creada con Wireguard. Esta es la forma más segura de permitir el acceso a la red interna de las maquinas virtuales desde internet. Aunque se podría usar Wireguard en el propio ProxmoxVE, he considerado usar OPNsense para esta labor. Todas las maquinas virtuales necesitan un router para controlar quien accede a internet y quien. Para cubrir ambas necesidades, la VPN y el router, decidí montar y configurar un router OPNsense que vigila toda la red del laboratorio virtual.
Retos y Soluciones
Reto
Disponer de un dominio y un DNS para poder acceder a los servicios públicos desde cualquier parte.
Solución
Adquirir un dominio usando Cloudflare para usar su servicio gratuito de DNS.
Reto
Evitar que la dirección IP del servidor se filtre comprometiendo así la seguridad del sistema.
Solución
Hacer uso de Cloudflare Tunnel para garantizar anonimato y conseguir protección DDoS.
Reto
Getionar el acceso al panel de control de ProxmoxVE cuando hay más de un servidor sin utilizar Proxmox Cluster.
Solución
Servir una página web personalizada que permita seleccionar a cuales de los servidores Proxmox se quiere acceder.
Reto
Evitar el acceso a aquellos servicios que son privados e incluso a la página de selección de clúster. Solo los usuarios autenticados y autorizados deben acceder.
Solución
Utilizar Authelia como proxy que permita interceptar todas las peticiones a servicios privados y garantizar la autenticación y autorización del usuario.




