Saltar a contenido

Project State

Estado certificado al 2026-06-01

  • Workspace operativo: C:\APV\openclawai
  • Repo oficial: https://github.com/gcanuti/openclawai-vps-lab
  • Rama activa: main
  • VPS productivo auditado por SSH alias openclaw-vps
  • Host remoto validado: srv977009
  • OpenClaw publicado en: https://openclaw.alpuntodeventa.com.ar/
  • DNS activo: openclaw.alpuntodeventa.com.ar -> 46.202.151.32
  • SSL activo con Let's Encrypt emitido el 2026-05-29
  • Nginx Proxy Manager activo y sirviendo 80/81/443
  • Portainer activo y sirviendo 8000/9443
  • Portainer modernizado a 2.39.2 para compatibilidad con Docker 29.x
  • VPS baseline hardening completado
  • Swap activa y persistente: 4 GiB
  • OpenClaw runtime activo: Up (healthy)
  • OpenClaw CLI auditado con modelo efectivo openai/gpt-5.5
  • OpenAI auth profile presente para el agente main
  • Chat UI, pairing y respuesta funcional confirmados visualmente por Gabi
  • Certificacion actual del proyecto: VERDE
  • Certificacion actual de disaster recovery: VERDE
  • Certificacion actual de backup recurrente: VERDE
  • Nueva autoridad documental del VPS: docs/governance/
  • Etapa VPS GOVERNANCE PLATFORM v1: iniciada y cerrada documentalmente
  • Governance v1 reforzada con trazabilidad tecnica completa por servicio y por uso
  • Etapa VPS GOVERNANCE PLATFORM v2: implementada con catalogo de tests, matriz de regresion, validation state y control tower
  • Etapa VPS OPERATIONS & SECURITY PLATFORM v1: implementada en governance con capa de operacion, seguridad, monitoreo, mantenimiento, updates y administracion asistida por IA
  • Etapa O1 Observabilidad fundacional: implementada en stack privado con Prometheus, Grafana, Alertmanager y exporters
  • Etapa O2 Dashboards operativos: implementada con suite ejecutiva en Grafana sobre datasource Thanos
  • Etapa O3 Alertas controladas: implementada con reglas conservadoras, Alertmanager local y validacion sin falsos positivos
  • Etapa O3.1 Drill controlado de alertas: ejecutada en produccion controlada con disparo y resolucion end-to-end evidenciados en Governance
  • Etapa O1.2 Proteccion externa de artefactos criticos: cerrada documentalmente con copia externa existente en C:\APV\backups\openclaw\, RPO 24h y RTO 30-60 min
  • Etapa O6 Living Knowledge Platform: implementada con auditoria de realidad, catalogo navegable, diagramas Mermaid, data lineage y base documental para futuro knowledge graph
  • Etapa O8 Knowledge Population basada en evidencia real: implementada con fichas atomicas de observabilidad, Docker, runtime, DNS/TLS, runtime host e integracion OpenAI
  • Etapa O9 Knowledge Portal: publicada oficialmente por NPM en doc.alpuntodeventa.com.ar con MkDocs Material, busqueda integrada, soporte Mermaid y despliegue Docker operativo en VPS

Estado global final del proyecto

  • VPS: VERDE
  • Docker: VERDE
  • NPM: VERDE
  • Portainer: VERDE
  • OpenClaw: VERDE
  • Disaster Recovery: VERDE
  • Backup recurrente: VERDE
  • Governance documental VPS: VERDE
  • Governance tecnica por servicio y por uso: VERDE
  • Governance validation system: VERDE
  • Operations: VERDE
  • Security: VERDE
  • Monitoring: VERDE
  • Observability O1: VERDE
  • Alertas O3: VERDE
  • AI Administration: VERDE
  • Knowledge Platform O6: VERDE
  • Knowledge Population O8: VERDE
  • Knowledge Portal O9: VERDE

Cobertura estimada post Governance v2

  • Governance: 92%
  • Knowledge Graph: 93%
  • Regression Control: 92%
  • Control Tower: 97%
  • Living Knowledge Platform: 98%
  • Knowledge Portal navegable: 95%
  • Gap abierto principal: definir y aprobar un canal externo simple para O3/O4 cuando se confirme que no genera ruido

