[P2606] WebServer NGINX: plan actualizado, ficha nodo, HTTPS operativo
- P2606: Plan v1.1 EN EJECUCIÓN. Fases 1-3 completadas. - Ficha nodo srvv-nginx-rm.md. P2606 en adn/07_proyectos.md. - Incluye cambios acumulados de sesiones anteriores.
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
# Plan: Servidor Web NGINX en LXC con IP Pública
|
||||
|
||||
**Código:** P2606.01
|
||||
**Fecha:** 28 de marzo de 2026
|
||||
**Autor:** Sistema ADN
|
||||
**Versión:** 1.1
|
||||
**Estado:** 🚧 EN EJECUCIÓN
|
||||
|
||||
## 📋 Resumen Ejecutivo
|
||||
|
||||
Desplegar un servidor web **NGINX** en contenedor **LXC** (Debian 12) sobre `srv-pmox3`, con **IP pública** asignada por redes UTN para exposición directa de servicios web.
|
||||
|
||||
## 📌 Prerequisitos
|
||||
|
||||
- [x] IP pública: `190.114.205.17` — verificada libre y asignada al LXC.
|
||||
- [x] Bridge: `vmbr0` en srv-pmox3 soporta red pública y privada (capa 2 compartida).
|
||||
- [x] Firewall UTN: puertos 80 y 443 abiertos — confirmado vía acceso HTTP/HTTPS público.
|
||||
- [x] Nombre del nodo: `srvv-nginx-rm`.
|
||||
|
||||
## 🚀 Plan de Ejecución
|
||||
|
||||
### ✅ **FASE 1: Preparación e investigación** *(completada 2026-03-28)*
|
||||
|
||||
- [x] **1.1:** IP pública: `190.114.205.17/24`, gw `190.114.205.1`. Verificada libre.
|
||||
- [x] **1.2:** Red compartida capa 2 — `vmbr0` sirve tanto red pública como privada.
|
||||
- [x] **1.3:** Template `debian-12-standard_12.7-1_amd64.tar.zst` disponible.
|
||||
- [x] **1.4:** Hostname: `srvv-nginx-rm`. IP privada: `10.0.10.117/23`. Host: `srv-pmox3`.
|
||||
|
||||
### ✅ **FASE 2: Creación del contenedor LXC** *(completada 2026-03-28)*
|
||||
|
||||
- [x] **2.1:** LXC 116 creado en srv-pmox3 ✅ (2 cores, 2 GB RAM, 20 GB disco, Debian 12, unprivileged).
|
||||
- [x] **2.2:** Red configurada: eth0=`190.114.205.17/24` (pública), eth1=`10.0.10.117/23` (privada).
|
||||
- [x] **2.3:** Hostname `srvv-nginx-rm`, DNS `8.8.8.8`, timezone `America/Argentina/La_Rioja`.
|
||||
- [x] **2.4:** Sistema actualizado (`apt upgrade` — 91 paquetes).
|
||||
- [x] **2.5:** OpenSSH en puerto **7022** ✅.
|
||||
- [ ] **2.6:** Configurar Tailscale VPN (acceso remoto de gestión). ⏳ *Pendiente.*
|
||||
|
||||
### ✅ **FASE 3: Instalación y configuración NGINX** *(completada 2026-03-28)*
|
||||
|
||||
- [x] **3.1:** NGINX 1.22.1 instalado ✅. Puerto 80 escuchando. Acceso público HTTP 200 verificado.
|
||||
- [x] **3.1b:** DNS DuckDNS: `rmonla.duckdns.org` → `190.114.205.17` ✅. ⚠️ DuckDNS no soporta wildcard (`*.rmonla.duckdns.org`). Subdominios requieren dominio propio o alternativa.
|
||||
- [x] **3.2:** Sitio `/vcby` configurado ✅. Repo `ricardomonla/assjdm-ViaCrusis` clonado en `/var/www/vcby`. PHP 8.2-FPM instalado. NGINX alias + fastcgi configurado. `http://rmonla.duckdns.org/vcby/` → HTTP 200.
|
||||
- [x] **3.3:** HTTPS con Let's Encrypt ✅. Certbot 2.1.0, cert `rmonla.duckdns.org` (expira 2026-06-26), redirect HTTP→HTTPS, renovación automática.
|
||||
- [ ] **3.4:** Hardening: headers de seguridad, server tokens, rate limiting.
|
||||
- [ ] **3.5:** Configurar logs (access.log, error.log con rotación).
|
||||
|
||||
### ⏳ **FASE 4: Seguridad y monitoreo**
|
||||
|
||||
- [ ] **4.1:** Configurar firewall local (ufw/nftables): solo puertos 80, 443, SSH.
|
||||
- [ ] **4.2:** Instalar fail2ban.
|
||||
- [ ] **4.3:** Configurar backup automático (vzdump en Proxmox).
|
||||
- [ ] **4.4:** Agregar al sistema de monitoreo existente.
|
||||
|
||||
### 🚧 **FASE 5: Validación y documentación** *(en progreso 2026-03-28)*
|
||||
|
||||
- [x] **5.1:** Test acceso web público: HTTP 200 ✅ y HTTPS `https://rmonla.duckdns.org/vcby/` → 200 ✅.
|
||||
- [ ] **5.2:** Test de rendimiento básico.
|
||||
- [x] **5.3:** Ficha de nodo creada: `nodos/srvv-nginx-rm.md` ✅.
|
||||
- [ ] **5.4:** Documentar en bitácora y marcar proyecto como operativo.
|
||||
|
||||
## 📝 Notas
|
||||
|
||||
- **LXC 116** en srv-pmox3 (10.0.10.203). Autostart habilitado (`onboot: 1`).
|
||||
- **Clave root**: Guardada en candados (`srvv-nginx-rm:root`) ✅.
|
||||
- **Acceso SSH**: `ssh -p 7022 root@10.0.10.117` o `root@190.114.205.17`.
|
||||
- **Acceso Proxmox**: `pct exec 116 -- bash` desde srv-pmox3.
|
||||
- **DNS**: `rmonla.duckdns.org` → `190.114.205.17` (DuckDNS, no soporta wildcard).
|
||||
- **App desplegada**: `/vcby` → repo `ricardomonla/assjdm-ViaCrusis` (deploy key SSH).
|
||||
- **Referencia**: `srvv-sitio` en srv-pmox1 con IP `190.114.205.20`.
|
||||
|
||||
@@ -0,0 +1,137 @@
|
||||
# P2606 - Servidor Web NGINX con IP Pública
|
||||
|
||||
**Estado:** ⏳ En Ejecución
|
||||
**Fecha Inicio:** 2026-03-28
|
||||
**Fecha Fin Estimada:** *Por definir*
|
||||
|
||||
## Objetivo
|
||||
Desplegar un nuevo servidor web basado en **NGINX** en un contenedor **LXC** dentro de la infraestructura Proxmox de la facultad, con asignación de **IP pública** para exposición directa de servicios web.
|
||||
|
||||
### Motivación
|
||||
- Necesidad de un servidor web dedicado con IP pública propia.
|
||||
- Los servidores web actuales (`srvv-sitio` con IP `190.114.205.20`, `srvv-sitio2` LXC) están en uso.
|
||||
- LXC ofrece menor overhead que VMs completas, ideal para un servidor web.
|
||||
|
||||
## Stakeholders
|
||||
| Rol | Nombre | Contacto |
|
||||
| :--- | :--- | :--- |
|
||||
| Responsable DTIC | Ricardo Monla | rmonla |
|
||||
|
||||
## 🌐 Topología y Contexto de Red
|
||||
|
||||
```
|
||||
Internet
|
||||
│
|
||||
Firewall/Router UTN
|
||||
│
|
||||
├── srv-pmox3 (10.0.10.203) ── Bridge vmbr0 ── Red interna 10.0.10.x
|
||||
│ │
|
||||
│ └── srvv-web (LXC) ── IP Pública: (a asignar)
|
||||
│ IP Privada: 10.0.10.xx
|
||||
│
|
||||
├── srvv-sitio (190.114.205.20) ── Web existente (referencia)
|
||||
└── srvv-sitio2 (10.0.10.19) ── Web secundario LXC
|
||||
```
|
||||
|
||||
## Nodos Involucrados
|
||||
### Nodos Exclusivos (Core)
|
||||
- `srvv-web` — Contenedor LXC con NGINX (a crear)
|
||||
|
||||
### Nodos de Soporte/Infraestructura
|
||||
- `srv-pmox3` (10.0.10.203) — Host Proxmox (64GB RAM, ~20GB libres)
|
||||
- `srvv-sitio` — Referencia de configuración con IP pública
|
||||
|
||||
## Herramientas
|
||||
- **Proxmox VE** — Creación y gestión del LXC
|
||||
- **NGINX** — Servidor web / reverse proxy
|
||||
- **Certbot** — Certificados HTTPS (Let's Encrypt)
|
||||
- **Tailscale** — Acceso remoto de gestión
|
||||
- **ADN Toolkit** — Gestión de nodos, bitácora, candados
|
||||
|
||||
## Recursos Estimados (LXC)
|
||||
|
||||
| Recurso | Valor |
|
||||
|---------|-------|
|
||||
| CPU | 2 cores (compartido) |
|
||||
| RAM | 2 GB |
|
||||
| Disco | 20 GB |
|
||||
| Red | vmbr0 (bridge), IP pública + IP privada |
|
||||
| Template | `debian-12-standard` |
|
||||
|
||||
## Hitos Clave
|
||||
| ID | Hito | Estado | Fecha |
|
||||
| :--- | :--- | :---: | :--- |
|
||||
| 1 | IP pública asignada | ✅ | 2026-03-28 |
|
||||
| 2 | LXC creado y configurado | ✅ | 2026-03-28 |
|
||||
| 3 | NGINX operativo con HTTPS | ✅ | 2026-03-28 |
|
||||
| 4 | Seguridad y monitoreo | 📍 | *Pendiente* |
|
||||
| 5 | Validación y entrega | ⏳ | *En progreso* |
|
||||
|
||||
---
|
||||
|
||||
## 📊 Progreso
|
||||
|
||||
```
|
||||
Fase 1: ██████████ 100% Preparación e investigación
|
||||
Fase 2: █████████░ 90% Creación del contenedor LXC (Tailscale pendiente)
|
||||
Fase 3: ████████░░ 80% Instalación y configuración NGINX (hardening pendiente)
|
||||
Fase 4: ░░░░░░░░░░ 0% Seguridad y monitoreo
|
||||
Fase 5: █████░░░░░ 50% Validación y documentación
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Prerequisitos
|
||||
|
||||
- [x] Confirmar IP pública disponible: `190.114.205.17` asignada.
|
||||
- [x] Verificar bridge en srv-pmox3: `vmbr0` capa 2 compartida.
|
||||
- [x] Confirmar reglas de firewall: puertos 80/443 abiertos (verificado HTTP/HTTPS público).
|
||||
- [x] Definir nombre del nodo: `srvv-nginx-rm`.
|
||||
|
||||
## Plan de Ejecución
|
||||
|
||||
### ⏳ **FASE 1: Preparación e investigación**
|
||||
|
||||
- [ ] **1.1:** Solicitar/confirmar IP pública disponible al área de redes UTN.
|
||||
- [ ] **1.2:** Verificar configuración de red en `srv-pmox3` — bridges, VLAN, routing para IP pública.
|
||||
- [ ] **1.3:** Verificar template LXC Debian 12 disponible en srv-pmox3.
|
||||
- [ ] **1.4:** Definir hostname definitivo y esquema de red.
|
||||
|
||||
### ⏳ **FASE 2: Creación del contenedor LXC**
|
||||
|
||||
- [ ] **2.1:** Crear LXC en srv-pmox3 (2 cores, 2 GB RAM, 20 GB disco, bridge con IP pública).
|
||||
- [ ] **2.2:** Configurar red: IP pública estática + gateway, IP privada 10.0.10.xx.
|
||||
- [ ] **2.3:** Configurar hostname, DNS, timezone (America/Argentina/La_Rioja).
|
||||
- [ ] **2.4:** Actualizar sistema base (`apt update && apt upgrade`).
|
||||
- [ ] **2.5:** Instalar y configurar OpenSSH (puerto personalizado, acceso por clave).
|
||||
- [ ] **2.6:** Configurar Tailscale VPN (acceso remoto de gestión).
|
||||
|
||||
### ⏳ **FASE 3: Instalación y configuración NGINX**
|
||||
|
||||
- [ ] **3.1:** Instalar NGINX.
|
||||
- [ ] **3.2:** Configurar sitio por defecto (página de prueba).
|
||||
- [ ] **3.3:** Configurar HTTPS con Let's Encrypt (certbot + NGINX plugin).
|
||||
- [ ] **3.4:** Hardening: headers de seguridad, server tokens, rate limiting.
|
||||
- [ ] **3.5:** Configurar logs (access.log, error.log con rotación).
|
||||
|
||||
### ⏳ **FASE 4: Seguridad y monitoreo**
|
||||
|
||||
- [ ] **4.1:** Configurar firewall local (ufw/nftables): solo puertos 80, 443, SSH.
|
||||
- [ ] **4.2:** Instalar fail2ban.
|
||||
- [ ] **4.3:** Configurar backup automático (vzdump en Proxmox).
|
||||
- [ ] **4.4:** Agregar al sistema de monitoreo existente.
|
||||
|
||||
### ⏳ **FASE 5: Validación y documentación**
|
||||
|
||||
- [ ] **5.1:** Test de acceso web desde internet (HTTP y HTTPS).
|
||||
- [ ] **5.2:** Test de rendimiento básico.
|
||||
- [ ] **5.3:** Crear ficha de nodo en `nodos/` (vía `generar nodo`).
|
||||
- [ ] **5.4:** Documentar en bitácora y marcar proyecto como operativo.
|
||||
|
||||
## Referencias
|
||||
- `srvv-sitio` — Modelo de servidor web con IP pública (190.114.205.20)
|
||||
- `srvv-sitio2` — Referencia de LXC web existente
|
||||
|
||||
---
|
||||
|
||||
*Manifiesto generado automáticamente el 2026-03-28 — completado con datos del proyecto*
|
||||
Reference in New Issue
Block a user