Problema

Los equipos de infraestructura casera (homelab) y los servidores en la nube (VPS) a menudo se perciben como alternativas mutuamente excluyentes. En la práctica, muchos administradores terminan con una mezcla desordenada: algunos servicios críticos se quedan en casa, otros se despliegan en la nube sin una estrategia clara. El resultado es sobrecarga de ancho de banda, exposición innecesaria de la IP doméstica, copias de seguridad fragmentadas y, en el peor de los casos, interrupciones cuando el hardware doméstico se apaga para mantenimiento. El reto consiste en definir una separación lógica que aproveche la “gravedad de datos” del homelab y la disponibilidad permanente del VPS, sin crear dependencias circulares ni duplicar recursos.

Causa

  1. Falta de criterio de “data gravity” – Cuando se almacena gran cantidad de datos (multimedia, backups locales) en un VPS, el coste de transferencia y almacenamiento se dispara.
  2. Exposición directa del IP doméstico – Publicar servicios como Home Assistant o Jellyfin directamente a Internet obliga a abrir puertos, lo que aumenta la superficie de ataque y genera problemas de NAT.
  3. Dependencia de una única ubicación para backups – Confiar exclusivamente en discos locales ignora el principio 3‑2‑1 (tres copias, dos medios, una ubicación off‑site).
  4. Ausencia de un punto de entrada único – Sin un reverse proxy externo, cada servicio necesita su propio registro DNS y reglas de firewall, lo que complica la gestión y el monitoreo.
  5. Redes fragmentadas – Intentar conectar dispositivos remotos (móvil, laptop) directamente al homelab mediante port‑forwarding genera latencia y fallos de conexión cuando el router reinicia.

Solución

Una arquitectura híbrida basada en tres capas simplifica la gestión:

  1. Capa de “front door” en el VPS

    • Deploy a lightweight reverse proxy (Caddy, Nginx, Traefik) que exponga solo los sub‑dominios públicos.
    • Configura TLS automático con Let’s Encrypt para evitar certificados caducos.
    • Usa el proxy como punto de terminación de tráfico y re‑envía al homelab mediante túneles seguros.
  2. Túnel de acceso privado (WireGuard / Tailscale)

    • Instala un nodo WireGuard en el VPS y otro en la red doméstica.
    • El túnel permite que cualquier cliente autenticado alcance los servicios internos sin abrir puertos en el router.
    • Tailscale simplifica la gestión de claves y la distribución de ACL, ideal para equipos con usuarios móviles.
  3. Almacenamiento y backups locales + off‑site

    • Mantén los volúmenes de datos pesados (media, bases de datos locales) en el NAS del homelab.
    • Programa rsync o restic desde el NAS hacia el VPS, creando una copia 3‑2‑1 off‑site.
    • Los logs críticos también se envían al VPS para retención a largo plazo y análisis centralizado.

Implementación paso a paso

1. Reverse proxy en el VPS (ejemplo con Caddy)

# Instala Caddy (Linux, Debian/Ubuntu)
sudo apt update && sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo apt-key add -
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update && sudo apt install -y caddy

# Crea Caddyfile
cat <<'EOF' > /etc/caddy/Caddyfile
home.example.com {
    reverse_proxy 192.168.1.10:8123   # Home Assistant en LAN
    tls [email protected]
}
media.example.com {
    reverse_proxy 192.168.1.20:8096   # Jellyfin en LAN
    tls [email protected]
}
EOF

sudo systemctl reload caddy

2. WireGuard entre VPS y homelab

# En el VPS (servidor)
sudo apt install -y wireguard
wg genkey | tee /etc/wireguard/server_private.key | wg pubkey > /etc/wireguard/server_public.key

# En el homelab (cliente)
sudo apt install -y wireguard
wg genkey | tee /etc/wireguard/client_private.key | wg pubkey > /etc/wireguard/client_public.key

Crea /etc/wireguard/wg0.conf en ambos extremos, intercambiando claves y usando la IP del túnel 10.0.0.0/24. Activa con sudo wg-quick up wg0.

3. Backup off‑site con Restic

# En el NAS (cliente)
sudo apt install -y restic
export RESTIC_REPOSITORY=sftp://[email protected]:/backups/nas
export RESTIC_PASSWORD=SuperSecret

# Inicializa repositorio (una sola vez)
restic init

# Backup diario (cron)
0 3 * * * /usr/bin/restic backup /mnt/storage --exclude-caches

Cuándo aplicar esta solución

  • Necesitas acceso remoto fiable: Si tu equipo móvil o laptop debe conectarse a servicios internos sin depender de NAT o port‑forwarding.
  • Almacenas datos voluminosos localmente: Cuando el coste de mover terabytes a la nube supera el beneficio.
  • Requieres alta disponibilidad de servicios críticos: Un VPS garantiza uptime mientras el homelab está en mantenimiento.
  • Quieres separar la superficie de ataque: Un reverse proxy actúa como escudo y centraliza la gestión de certificados.

No es necesario cuando:

  • Todos los servicios son de bajo consumo y pueden vivir exclusivamente en la nube.
  • No tienes requisitos de privacidad para los datos locales.
  • Tu ISP bloquea puertos entrantes y no puedes establecer un túnel persistente.

Código

# Ejemplo completo de configuración WireGuard (servidor)
[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = <server_private_key>

[Peer]
PublicKey = <client_public_key>
AllowedIPs = 10.0.0.2/32
# Cliente WireGuard
[Interface]
Address = 10.0.0.2/24
PrivateKey = <client_private_key>

[Peer]
PublicKey = <server_public_key>
Endpoint = vps.example.com:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25

Verificación

  1. Proxy: Accede a https://home.example.com desde una red externa. El certificado debe ser válido y el contenido debe provenir del IP interno del homelab.
  2. Túnel: Ejecuta ping 10.0.0.2 desde el VPS y ping 10.0.0.1 desde el homelab. Ambos deben responder sin pérdida.
  3. Backup: Corre restic snapshots en el VPS; debería listar la última instantánea del NAS. Verifica integridad con restic check.
  4. Logs: Revisa que los logs de Home Assistant llegan al directorio /var/log/remote del VPS mediante syslog o rsyslog.

Notas adicionales

  • Rotación de claves: Programa una rotación trimestral de claves WireGuard; el proceso es tan sencillo como regenerar pares y actualizar los archivos de configuración.
  • Monitorización: Añade Prometheus Node Exporter en el VPS y Grafana en el homelab para observar latencia del túnel y uso de ancho de banda del proxy.
  • Failover básico: Si el VPS cae, puedes habilitar un segundo nodo en otro proveedor y actualizar el registro DNS con un TTL bajo (300 s).
  • Seguridad de backups: Restic cifra los datos por defecto, pero asegúrate de almacenar la contraseña fuera del VPS (por ejemplo, en un gestor de secretos).

Con esta arquitectura, el homelab se convierte en el repositorio de datos pesados y de control local, mientras que el VPS actúa como puerta de enlace segura, punto de acceso permanente y almacén off‑site. La separación clara reduce costos, mejora la disponibilidad y mantiene la privacidad bajo tu control.