El homelab en dos esquemas: la red y los servicios

Dos diagramas para entender el homelab de un vistazo: uno sencillo con cómo entra y sale el tráfico, y otro detallado con qué corre en cada parte del servidor.

Desde el post de arquitectura de red de mayo el homelab ha cambiado bastante: ahora tiene backups diarios, una nube propia con Nextcloud, vigilancia desde fuera de casa y algún servicio menos. Tocaba redibujarlo, y en lugar de un único diagrama enorme he hecho dos: uno sencillo para ver cómo encaja todo y otro con el detalle de cada parte.

Esquema 1: la red de un vistazo

Esquema sencillo de la red del homelabInternet arriba, con Cloudflare sirviendo la web y el blog, el acceso por VPN desde fuera y los servicios de avisos. En medio, el router con un único puerto UDP abierto para la VPN. Abajo, la red de casa con los dispositivos, el servidor Proxmox y el disco externo de copias.INTERNETVisitante del blogcualquier navegadorCloudflareDNS · web y blog (Pages)Avisoscorreo · TelegramYo, fuera de casaapp de WireGuardVigilancia externalatido del servidorRouter del operador1 puerto UDP (VPN)VPN cifradaCASA (LAN)Dispositivos de casaPC, móviles, WiFiServidor ProxmoxIntel NUC · 8 contenedoresSSD externo 2 TBcopias diariasentra al servidorDNS y appsbackuptúnel salientesin rutas publicadas
Quien visita la web o el blog nunca llega a casa: se queda en Cloudflare. Desde fuera, la única puerta es la VPN.

Hay tres caminos y no se mezclan:

  • Quien lee el blog llega a Cloudflare y ahí se acaba el viaje. La web y el blog son estáticos y viven en Cloudflare Pages, así que siguen en línea aunque el servidor de casa esté apagado.
  • Yo, cuando estoy fuera, entro por WireGuard. Es el único puerto abierto en el router, y sin la clave del cliente no responde a nada.
  • Dentro de casa, los dispositivos usan el DNS del homelab y acceden a las aplicaciones internas sin salir a Internet.

El túnel de Cloudflare sigue conectado, pero hoy no publica ningún servicio. Lo mantengo para poder publicar algo en el futuro sin abrir puertos. Las flechas que salen del servidor hacia la derecha son lo único que el homelab envía por iniciativa propia: avisos y un latido periódico para que alguien de fuera se entere si deja de responder.

Esquema 2: qué corre en cada parte

Esquema detallado de los servicios del homelabEl servidor Proxmox con cuatro contenedores de acceso y red (AdGuard, NPMplus, WireGuard y cloudflared), cuatro servicios web detrás de NPMplus (Nextcloud, el panel del homelab, Jellyfin y Uptime Kuma), el host con sus discos (el externo guarda las copias, los datos de Nextcloud y las películas), y a la derecha los servicios externos: Cloudflare, Telegram, Healthchecks.io y correo.Dispositivo en casao conectado por la VPNFuera de casaapp de WireGuardDNSHTTPSUDP, por el routerSERVIDOR · PROXMOX VEACCESO Y REDAdGuardDNS + bloqueoNPMplusproxy + TLSWireGuardVPN + panelcloudflaredtúnel sin rutasSERVICIOS WEBNextcloudnube · 2FAPanel propioestado y tareasJellyfinpelículas y seriesUptime KumamonitorizaciónHOST Y ALMACENAMIENTOProxmox VE (host)firewall solo LAN · 2FA · logs en RAM · copia diariaSSD interno 512 GBsistema y contenedoresSSD externo 2 TB (USB)copias, Nextcloud y películasFUERA DE CASACloudflareDNS · web y blogTelegramavisos de Uptime KumaHealthchecks.iolatido y backupsCorreoerrores y backups
Todo corre en contenedores LXC sobre un único Intel NUC. En móvil, desliza el esquema para verlo entero.