Estado del portal O9 al 2026-06-01

  • Safe point local inicial:
  • git status -sb -> ## main...origin/main
  • git rev-parse HEAD -> 831acb98f5cf32c000bd5babf758e0801cdbe328
  • opcion elegida:
  • MkDocs Material
  • motivo:
  • bajo consumo
  • navegacion simple
  • busqueda integrada
  • soporte Markdown
  • Mermaid simple
  • deploy Docker liviano
  • actualizacion clara desde Git
  • entregables creados:
  • mkdocs.yml
  • docs/index.md
  • docs/assets/javascripts/mermaid-init.js
  • docs/assets/stylesheets/extra.css
  • infra/knowledge-portal/Dockerfile
  • infra/knowledge-portal/docker-compose.yml
  • infra/knowledge-portal/nginx.conf
  • docs/governance/runbooks/MAINTAIN-KNOWLEDGE-PORTAL.md
  • publicacion oficial:
  • URL: https://doc.alpuntodeventa.com.ar/
  • contenedor local: 127.0.0.1:8085 -> 8085
  • upstream NPM: knowledge-portal:8085
  • exposicion externa solo por NPM
  • proteccion recomendada con Access List o Basic Auth
  • estado de despliegue real en VPS:
  • contenedor knowledge-portal levantado en 127.0.0.1:8085
  • contenedor conectado tambien a proxy-network
  • dominio doc.alpuntodeventa.com.ar publicado por NPM
  • deploy aplicado por sync controlado sobre /opt/openclawai
  • checkout remoto en VPS: snapshot sin .git
  • validacion local:
  • mkdocs build --strict sobre el repo
  • busqueda habilitada por plugin search
  • Mermaid habilitado en frontend
  • validacion publica:
  • http://doc.alpuntodeventa.com.ar/ -> 301 a https://doc.alpuntodeventa.com.ar/
  • https://doc.alpuntodeventa.com.ar/ -> HTTP/2 200
  • certificado Let's Encrypt YE2 valido hasta 2026-08-30 17:33:48 GMT
  • search/search_index.json accesible por HTTPS
  • documento governance/knowledge/infrastructure/dns-tls/ responde y renderiza Mermaid
  • regla central:
  • Git sigue siendo la fuente de verdad
  • el portal solo publica una copia navegable

Evidencia viva O8 al 2026-06-01

  • Safe point local inicial:
  • git status -sb -> ## main...origin/main
  • git rev-parse HEAD -> 14072f7464f5e2dbc0c9e73a364f69faf0efa782
  • evidencia SSH usada:
  • docker ps
  • docker network ls
  • docker volume ls
  • docker compose ps en /opt/stacks/openclaw
  • hostnamectl, lscpu, free -h, df -h
  • ss -tulpn, getent ahostsv4, openssl x509
  • openclaw health --json
  • openclaw models status
  • entregables O8:
  • fichas en docs/governance/knowledge/observability/
  • capa Docker en docs/governance/knowledge/docker/
  • runtime real en docs/governance/knowledge/runtime/README.md
  • DNS/TLS en docs/governance/knowledge/infrastructure/dns-tls.md
  • runtime host en docs/governance/knowledge/infrastructure/runtime-host.md
  • integracion OpenAI en docs/governance/knowledge/integrations/openai.md
  • diagramas 07-runtime-openclaw.md y 08-openai-integration.md
  • runbook MAINTAIN-KNOWLEDGE-PLATFORM.md
  • cambio principal de color:
  • observabilidad, Docker, redes, volumenes, runtime y OpenAI pasan a VERDE en la auditoria O8.0
  • O8.8 cierra tambien DNS / TLS y Runtime Host
  • veredicto O8 final:
  • O8 queda VERDE para su alcance
  • no cubre todavia decisiones operativas finales sobre legacy Portainer ni la habilitacion de un canal externo de alertas

Cobertura estimada post VPS Operations & Security Platform v1

  • Governance: 95%
  • Knowledge Graph: 94%
  • Operations: 94%
  • Security: 93%
  • Monitoring: 92%
  • Observability O1: 95%
  • Alertas O3: 96%
  • AI Administration: 96%
  • Gaps abiertos principales:
  • change-gates de update pendientes para Docker, Portainer, OpenClaw y NPM
  • automatizar la descarga externa de backups si se aprueba en Windows
  • simular restore O1 desde copia externa en staging dedicada
  • definir y aprobar un canal externo simple para O3 ahora que O3.1 cerro en verde
  • cerrar luego una automatizacion controlada de la copia externa
  • revisar periodicamente diferencias reality vs docs usando O6.0

