Problema

Muchos entusiastas de la infraestructura doméstica disponen de hardware disparado: PCs de escritorio, laptops sin batería, servidores NAS y pequeños dispositivos IoT. El reto común es convertir ese conjunto heterogéneo en un entorno coherente donde:

  • Las máquinas virtuales (VM) y contenedores (LXC) se ejecuten de forma estable.
  • Los datos críticos estén respaldados en un medio centralizado.
  • Los servicios de red (DNS, proxy, monitorización) sean accesibles y seguros.
  • La gestión sea lo suficientemente ligera para no consumir todo el tiempo del administrador.

En la práctica, el problema se manifiesta como configuraciones fragmentadas, backups que fallan por rutas inconsistentes y monitoreo que no cubre todos los nodos. El objetivo es diseñar una arquitectura reutilizable que permita escalar o reducir recursos sin rehacer la mayor parte del trabajo.

Causa

  1. Falta de un plano de almacenamiento unificado
    Cada nodo suele usar su propio disco o una carpeta local. Cuando se añaden NAS, la ruta cambia y los scripts de backup dejan de encontrar los volúmenes.

  2. Ausencia de orquestación de VMs/LXC
    Ejecutar Proxmox en algunos equipos y Ubuntu bare‑metal en otros genera dos modelos de gestión diferentes. Migrar máquinas entre ellos se vuelve manual y propenso a errores.

  3. Servicios de red aislados
    DNS, AdGuard, Traefik y Prometheus pueden quedar en diferentes subredes o sin TLS, lo que genera conflictos de resolución y alertas perdidas.

  4. Política de backup inconsistente
    Copias locales en discos internos y copias remotas en NAS sin coordinación provocan duplicación o, peor, ausencia de backups en caso de falla del hardware principal.

  5. Monitoreo parcial
    Sin un collector central, cada nodo expone métricas a su manera, dificultando la correlación de incidentes.

Solución

1. Consolidar el almacenamiento con MergerFS + Proxmox Storage

Utiliza MergerFS en los NAS para exponer un pool lógico (por ejemplo /mnt/pool). En Proxmox, registra ese pool como Directory storage. Así, cualquier VM o contenedor puede usar discos virtuales ubicados en el mismo espacio, sin importar el origen físico.

2. Unificar la capa de virtualización en Proxmox VE

Instala Proxmox VE en todos los equipos que lo soporten (incluye laptops con batería retirada). Para el nodo que sigue en bare‑metal (por ejemplo, una workstation con GPU), crea un cluster de Proxmox y habilita live migration (requiere Ceph o ZFS, pero para un homelab basta con pve-cluster y almacenamiento compartido). Los contenedores LXC son ideales para servicios ligeros como AdGuard Home o ntfy.

3. Centralizar backups con Proxmox Backup Server (PBS)

Despliega una VM dedicada como PBS (puede residir en el mismo pool). Configura un Datastore que apunte a una carpeta del NAS (por ejemplo /mnt/pool/pbs). Activa la retención de snapshots y la replicación opcional a otro NAS para off‑site.

4. Implementar monitorización y alertas unificadas

Instala una VM de monitoreo con Prometheus + Grafana. Usa node_exporter en cada nodo Proxmox y snmp_exporter para los dispositivos de red. Configura Alertmanager para enviar notificaciones a ntfy o a un canal de Discord/Telegram. Integra Uptime Kuma para chequeos de disponibilidad HTTP.

5. Gestionar DNS y filtrado con AdGuard Home en LXC

Crea un contenedor LXC basado en Alpine o Debian, instala AdGuard Home y habilita el modo DHCP si deseas que el router delegue. Conecta Tailscale para acceso remoto seguro y añade reglas de bloqueo de trackers.

6. Orquestar el tráfico con Traefik

Despliega Traefik como contenedor Docker o LXC. Usa etiquetas en los contenedores para que Traefik descubra automáticamente los servicios (Jellyfin, BookStack, Actual Budget, etc.). Configura Let’s Encrypt Staging primero, luego pasa a producción.