Acceso y red

Son los cuatro contenedores por los que pasa el tráfico antes de llegar a cualquier aplicación:

Servicio Para qué sirve
AdGuard Home DNS de toda la casa. Bloquea publicidad y resuelve los nombres internos del homelab, que no existen en el DNS público
NPMplus Proxy inverso. Da HTTPS con certificados válidos a las aplicaciones internas
WireGuard La VPN para entrar desde fuera, con su panel de gestión accesible solo desde dentro
cloudflared El conector del túnel de Cloudflare. Conectado, pero sin ninguna ruta publicada

Un dispositivo de casa (o yo conectado por la VPN) pregunta primero a AdGuard, que le devuelve la dirección de NPMplus, y NPMplus reenvía la petición a la aplicación que toque. Así el tráfico interno nunca sale a Internet. Los paneles de administración (Proxmox, AdGuard, NPMplus y el de WireGuard) no pasan por el proxy y solo se abren desde la LAN.

Servicios web

  • Nextcloud es mi nube personal, con 2FA y accesible solo desde casa o por la VPN. Lo conté en este post.
  • El panel del homelab es la página de inicio: estado de cada servicio, tareas y registros. Lo hice a medida para sustituir a Homarr y lo cuento en este post.
  • Jellyfin sirve las películas y series al móvil o la tele, con transcodificación por la gráfica del NUC. Lee la misma carpeta del SSD externo que Nextcloud usa para subir los archivos; lo cuento en este post.
  • Uptime Kuma vigila que todo responda y avisa por Telegram si algo cae.

Host y almacenamiento

El propio Proxmox tiene su parte del trabajo: un firewall que solo admite conexiones de la red de casa, 2FA en el acceso, los logs en RAM con volcado a disco cada hora para no desgastar el SSD, y una copia de seguridad diaria de todos los contenedores al SSD externo. Ese mismo disco guarda los datos de Nextcloud y las películas y series de Jellyfin, así que los archivos no ocupan el SSD interno.

Fuera de casa

Uptime Kuma tiene un problema de base: si se va la luz o la fibra, cae con todo lo demás y no puede avisar. Por eso el servidor envía cada pocos minutos un latido a Healthchecks.io, y también cuando termina la copia de seguridad. Si los latidos dejan de llegar, el aviso sale desde fuera. Los errores de Proxmox y el resultado de cada copia llegan además por correo.

Lo que no aparece en los esquemas

Este blog es público, así que los esquemas no llevan direcciones IP, puertos (salvo que la VPN usa uno UDP), nombres internos ni identificadores. No es que esconderlos haga seguro el homelab, pero tampoco hay motivo para dar el mapa hecho. Para el día a día tengo una documentación privada con todo el detalle.

Qué ha cambiado desde mayo

  • Copias de seguridad. Antes no había ninguna. Ahora cada noche se copian todos los contenedores a un SSD externo y he probado a restaurar uno.
  • Nextcloud ha ocupado el sitio de Netdata como nuevo servicio del servidor.
  • Jellyfin para películas y series, compartiendo carpeta con Nextcloud en el SSD externo.
  • Authelia ya no está. Protegía el único servicio publicado en el túnel, y al no publicar nada dejó de tener sentido mantenerlo. Si algún día publico algo, irá detrás de Cloudflare Access, que pide login antes de que el tráfico llegue a casa.
  • Vigilancia externa con Healthchecks.io y avisos por correo, además de Telegram.
  • Más hardening: firewall de Proxmox activo, 2FA en el host y Lynis pasado a todos los contenedores.

Lo siguiente en la lista es tener una copia fuera de casa. Mientras todas las copias estén en el mismo sitio que el servidor, un incendio o un robo se lo llevan todo.

Comentarios

Los comentarios usan Giscus sobre GitHub Discussions. Al cargarlos, tu navegador se conectará a giscus.app y GitHub.Más información.