Evidencia viva O6 al 2026-06-01

  • Safe point local inicial:
  • git status -sb -> ## main...origin/main
  • git rev-parse HEAD -> 7c2c996f8a86229a1fe00bd8701953512b4d747a
  • realidad del VPS por SSH:
  • host srv977009
  • 13 contenedores activos observados
  • redes activas observadas: proxy-network, nginx-proxy-manager_default, openclaw_openclaw_internal, obs-observability-internal
  • red legado observada: portainer2_default sin contenedores
  • volumenes observados: portainer_data_new, portainer_data, obs_prometheus_data, obs_grafana_data, obs_alertmanager_data, obs_thanos_storegateway_data, obs_thanos_compactor_data, obs_thanos_objectstore_data
  • observabilidad real:
  • 13 targets Prometheus observados UP
  • Alertmanager operativo con receiver local-null
  • Watchdog firing esperado
  • correcciones documentales aplicadas:
  • svc-openclaw deja de listar un contenedor cli no observado
  • svc-nginx-proxy-manager deja el websocket en PASS
  • catalog/SERVICES.md reconoce que O4 ya corre en el VPS
  • entregables O6:
  • docs/governance/knowledge/
  • docs/governance/operations/O6.0-REALITY-AUDIT.md
  • docs/governance/runbooks/RESTORE-KNOWLEDGE-PLATFORM.md

