# 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*