Servidor Doméstico Hardened (Docker · Caddy · WireGuard · Fail2Ban · Cloudflare)

Homelab productivo con exposición cero de puertos, reverse proxy TLS, Zero Trust Access y automatización personal con n8n y servicios de soporte.

Exposición pública sin puertos abiertos
Zero Trust con identidad y políticas
Automatizaciones privadas con n8n
Servicios de soporte aislados por red
DebianDockerDocker ComposeCaddyCloudflare TunnelCloudflare AccessFail2BanWireGuardJellyfinMinIOn8nPostgreSQLRedisOllama

🧭 Contexto

El objetivo de este proyecto fue convertir un entorno doméstico en una plataforma productiva de servicios personales y de desarrollo, con un enfoque fuerte en seguridad por diseño, aislamiento y automatización.

Partiendo de un host Debian con recursos limitados, se construyó un homelab hardened capaz de exponer servicios al exterior sin abrir puertos, incorporando principios de Zero Trust, control de identidad y separación clara de responsabilidades entre componentes.


⚙️ Arquitectura y diseño

La infraestructura se apoya en una arquitectura modular, mínima y auditable, organizada por dominios funcionales:

  • Docker Compose orquesta stacks independientes (media, automatización, storage, seguridad).
  • Redes internas aisladas evitan movimiento lateral entre servicios.
  • Caddy actúa como reverse proxy interno y punto único de entrada.
  • Cloudflare Tunnel publica servicios sin exposición directa del host.
  • Cloudflare Access gobierna el acceso por identidad, sesión y políticas.

Servicios principales:

  • n8n como motor de automatización personal.
  • PostgreSQL como backend persistente de n8n.
  • Redis para colas, estado y cacheo.
  • Ollama como motor de inferencia local para flujos asistidos por IA.
  • MinIO (S3) para artefactos, backups y datos intermedios.

Arquitectura de alto nivel:

graph TD
  A[Internet] --> B[Cloudflare Edge]
  B --> C[Cloudflare Tunnel]
  C --> D[Caddy Reverse Proxy]
  D --> E[Jellyfin]
  D --> F[n8n]
  F --> G[PostgreSQL]
  F --> H[Redis]
  F --> I[MinIO]
  J[Fail2Ban] --> D
  K[WireGuard VPN] --> D

🔐 Seguridad, Zero Trust y hardening

  1. Cloudflare Tunnel
    Eliminación total de port forwarding. El host no expone puertos públicos; todo el tráfico entra desde Cloudflare hacia un túnel autenticado.

  2. Cloudflare Access (Zero Trust)
    Acceso a servicios sensibles mediante identidad, MFA y políticas contextuales. n8n queda completamente fuera del alcance público.

  3. Caddy reverse proxy
    TLS interno, headers de seguridad, rate limiting y control fino de rutas.

  4. Fail2Ban
    Jails personalizadas para SSH y servicios internos. Análisis de logs y endurecimiento del host.

  5. WireGuard VPN
    Canal administrativo privado para tareas de mantenimiento y contingencia, independiente de Cloudflare.

  6. Supervisión y alertas
    Watchdogs con systemd y alertas automáticas ante caídas o reinicios inesperados.


🤖 Stack de automatización (n8n + servicios aledaños)

La automatización se implementó como stack dedicado, tratado como infraestructura crítica:

  • n8n: orquestador de flujos internos y experimentales.
  • PostgreSQL: persistencia confiable de ejecuciones, credenciales y configuraciones.
  • Redis: manejo de estado, colas y desacople de procesos.
  • Ollama: inferencia local de modelos LLM para clasificación, redacción y enriquecimiento de datos.
  • MinIO (S3): almacenamiento de archivos temporales, resultados y backups.

Todo el stack:

  • Corre en red privada.
  • No expone puertos al exterior.
  • Se accede exclusivamente mediante Cloudflare Access.

Este enfoque permite automatizar flujos con IA sin depender de servicios externos, manteniendo seguridad, control y trazabilidad.


📈 Resultados

IndicadorAntesDespués
Exposición de serviciosPuertos abiertosZero Trust (Tunnel + Access)
Acceso a n8nCredenciales localesIdentidad + MFA
Superficie de ataqueMediaMínima
AutomatizaciónScripts aisladosPlataforma centralizada

🧠 Lecciones aprendidas

  • Zero Trust no es exclusivo de entornos enterprise: escala perfectamente en homelabs.
  • Cloudflare Tunnel reduce riesgo operativo y complejidad.
  • Los logs son el mejor IDS: monitorear Fail2Ban y WireGuard da visibilidad inmediata.
  • Separar acceso, red y persistencia mejora la seguridad global.
  • n8n gana valor cuando se lo trata como plataforma, no como herramienta.

🧠 Rol: Diseño e implementación de infraestructura doméstica Zero Trust
🧩 Duración: Continuo (2024–2025)
⚒️ Stack: Debian, Docker, Caddy, Cloudflare Tunnel, Access, Fail2Ban, WireGuard, n8n, PostgreSQL, Redis, MinIO, Jellyfin