sergio@pve:~$ cat homelab.md
Caso de estudio · proyecto personalMapa de mi infraestructura autoalojada: un host Proxmox, 11 máquinas virtuales/contenedores, y unos 25 servicios corriendo detrás de un único dominio propio. Pulsa una máquina en el inventario para ver sus especificaciones y servicios.
Cómo entra el tráfico desde fuera, y cómo se reparte una vez dentro de la red local.
línea sólida: tráfico de usuario línea punteada: resolución DNS / almacenamiento compartido
Solo 3 puertos abiertos en el router (UDP, exclusivos de un servidor de juego, única excepción del homelab). Todo lo demás entra por Cloudflare Tunnel (Immich, Nextcloud) o Tailscale (el resto); NPM hace de único punto de entrada interno y reparte por subdominio (servicio.sergio-projects.com). TrueNAS comparte almacenamiento por NFS a las dos máquinas que más lo necesitan.
Pulsa el nombre de una máquina para ver sus recursos asignados y sus servicios.
Tres capas, cada una resolviendo un problema distinto de cómo se llega hasta un servicio.
Para las apps que necesitan acceso público, sin abrir ningún puerto en el router.
Para el resto de servicios (paneles de admin, monitorización), solo accesibles desde dispositivos autorizados en la VPN.
Cada servicio vive en nombre.sergio-projects.com, resuelto por AdGuard y servido por NPM con TLS.
Las convenciones y prácticas reales usadas para construir y mantener este homelab.
Proxmox asigna un identificador a cada máquina, elegido a mano y no al azar: un rango de números son LXC (contenedores ligeros, comparten el kernel del host, la mayoría de los servicios), y otro rango son VMs completas (máquina virtual con su propio kernel), reservadas para lo que necesita ese aislamiento extra: almacenamiento y la VM de aplicaciones Docker.
Cada servicio vive en nombre.sergio-projects.com. La petición pasa por dos saltos:
El proxy inverso, el DNS interno y el sistema de monitorización se configuran a menudo editando su base de datos SQLite por SSH directamente, en lugar de pasar por su interfaz web: un patrón reutilizado varias veces para cambios rápidos y reproducibles.
Copia de seguridad diaria (modo snapshot, sin downtime) de las 11 máquinas, con una política de retención acotada. Mantenimiento mensual automatizado: actualización de paquetes del sistema operativo, reinicio del host solo si realmente hace falta, comprobación del almacenamiento y de actualizaciones disponibles sin aplicarlas solo, e informe final enviado por notificación push.
Dos capas complementarias: un sistema tipo Uptime Kuma vigila si cada subdominio responde (arriba/abajo); Prometheus + Grafana + Alertmanager vigilan métricas internas (CPU, RAM, disco, swap) de cada máquina. Todo se enruta a un único canal de notificaciones push, con varios niveles de prioridad para que lo urgente no se pierda entre el ruido.
Prácticamente cero puertos abiertos en el router (única excepción: unos pocos puertos UDP para un servidor de juego, decisión consciente y acotada). Todo el resto del acceso externo pasa por Cloudflare Tunnel o Tailscale. Las contraseñas se centralizan en un gestor autoalojado.