VM200 es el punto de entrada Web de la infraestructura autoalojada. Publica aplicaciones instaladas en otras máquinas sin exponer directamente sus puertos internos a Internet. Recibe las conexiones HTTPS, presenta el certificado público, selecciona el servicio solicitado y reenvía la solicitud a la máquina correcta de la red local.
✅ Estado desplegado
  • VM Linux dedicada a partir de una plantilla de Ubuntu Server
  • Nginx como proxy inverso
  • Certificados Let's Encrypt gestionados por Certbot
  • Firewall local activo
  • Fail2ban activo y validado para la administración SSH
  • Redirección HTTP → HTTPS y renovación de certificado probadas
  • Respuestas progresivas y conexiones WebSocket validadas
  • Reinicio de VM200 validado sin pérdida de configuración
🌐 Estado de las publicaciones
ServicioEstado público
OpenWebUI · VM210🟢 publicado y validado por HTTPS
n8n · VM300🟢 publicado y validado por HTTPS
Nextcloud · VM205🟢 publicado y validado por HTTPS
otros servicios internos⚪ no publicados / diferidos
🧭 De un nombre de dominio a otra máquina
recorrido de una solicitud pública
1. Navigateur Internet
        ↓ demande gpt.stephanemuraro.fr
2. DNS public
        ↓ renvoie l'adresse Internet de la connexion
3. Routeur
        ↓ transfère uniquement le trafic Web vers VM200
4. VM200 / Nginx
        ↓ choisit le virtual host correspondant au nom
5. VM210 / OpenWebUI
        ↓ produit la réponse applicative
6. VM200 / Nginx
        ↓ renvoie la réponse dans la session HTTPS
7. Navigateur

El DNS solo asocia el nombre público con la dirección de Internet — no sabe qué VM aloja la aplicación. El router tampoco elige el servicio: entrega las conexiones Web a VM200. Es Nginx quien realiza el enrutamiento a nivel de aplicación: el nombre solicitado durante la negociación TLS y en la solicitud HTTP selecciona un bloque de configuración (virtual host) que designa la máquina y el servicio internos de destino.

varios nombres públicos, una misma conexión a Internet
gpt.stephanemuraro.fr         ─┐
n8n.stephanemuraro.fr         ─┼─> même adresse publique ─> VM200
nextcloud.stephanemuraro.fr   ─┘                           ├─> VM IA
                                                           ├─> VM automatisation
                                                           └─> VM fichiers
La existencia de un registro DNS no demuestra que un servicio esté publicado: también se necesita un virtual host, un certificado válido, un backend autorizado y una prueba desde una red externa.
🧱 Función de los componentes
ComponenteResponsabilidadLímite
DNS públicoasociar un nombre a la dirección de Internetno elige la VM interna
Routerreenviar el tráfico Web a VM200no entiende las aplicaciones
Firewall de VM200rechazar entradas no previstasno sustituye la autenticación
Nginxterminar HTTPS, seleccionar el virtual host, reenviarno almacena datos de negocio
Certbotobtener/renovar los certificados Let's Encryptno publica una aplicación por sí solo
Fail2banbloquear ciertos ataques repetitivos detectados en los logsno sustituye ni al firewall ni a contraseñas robustas
Backendproporcionar la aplicación, controlar sus usuariosno debe exponerse directamente
🔐 Terminación TLS

El cifrado público termina en VM200. El certificado y su clave privada permanecen centralizados en el proxy inverso, lo que evita gestionar un certificado público distinto en cada backend.

Client Internet  ═════ HTTPS chiffré ═════>  VM200
VM200            ───── flux LAN contrôlé ──>  backend

Nginx transmite al backend el nombre solicitado, el protocolo externo y la información necesaria para la trazabilidad. Para aplicaciones interactivas, admite WebSockets, respuestas progresivas y tiempos de espera adaptados a procesos largos.

🛡️ Defensa en profundidad
  • el router solo envía a VM200 el tráfico Web necesario
  • el firewall local rechaza las demás conexiones entrantes
  • la administración se limita a la red interna
  • Nginx solo reenvía los nombres y servicios configurados
  • TLS cifra y autentica la conexión pública
  • Fail2ban reduce ciertos intentos repetitivos observables
  • cada backend conserva su propia autenticación y filtrado
  • las bases de datos y APIs técnicas permanecen ausentes de la WAN

Fail2ban está validado para SSH; esto no protege automáticamente los formularios de inicio de sesión de las aplicaciones — cada protección requiere un log explotable y un filtro probado.

➕ Publicar un nuevo servicio
  • validar el servicio en la red local
  • identificar sus necesidades de HTTPS, WebSocket, tamaño de solicitud y tiempos de espera
  • definir su nombre público y su modelo de autenticación
  • configurar la aplicación para su origen público
  • crear un virtual host independiente en VM200
  • validar la sintaxis de Nginx antes de recargar
  • obtener y probar el certificado
  • probar desde una red realmente externa
  • revisar los logs y la ausencia de exposición directa
  • documentar el plan de reversión
↩️ Reversión — tres niveles:

La prueba formal de la reversión global mediante la retirada del reenvío WAN sigue siendo el último control abierto de la primera fase.

🎯 Competencias demostradas
  • Diseño de un proxy inverso compartido
  • DNS, NAT, SNI, virtual hosts y cabeceras de proxy
  • Automatización del ciclo de vida de los certificados
  • Soporte de WebSockets y streaming
  • Segmentación entre la frontera de Internet y los backends
  • Defensa en profundidad y estrategia de reversión
  • Publicación de un servicio alojado en otra máquina

Páginas relacionadas

Referencias y fuentes

CategoríaRecursoURL
Documentación oficialNginx — Documentationnginx.org/en/docs
Documentación oficialCertbot / Let's Encrypteff-certbot.readthedocs.io
Documentación oficialFail2bangithub.com/fail2ban/fail2ban
Publicaciones validadasOpenWebUI (VM210) · n8n (VM300) · Nextcloud (VM205) — HTTPS testé depuis un réseau extérieur, 2026-08-15—
LicenciaNginx — BSD-2-Clause · Certbot — Apache-2.0 · Fail2ban — GPLv2nginx.org/LICENSE
Contenido de esta páginaCompartido bajo CC BY-SA 4.0creativecommons.org/licenses/by-sa/4.0