7. Automatizar despliegues con Ansible (opcional)

Mantén un playbook que:

  • Provisione VMs/LXC con la configuración base.
  • Instale paquetes necesarios (Docker, Python, etc.).
  • Aplique reglas de firewall (ufw o nftables) y políticas de fail2ban.

Esto reduce la fricción al añadir nuevo hardware.

Cuándo aplicar esta solución

Aplica cuando:

  • Poseas al menos dos fuentes de almacenamiento (NAS, discos internos) y quieras evitar rutas estáticas.
  • Quieras migrar máquinas entre hardware sin downtime significativo.
  • Necesites backups automáticos y verificables para VMs y contenedores.
  • Desees una vista única de métricas y alertas.

No aplica si:

  • Solo utilizas un único servidor sin necesidad de alta disponibilidad.
  • Prefieres soluciones “todo en uno” como Docker Desktop sin virtualización.
  • No tienes requisitos de backup fuera del nodo principal.

Código

# 1. Añadir un storage tipo Directory en Proxmox que apunte al pool MergerFS
pvesm add dir nas-pool --path /mnt/pool --content iso,backup,rootdir,vztmpl,container,virtual-machine

# 2. Crear un Datastore en PBS que use la carpeta del NAS
pvebackup-client add datastore nas-pbs --path /mnt/pool/pbs --maxfiles 30

# 3. Definir una tarea de backup automática para todas las VMs
cat > /etc/pve/vzdump.cron <<EOF
0 2 * * * root /usr/sbin/vzdump --quiet 1 --mode snapshot --storage nas-pbs --compress lzo --all
EOF
chmod 600 /etc/pve/vzdump.cron

Verificación

  1. Almacenamiento

    • Ejecuta pvesm status y verifica que nas-pool aparece con available y el espacio correcto.
    • Crea una VM de prueba y asigna disco en nas-pool; arranca y comprueba que el disco se monta sin errores.
  2. Backup

    • Inicia un backup manual: vzdump <VMID> --storage nas-pbs --mode snapshot.
    • Revisa el log en /var/log/vzdump.log y confirma que el archivo .vma.lzo aparece en /mnt/pool/pbs.
  3. Monitoreo

    • Accede a Grafana, verifica que los targets de Prometheus están UP.
    • Genera una alerta (por ejemplo, detén node_exporter en un nodo) y confirma que Alertmanager envía la notificación a ntfy.
  4. DNS

    • Cambia la configuración de DNS en un cliente a la IP del contenedor AdGuard y ejecuta dig example.com.
    • Asegúrate de que la respuesta provenga de AdGuard (puedes observar los logs en la UI).

Notas adicionales

  • Temperatura: el rack con controlador de ventilador es útil, pero configura alertas de temperatura en Prometheus (node_hwmon) para anticipar fallos de enfriamiento.
  • GPU passthrough: si necesitas transcoding (Jellyfin) en la workstation con GTX 1060, habilita IOMMU en el BIOS y usa vfio-pci en la VM. No es obligatorio para la mayoría de los servicios.
  • Fail2Ban + Cloudflare: la regla iptables -I INPUT -p tcp --dport 22 -j DROP combinada con Cloudflare API permite bloquear IPs automáticamente. Asegúrate de que la API token tenga permisos limitados a firewall rules.
  • Replicación off‑site: Proxmox Backup Server soporta replicación directa a otro PBS. Configura pvebackup-client sync con la IP del NAS del amigo para copias fuera del sitio.
  • Documentación: mantén un repositorio Git con los playbooks, archivos pve y diagramas de red. BookStack es una excelente opción para centralizar esa información.

Con esta arquitectura, cualquier nuevo dispositivo (una Raspberry Pi, una laptop de repuesto o un nuevo NAS) se incorpora al mismo pool de recursos, los backups siguen una política única y la visibilidad del estado del homelab está centralizada. El resultado es un entorno robusto, fácil de escalar y suficientemente flexible para experimentar con nuevas aplicaciones sin romper la estabilidad existente.