Files
network-documentation/servidores/pegaprox/README.md

102 lines
5.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# PegaProx — Panel de Gestión Multi-Nodo
> **LXC**: TYAN VMID 123
> **IP**: 192.168.10.125
> **URL**: https://192.168.10.125:5000
> **Versión**: v1.1.1 (release estable, checkout por tag)
> **Estado**: ✅ running
---
## Descripción
Panel web para el control y administración centralizada de los 3 nodos Proxmox (TYAN, Cisco1, DellT430-2) sin necesidad de cluster Proxmox. Proporciona métricas en vivo, gestión de VMs/LXC, snapshots programados, backups, alertas, RBAC y auditoría.
- Repo: https://github.com/PegaProx/project-pegaprox
- Docs: https://docs.pegaprox.com
- Licencia: AGPL-3.0
## Infraestructura
| Parámetro | Valor |
|---|---|
| **Nodo** | TYAN (192.168.10.3) |
| **VMID** | 123 |
| **Tipo** | LXC (unprivileged) |
| **OS** | Ubuntu 24.04 |
| **CPU** | 4 cores |
| **RAM** | 4 GB |
| **Disco** | 40 GB (local-lvm) |
| **IP** | 192.168.10.125/24 |
| **Instalación** | Git tag `v1.1.1` en `/opt/PegaProx` + venv + `deploy.sh --no-interactive` |
| **Servicio** | `systemctl status pegaprox` (systemd, autostart) |
| **Puertos** | 5000 (Web), 5001 (VNC WebSocket), 5002 (SSH WebSocket) |
## Acceso
| Método | Detalle |
|---|---|
| Web UI (LAN) | https://192.168.10.125:5000 (cert autofirmado) |
| Web UI (exterior) | https://pegaprox.consultoria-as.com — vía **Cloudflare Tunnel** |
| Consolas (LAN) | aceptar una vez `https://192.168.10.125:5001` y `https://192.168.10.125:5002` en el navegador |
| Admin | usuario `admin` / `Aasi940812` |
| SSH | `ssh root@192.168.10.125` (password: `Aasi940812`) |
## Túnel Cloudflare
| Parámetro | Valor |
|---|---|
| **Conector** | `cloudflared` 2026.9.1 (repo pkg.cloudflare.com, Ubuntu 24.04) |
| **Servicio** | `systemctl status cloudflared` (token-managed, `/etc/cloudflared/token`) |
| **Protocolo** | `http2` forzado via override systemd (`/etc/systemd/system/cloudflared.service.d/override.conf`) — QUIC a region2 falló en el precheck |
| **Origen** | Dashboard Zero Trust → Public hostname → Type `HTTPS`, Service `https://localhost:5000`, **No TLS Verify** activado |
> **Troubleshooting del montaje (Sept 2026):**
> 1. Token del conector con "Invalid tunnel secret" → el token se había copiado mal/regenerado; pedirlo fresco del dashboard.
> 2. Error **1016/530** → el registro DNS viejo `pegaprox` bloqueaba el public hostname; se borró y el túnel recreó el CNAME.
> 3. Error **502 con x509** → Type `HTTPS` contra un origen con cert autofirmado.
> 4. Error **502 con connection reset** → Type `HTTPS` contra PegaProx en modo reverse proxy (HTTP plano); el Type correcto es `HTTP`.
> 5. Consolas sin conectar por túnel → activado modo reverse proxy; el frontend enruta los WS por el puerto principal.
## ⚠️ Consolas vía túnel — LIMITACIÓN conocida (Sept 2026)
Las consolas (VNC/terminal) **no funcionan a través del túnel Cloudflare** con PegaProx v1.1.1:
- En modo reverse proxy (`PEGAPROX_BEHIND_PROXY=true`), el data path de consolas pasa por gevent/pywsgi y el servidor emite **el handshake `101 Switching Protocols` duplicado** en el stream (verificado con raw socket sin Cloudflare). noVNC recibe el segundo 101 como basura de datos → cierra → "reconectando" ×3 → error.
- En modo nativo (actual), las consolas van por `wss://…:5001/5002` y **Cloudflare (plan free) no proxyea esos puertos** → imposibles por el túnel.
- Además, en el handler reverse-proxy existe un bug de variable: `port` (VNC 5900) sobrescribe el puerto API al construir `wss://{host}:{port}` contra PVE → `SSL: WRONG_VERSION_NUMBER`. Se parcheó localmente (`api_port`) y se revirtió al actualizar.
**Decisión**: panel por el túnel (OK), consolas por LAN (OK). Reportar bug upstream (doble 101 en reverse-proxy mode) y reintentar con la versión que lo corrija. Los parches locales quedaron revertidos (copia: `vms.py.bak` eliminado; ver historial de esta doc para el diff).
## Nodos Conectados (root@pam para pruebas)
| Cluster | Host | Guests visibles |
|---|---|---|
| TYAN | 192.168.10.3 | 14 (todos running) |
| Cisco1 | 192.168.10.185 | 16 (12 running) |
| DellT430-2 | 192.168.10.187 | 9 (todos running) |
> **Nota**: PegaProx auto-creó un **API token** para `root@pam` en cada nodo Proxmox (feature #110). Para producción, considerar crear un usuario PVE dedicado con roles limitados (`PVEVMAdmin`, `PVEDatastoreAdmin`, `PVESysAdmin`) en lugar de root.
## Seguridad (pendiente de endurecer)
- [ ] Activar **2FA (TOTP)** en la cuenta admin (Settings → Security)
- [x] Exposición externa via Cloudflare Tunnel (sin puertos abiertos)
- [ ] Activar **Cloudflare Access** (zero-trust con 2FA) sobre el hostname `pegaprox.consultoria-as.com` antes de uso en producción
- [ ] Cambiar de root@pam a usuario PVE con permisos limitados al terminar las pruebas
- [ ] La DB está encriptada (SQLCipher); master key en `/etc/pegaprox/secret.key` (respaldarla)
## Actualizaciones
```bash
cd /opt/PegaProx
# verificar el tag estable antes de actualizar
git fetch --tags && git tag -l | sort -V | tail -5
```
O desde la UI: Settings → Updates → Check for Updates.
---
*Documentación de PegaProx - Consultoria-AS*
*Actualizado: 19 Septiembre 2026*