Evidencia viva O3 al 2026-06-01

  • Safe point local inicial:
  • git status -sb -> ## main...origin/main
  • git rev-parse HEAD -> 258a55ad3ad140e8e550e25d52256209f3c4f46a
  • observabilidad:
  • docker compose config en /opt/stacks/observability -> OK
  • promtool check config /etc/prometheus/prometheus.yml -> SUCCESS
  • promtool check rules /etc/prometheus/rules/*.yml -> SUCCESS
  • Alertmanager status API -> receiver local-null
  • Prometheus rules API -> 4 archivos O3 cargados
  • Prometheus alerts API -> 0 alertas activas
  • targets:
  • prometheus, alertmanager, grafana, node-exporter, cadvisor, blackbox-exporter, probe OpenClaw HTTPS, probe NPM local, probe Portainer local -> UP
  • salud actual:
  • RAM usada por Prometheus -> 15.44%
  • disco / usado -> 13.91%
  • CPU host actual -> 9.65%
  • load15 por CPU -> 0.055
  • uso actual de limite TSDB -> 0.11%
  • veredicto:
  • O3 queda cargado, silencioso y compatible con O1/O2

Evidencia viva O3.1 al 2026-06-01

  • Safe point local inicial:
  • git status -sb -> ## main...origin/main
  • git rev-parse HEAD -> a82ea0c1c34b94e889a89650d389e937e3112e4a
  • ventana de corrida:
  • inicio remoto: 2026-06-01 12:03:58 -03
  • cierre remoto: 2026-06-01 12:41:25 -03
  • preestado:
  • Alertmanager sigue en receiver local-null
  • Prometheus y Alertmanager arrancaron con 0 alertas activas reales
  • Watchdog queda activo por diseno en local-null
  • targets base en UP
  • pruebas ejecutadas:
  • NodeExporterNoData por stop/start controlado de obs-node-exporter
  • CadvisorNoData por stop/start controlado de obs-cadvisor
  • BlackboxProbeFailed por target sintetico temporal http://127.0.0.1:65534/ agregado y retirado dentro de Prometheus
  • validacion de pipeline Alertmanager con group_by por alert_group y severity, receiver local-null y sin notificaciones externas
  • tiempos medidos:
  • NodeExporterNoData -> pending 12:04:38 -03, firing 12:10:05 -03, resuelta 12:11:16 -03
  • CadvisorNoData -> pending 12:27:38 -03, firing 12:32:49 -03, resuelta 12:33:58 -03
  • BlackboxProbeFailed -> pending 12:35:13 -03, firing 12:40:12 -03, resuelta 12:41:21 -03
  • hallazgo y ajuste:
  • la primera corrida de obs-cadvisor genero un falso critical DockerTrackedContainerDown al perder container_last_seen
  • la regla fue corregida para exigir up{job="cadvisor"} == 1 antes de inferir caida de contenedores clave
  • la corrida final de obs-cadvisor quedo limpia y valida
  • evidencia:
  • reporte permanente: O3.1-ALERT-DRILL-REPORT.md
  • artefacto local de la corrida: tmp/o31-alert-drill-20260601-120313
  • Alertmanager recibio las 3 alertas esperadas en local-null y cerro con 0 alertas reales activas
  • veredicto:
  • O3 ya queda demostrado de extremo a extremo sin abrir puertos, sin tocar OpenClaw y sin habilitar notificaciones externas

Evidencia viva operacion, seguridad y monitoreo al 2026-06-01

  • Safe point local inicial:
  • git status -sb -> ## main...origin/main
  • git rev-parse HEAD -> e9e5773aa2c1f8b5695346a543a27352553db2ee
  • VPS:
  • hostname -> srv977009
  • uptime -> up 3 days, 11:49
  • contenedores:
  • portainer -> Up 25 hours
  • openclaw-openclaw-gateway-1 -> Up 26 hours (healthy)
  • nginx-proxy-manager -> Up 3 days
  • SSL:
  • subject -> openclaw.alpuntodeventa.com.ar
  • issuer -> Let's Encrypt YE1
  • notAfter -> 2026-08-27 11:54:33 GMT
  • puertos publicos reales:
  • 22, 80, 81, 443, 8000, 9443 alcanzables desde afuera
  • servicios expuestos reales:
  • ssh
  • svc-nginx-proxy-manager
  • svc-portainer
  • svc-openclaw publicado solo por NPM
  • capacidad:
  • RAM 7.8Gi total, 6.6Gi available
  • swap 4G, 0B usada
  • disco / al 13%
  • performance:
  • load average 0.19 0.05 0.04
  • OpenClaw 0.47% CPU, NPM 0.09% CPU, Portainer 0.00% CPU
  • backup reciente:
  • ultima corrida observada /root/openclaw-backups/daily/20260531-030002
  • updates Ubuntu:
  • 6 paquetes upgradables del tren de kernel
  • veredicto:
  • Operations VERDE
  • Security VERDE
  • Monitoring VERDE

Ventana de mantenimiento Ubuntu al 2026-06-01

  • SAFE POINT local inicial:
  • git status -sb -> ## main...origin/main
  • git rev-parse HEAD -> e9e5773aa2c1f8b5695346a543a27352553db2ee
  • prechecks VPS:
  • uname -r -> 6.8.0-117-generic
  • docker ps -> portainer, openclaw-openclaw-gateway-1, nginx-proxy-manager todos Up
  • df -h / -> 96G total, 12G usados, 85G libres, 13%
  • uptime -> up 3 days, 12:13
  • backup verificado:
  • corrida documentada y observada: /root/openclaw-backups/daily/20260531-030002
  • artefactos presentes: openclaw-stack.tgz, npm-stack.tgz, portainer-volume.tgz, manifest.txt, SHA256SUMS
  • log: /root/openclaw-backups/logs/openclaw-backup-20260531-030002.log con Backup completed successfully
  • updates aplicados:
  • linux-headers-generic
  • linux-headers-virtual
  • linux-image-virtual
  • linux-libc-dev
  • linux-tools-common
  • linux-virtual
  • advertencias no bloqueantes:
  • apt update reporto entradas duplicadas en /etc/apt/sources.list.d/ubuntu-mirrors.list
  • reboot controlado:
  • sudo reboot ejecutado
  • primer reintento SSH aun en arranque
  • host recuperado luego con uname -r -> 6.8.0-124-generic
  • postchecks:
  • docker ps -> portainer, openclaw-openclaw-gateway-1, nginx-proxy-manager todos Up
  • openclaw health --json -> "ok": true
  • openclaw agent --agent main --message 'Respondé solamente: OpenClaw OK' --json -> status: ok, respuesta OpenClaw OK
  • docker exec nginx-proxy-manager curl -I http://openclaw-gateway:18789/ -> HTTP/1.1 200 OK
  • curl -I https://openclaw.alpuntodeventa.com.ar/ -> HTTP/1.1 200 OK
  • curl -k -I https://127.0.0.1:9443 -> HTTP/1.1 200 OK
  • Test-NetConnection 46.202.151.32 a 22, 80, 81, 443, 8000, 9443 -> todos TcpTestSucceeded=True
  • kernel:
  • anterior: 6.8.0-117-generic
  • nuevo: 6.8.0-124-generic
  • decision:
  • mantenimiento Ubuntu cerrado en verde
  • frente de kernel operativo y revalidado

Evidencia viva de TEST-WEBSOCKET-001 al 2026-06-01

  • Safe point local inicial:
  • git status -sb -> ## main...origin/main
  • git rev-parse HEAD -> 4c720307d076bceb17720a0a6c11fd3239eb8ff0
  • Auditoria de dispositivos:
  • paired: Control UI oficial de Gabi 3fa5280edf0e65d16f1ec60e686ae17d4e7b656e256bb6823dfe8f0e84a5fbf3 Win32, openclaw-control-ui, webchat, scopes operator.admin, operator.read, operator.write, operator.approvals, operator.pairing, IP 186.12.228.35, aprobado desde 2026-05-31 00:38:32 -03
  • paired: CLI local del gateway 94483a84828c419a17a48b8eed6a0c3f1bac37a7eccb9197c9256ae43a2e812a linux, cli, cli, scopes aprobados operator.write
  • pendiente: request 30ae9c15-2254-4eb3-b94d-7ced4d72e6ad del mismo CLI local del gateway, pedido operator.pairing, isRepair=true, fecha 2026-06-01 00:49:17 -03
  • decision: no se aprobo ningun request nuevo porque el acceso actual de Gabi en Control UI ya estaba paired y el pendiente no correspondia a ese acceso
  • Validacion previa:
  • docker ps remoto -> openclaw-openclaw-gateway-1 Up (healthy)
  • curl -I https://openclaw.alpuntodeventa.com.ar/ -> HTTP/2 200
  • nslookup openclaw.alpuntodeventa.com.ar -> 46.202.151.32
  • Handshake websocket publico con device aprobado:
  • metodo: corrida remota por ssh openclaw-vps reutilizando la identidad aprobada y el token cacheado del CLI local del gateway, sin imprimir secretos
  • destino: wss://openclaw.alpuntodeventa.com.ar/
  • resultado: conexion Open, primer frame connect.challenge, frame connect enviado, respuesta hello-ok, rol operator, scopes negociados operator.read, operator.write
  • token usado: si, sin imprimirlo ni persistirlo en docs o Git
  • Correlacion de logs:
  • NPM sin errores de TLS ni de websocket visibles en la ventana de 5m
  • gateway sin rechazos nuevos de pairing ni de device identity durante la corrida que cierra el test
  • Veredicto:
  • TEST-WEBSOCKET-001 -> PASS
  • transporte WebSocket detras de NPM/SSL: VALIDADO
  • flujo websocket autenticado completo con device aprobado: CERRADO
  • no se observo PAIRING_REQUIRED
  • no se observo DEVICE_IDENTITY_REQUIRED

Autoridad documental vigente

  • La autoridad documental viva del VPS pasa a ser docs/governance/.
  • Esta capa gobierna servicios, redes, volumenes, dominios, puertos, backups, usuarios, runbooks y auditorias.
  • Esta capa ahora tambien gobierna operacion diaria, monitoreo, mantenimiento, updates y consultas de administracion en lenguaje natural.
  • Esta capa ahora exige tambien stack, imagen, compose, redes, puertos, volumenes, dominios, NPM, backups, dependencias, impacto y usos registrados por servicio.
  • Regla permanente: NINGUN SERVICIO NUEVO SE CONSIDERA TERMINADO SI NO ACTUALIZA GOVERNANCE.
  • Regla permanente adicional: toda documentacion, runbook, estado operativo o respuesta para admin debe usar lenguaje claro, amable y simple.
  • La estructura queda preparada para futura copia o sincronizacion en /opt/governance sin ejecutarla todavia en el VPS.

Estado DR certificado al 2026-05-31

  • Safe point local inicial de esta auditoria:
  • git status -sb -> limpio
  • git rev-parse HEAD -> 6445ca4e989d3ac287ce658ec4badf96ac006476
  • Auditoria DR ejecutada sin cambios en produccion.
  • Inventario real documentado con rutas y tamanos en docs/BACKUP-RESTORE-STRATEGY.md.
  • Backup restaurable evidenciado para:
  • OpenClaw
  • NPM
  • Portainer
  • Simulacion controlada no destructiva ejecutada en:
  • /tmp/dr-green-20260531-011407
  • Auth OpenAI persistida observada en:
  • /opt/stacks/openclaw/config/agents/main/agent/auth-profiles.json
  • /opt/stacks/openclaw/config/agents/main/agent/auth-state.json
  • /opt/stacks/openclaw/config/identity/device-auth.json
  • Checksums de la simulacion:
  • openclaw-stack.tgz f2a659b9a4564b2561779d39842b46c83a439e76f389a9c1580313a3d7e9d20f
  • npm-stack.tgz cf64d4a8bef17a6f8c4c3ea8637e951c0b69abab91cd9461e35f16de10852c43
  • portainer-volume.tgz fd8c9385307ee27c5525c8089baee94aa1eae68e4d8968ac5a212cf8e75c2a32
  • Veredicto DR:
  • recuperacion del stack en mismo VPS: SI
  • recuperacion total documentada y demostrable en staging: SI
  • RTO certificado:
  • mismo VPS: 30-45 minutos
  • VPS nuevo: 90-180 minutos
  • RPO certificado:
  • 0 para la copia tomada en la simulacion
  • Documentos rectores DR:
  • docs/DISASTER-RECOVERY-RUNBOOK.md
  • docs/BACKUP-RESTORE-STRATEGY.md

Estado backup recurrente certificado al 2026-05-31

  • SAFE POINT local inicial de esta implementacion:
  • git status -sb -> ## main...origin/main
  • git rev-parse HEAD -> 32ad551e89714e6a6d16bd99d4a2df7e74f6d878
  • Backup diario VPS instalado:
  • cron 03:00
  • script: /root/openclaw-backups/bin/openclaw-vps-backup.sh
  • Retencion activa:
  • diarios 30 dias
  • semanales 12
  • logs 90 dias
  • Corrida manual final validada:
  • /root/openclaw-backups/daily/20260531-014038
  • Evidencia presente:
  • openclaw-stack.tgz
  • npm-stack.tgz
  • portainer-volume.tgz
  • SHA256SUMS
  • manifest.txt
  • Checksums finales:
  • openclaw-stack.tgz 9169e9361aad7ef09e98ab08346d296d3c5ee00da43d47b63c7bbb996986cb00
  • npm-stack.tgz 753dad1908e26870aa8e935429df03318f05b7a93ab3050748758c7520788246
  • portainer-volume.tgz ee35d0930b602c5f82ce6b24cb6dc6ec19033cab90f5ffb310deb5745af0f7ab
  • Copia externa validada:
  • C:\APV\backups\openclaw\daily\20260531-014038
  • log local: C:\APV\backups\openclaw\logs\pull-openclaw-backups-20260531-014048.log
  • Git:
  • .env, *.tgz, SHA256SUMS, manifest.txt y logs siguen fuera del repo
  • RPO esperado:
  • 24 horas
  • RTO estimado:
  • mismo VPS: 30-45 minutos
  • VPS nuevo: 90-180 minutos

Evidencia viva de la certificacion final 2026-05-31

  • Safe point local:
  • git status -sb -> ## main...origin/main
  • git rev-parse HEAD -> e7c255532e70d4122bb182779838cd49ce0bb4e0
  • VPS:
  • hostname -> srv977009
  • uptime -> up 2 days, 11:24
  • Docker activo observado:
  • portainer -> Up 35 minutes
  • nginx-proxy-manager -> Up 2 days
  • openclaw-openclaw-gateway-1 -> Up About an hour (healthy)
  • Imagenes activas:
  • ghcr.io/openclaw/openclaw:2026.5.5
  • jc21/nginx-proxy-manager:latest
  • portainer/portainer-ce:2.39.2
  • Volumenes activos / conservados:
  • portainer_data_new
  • portainer_data como legado conservado
  • Redes activas:
  • proxy-network
  • nginx-proxy-manager_default
  • openclaw_openclaw_internal
  • portainer2_default como legado conservado sin contenedores
  • OpenClaw CLI:
  • modelo default: openai/gpt-5.5
  • provider efectivo: openai
  • auth profile presente: si
  • agente default: main
  • health --json -> ok: true
  • sesiones detectadas: 1
  • Smoke tests:
  • inferencia directa -> OpenClaw_OK
  • agente main -> OpenClaw_OK
  • HTTPS publico -> HTTP/2 200
  • gateway interno desde contenedor -> HTTP/1.1 200 OK
  • gateway interno desde NPM -> HTTP/1.1 200 OK
  • curl desde host a 127.0.0.1:18789 -> falla esperada porque el puerto no se publica al host
  • Validacion humana:
  • Portainer navegable: si
  • Containers visibles: si
  • Stacks visibles: si
  • Networks visibles: si
  • Volumes visibles: si
  • UI OpenClaw accesible: si
  • Pairing aprobado: si
  • Chat funcional: si

Evidencia viva de la auditoria 2026-05-29

  • git status -sb inicial: ## main...origin/main
  • Safe point inicial: 52eb755c9078b4c173f29d191c194f0b6bc46b85
  • uptime -p: up 20 hours, 58 minutes
  • Memoria: 7.8 GiB total, 1.2 GiB usada, 3.3 GiB libre, 3.6 GiB cache
  • Swap: 4.0 GiB, 0 B usada
  • Disco /: 96G total, 12G usados, 85G libres
  • Docker containers observados:
  • openclaw-openclaw-gateway-1 -> Up (healthy)
  • nginx-proxy-manager -> Up
  • portainer -> Up
  • ufw: active
  • fail2ban: active
  • ssh: active
  • HTTPS publico: HTTP 200
  • Control UI publica: titulo OpenClaw Control
  • Auth OpenAI validada para el agente main mediante api-key interactivo
  • openclaw models auth list --provider openai --json devuelve openai:default
  • openclaw models status ya no muestra Missing auth
  • Prueba funcional del agente: Respondé solamente: OpenClaw OK -> OpenClaw OK
  • Reinicio controlado de OpenClaw ejecutado el 2026-05-29 15:42 -03
  • Estado post-restart: healthy
  • Persistencia auth post-restart: OK

Evidencia viva de la auditoria Portainer 2026-05-31

  • Safe point local previo a la auditoria: d88acffeb66bf4c4323ea8d429263ac45084350a
  • docker.sock del host respondia OK via curl --unix-socket
  • Backup Portainer previo:
  • /root/portainer-backups/portainer-data-20260531-000206.tar.gz
  • sha256: 76864bc47ee015c2d6ccc9284151eb70ea255989e4e372cc0c51159f84c27c4c
  • Hallazgo clave:
  • la causa mas probable del DOWN visual era compatibilidad Portainer 2.33.1 con Docker 29.x

Evidencia viva de la modernizacion Portainer 2026-05-31

  • Safe point local antes del upgrade: 208914617dad0f9994a1d6139f9b983e9949ab7e
  • Version Portainer anterior por binario: 2.33.1
  • Imagen declarada antes del cambio: portainer/portainer-ce:latest
  • Version Portainer nueva por binario: 2.39.2
  • Imagen final fijada: portainer/portainer-ce:2.39.2
  • Digest final observado: portainer/portainer-ce@sha256:8d2f5c9fbc5b8490fb3a12efadbad74978e22991911e1db611d8a45871775112
  • Volumen preservado: portainer_data_new
  • Mount docker.sock preservado: si
  • Puertos host preservados: 8000 y 9443
  • Restart policy preservada: unless-stopped
  • Red preservada: proxy-network
  • Backup nuevo creado: /root/portainer-backups/portainer-data-20260531-001058.tar.gz
  • sha256 backup nuevo: b67c05ae7e95a5a7fc93738fdf78d9e950b1146770aebded85273da024c4326d
  • Validacion post-upgrade:
  • docker ps muestra portainer Up
  • docker exec portainer /portainer --version devuelve 2.39.2
  • curl -k -I https://127.0.0.1:9443 devuelve HTTP/1.1 200 OK
  • logs de arranque muestran migracion 2.33.1 -> 2.39.2
  • OpenClaw sigue running healthy
  • NPM sigue running
  • Alcance conservado:
  • sin cambios en OpenClaw
  • sin cambios en NPM
  • sin cambios en DNS
  • sin cambios en firewall
  • sin cambios en proxy hosts
  • sin borrado de volumenes

Evidencia viva de la auditoria Docker post-modernizacion 2026-05-31

  • Safe point local previo a la auditoria: 8af6e1b563157aa0d70d7287db2228cab8f653ce
  • Contenedores activos confirmados:
  • portainer -> portainer/portainer-ce:2.39.2
  • nginx-proxy-manager -> jc21/nginx-proxy-manager:latest
  • openclaw-openclaw-gateway-1 -> ghcr.io/openclaw/openclaw:2026.5.5
  • Validacion de uso real:
  • Portainer usa portainer_data_new y proxy-network
  • NPM usa bind mounts en /docker/nginx-proxy-manager/*
  • OpenClaw usa bind mounts en /opt/stacks/openclaw/*
  • Validacion de servicio:
  • curl -k -I https://127.0.0.1:9443 -> HTTP/1.1 200 OK
  • curl -I http://127.0.0.1:81 -> HTTP/1.1 200 OK
  • docker inspect -f '{{.State.Health.Status}}' openclaw-openclaw-gateway-1 -> healthy
  • curl -I https://openclaw.alpuntodeventa.com.ar -> HTTP/2 200
  • Limpieza segura ejecutada:
  • imagen alpine:latest eliminada
  • imagen portainer/portainer-ce:latest eliminada
  • Elementos conservados por seguridad:
  • volumen portainer_data como legado con datos propios
  • red portainer2_default como legado Compose sin contenedores
  • Hallazgo UI Portainer:
  • el stack portainer sigue visible por metadata persistida en portainer_data_new/_data/compose/2/docker-compose.yml
  • el contenedor activo ya no corre como Compose; corre standalone en proxy-network

Estado real del despliegue

Completado

  • VPS en GO operativo para OpenClaw
  • Hardening baseline cerrado con snapshot, updates, reboot y revalidacion
  • Docker operativo con aislamiento por stack
  • OpenClaw desplegado en /opt/stacks/openclaw
  • OpenClaw publicado detras de NPM
  • DNS, TLS, HSTS y carga base de la UI validados
  • Reinicio del contenedor validado con recuperacion sana
  • Portainer modernizado sin afectar OpenClaw ni NPM
  • VPS GOVERNANCE PLATFORM v1 creada como capa documental del VPS
  • Servicios base registrados:
  • svc-openclaw
  • svc-nginx-proxy-manager
  • svc-portainer
  • Governance v1 reforzada con trazabilidad tecnica completa:
  • por servicio
  • por uso compartido
  • Governance v2 agrega:
  • catalogo maestro de validacion
  • plantilla formal de tests
  • matriz de regresion por tipo de cambio
  • estado vivo de validacion
  • control tower ejecutivo
  • relaciones explicitas del knowledge graph entre SVC, NET, VOL, DOM, BKP y TEST
  • Operations & Security Platform v1 agrega:
  • control tower operativo
  • catalogo de monitoreo simple
  • baseline de performance
  • agenda de mantenimiento
  • politica de updates
  • politica de cleanup
  • estado de seguridad
  • checklist de seguridad
  • runbooks de vulnerabilidades y parchado
  • inventario de servicios expuestos
  • preguntas de admin e IA en lenguaje natural

Parcialmente completado

  • La validacion interactiva manual de la UI de Portainer no se automatizo en esta sesion; la verificacion directa disponible fue backend, logs y HTTPS local
  • TEST-WEBSOCKET-001 ya tuvo primera corrida formal; el transporte publico queda cerrado en PASS con handshake autenticado completo sobre un dispositivo aprobado real

Pendiente

  • Evaluar automatizacion de la descarga externa con Task Scheduler
  • Definir retencion adicional fuera del VPS segun capacidad del equipo operador
  • Ejecutar primera corrida formal de tests de updates, SSL y vulnerabilidades

Hallazgos principales

Hallazgo 1 - Auth OpenAI resuelta

  • Metodo aplicado: openclaw models auth --agent main login --provider openai --method api-key
  • Evidencia:
  • openclaw models auth list --provider openai --json devuelve openai:default
  • openclaw models status muestra profiles=1
  • openclaw agent --agent main --message "Respondé solamente: OpenClaw OK" --json responde OpenClaw OK

Hallazgo 2 - token_missing corresponde a acceso anonimo esperado

  • Evidencia HTTP:
  • GET /__openclaw/control-ui-config.json sin token -> 401
  • GET /__openclaw/control-ui-config.json con token -> 200

Hallazgo 3 - trustedProxies corregido

  • Correccion aplicada:
  • gateway.trustedProxies: ["172.18.0.3"]
  • 172.18.0.3 corresponde al contenedor nginx-proxy-manager

Hallazgo 4 - Portainer fue modernizado con procedimiento oficial conservador

  • Procedimiento aplicado:
  • backup previo del volumen real
  • docker pull portainer/portainer-ce:2.39.2
  • docker stop portainer
  • docker rm portainer
  • recreacion con mismo volumen, mismos puertos, mismo docker.sock, misma policy y misma red
  • Evidencia:
  • logs muestran migracion limpia de base 2.33.1 -> 2.39.2
  • HTTPS local en 9443 responde 200
  • la instancia final queda Up

Decision vigente

  • Infraestructura base: VERDE
  • Disaster Recovery: VERDE
  • Publicacion HTTPS: VERDE
  • Runtime OpenClaw: VERDE
  • OpenAI / agente main: VERDE
  • Control UI: VERDE
  • Portainer administracion: VERDE
  • Docker limpio: VERDE
  • NPM: VERDE
  • VPS: VERDE
  • Certificacion global: VERDE

Proximo objetivo unico recomendado

La plataforma ya queda verde tambien en operaciones, seguridad y monitoreo para su estado actual de produccion.

El siguiente paso unico recomendado es decidir y documentar el canal externo simple de O3 ahora que el drill O3.1 ya quedo demostrado sin ruido.

Riesgo actual resumido

  • Riesgo operativo: medio-bajo
  • Riesgo funcional: bajo
  • Riesgo de seguridad: medio
  • Riesgo de administracion Portainer: bajo

Justificacion

  • Operativo medio-bajo porque el stack recupera bien, el restart controlado fue exitoso y la auth persiste
  • Funcional bajo porque el caso de uso principal con OpenAI ya responde
  • Seguridad medio porque la UI publica sigue siendo una superficie administrativa expuesta a Internet
  • Administracion Portainer bajo porque la instancia ya corre 2.39.2, arranca limpia y responde por HTTPS sin haber afectado OpenClaw ni NPM