Change Packet Update Validation 001¶
Packet rector de la ventana real 2026-06-08 para Docker, Portainer,
OpenClaw y NPM.
Este documento conserva la evidencia PRE-UPDATE original y agrega el
resultado real de ejecucion:
Docker 29.5.2->PASSPortainer 2.39.3->PASSOpenClaw 2026.6.1->PASSNPM 2.15.1->PASS
0. Identificacion del packet¶
- change_packet_id:
CP-20260608-UPDATE-VALIDATION-001 - fecha de preparacion:
2026-06-08 - responsable:
Codex - tipo de cambio:
ventana real controlada de updates - ventana propuesta:
2026-06-08 - estado:
ACTUALIZADO CON RESULTADO REAL DE VENTANA - aprobacion:
APROBADO POR GABI PARA EJECUCION CONTROLADA - ejecucion:
EJECUTADO COMPLETO - decision vigente:
VERDE / VENTANA CERRADA
SAFE POINT obligatorio¶
git status -sb->## main...origin/mainM docs/governance/INDEX.md?? docs/governance/change-packets/2026-06-08-update-validation-change-packet.mdgit rev-parse HEAD->42cee5f84d773c82438e513f2834f755d7e1efa4
Observacion:
docs/governance/INDEX.mdya estaba modificado antes de esta corrida- este packet existia sin trackear antes de actualizar su contenido
Resultado ejecutivo de la ventana real¶
- backup reciente validado:
/root/openclaw-backups/daily/20260607-030001 - bundle Docker previo capturado:
docker.io 29.1.3-0ubuntu3~24.04.2containerd 2.2.1-0ubuntu1~24.04.2docker-buildx-plugin 0.34.1-1~ubuntu.24.04~nobledocker-compose-plugin 5.1.4-1~ubuntu.24.04~nobledocker-ce,docker-ce-cliycontainerd.iono estaban instalados- resultado por servicio:
Dockeractualizado a29.5.2, con recovery manual posterior dedocker.socketydocker.service, y smokePOSTenVERDEPortaineractualizado a2.39.3, contenedorrunning, upstream9443yHTTPSpublico enVERDEOpenClawactualizado a2026.6.1, conhealth,auth,HTTPS, handshake websocket y flujo autenticado websocket enVERDENPMactualizado a2.15.1, con admin81,5proxy hosts publicos,5upstreams internos, certificados y websocket enVERDE- baseline final dejado en el VPS:
Docker 29.5.2Portainer 2.39.3OpenClaw 2026.6.1NPM 2.15.1
Nota de lectura:
- las secciones
PRE-UPDATEconservadas mas abajo siguen siendo validas como evidencia previa - cualquier texto historico que diga
NO EJECUTAR TODAVIAqueda supersedido por este resultado ejecutivo y por la evidencia real de la ventana
1. Alcance PRE-UPDATE conservado¶
Las definiciones de esta seccion se preservan como trazabilidad del plan usado
antes de ejecutar la ventana real 2026-06-08.
- alcance:
preparar la primera corrida formal de los tests:
TEST-DOCKER-UPDATE-001,TEST-PORTAINER-UPDATE-001,TEST-OPENCLAW-UPDATE-001,TEST-NPM-UPDATE-001 - modo de trabajo de esta corrida:
revision documental + auditoria remota read-only + clasificacion de riesgo - fuera de alcance:
- ejecutar updates reales
- ejecutar
docker pull - ejecutar
docker compose pull - actualizar
Docker - actualizar
Portainer - actualizar
OpenClaw - actualizar
NPM - modificar configuraciones
- reiniciar servicios
- inventar evidencia faltante
2. Estado real final confirmado¶
- baseline global vigente:
VERDE - fuente documental releida:
CHANGE-GATES.md,UPDATE-SERVICE.md,catalog/TESTS.md, fichas desvc-openclaw,svc-nginx-proxy-manager,svc-portainer,catalog/BACKUPS.md - estado actual de los tests:
TEST-DOCKER-UPDATE-001->CERRADO / PASSTEST-PORTAINER-UPDATE-001->CERRADO / PASSTEST-OPENCLAW-UPDATE-001->CERRADO / PASSTEST-NPM-UPDATE-001->CERRADO / PASSTEST-WEBSOCKET-001->CERRADO / PASS- evidencia runtime fresca tomada:
2026-06-08 01:31:38 -03 - lectura operativa:
el
VPSquedo operativo con baseline finalDocker 29.5.2,Portainer 2.39.3,OpenClaw 2026.6.1yNPM 2.15.1
3. Exigencia de CHANGE-GATES¶
CHANGE-GATES.md exige responder una por una las 13 preguntas rectoras y,
si alguna da si, actualizar Governance dentro del mismo cierre.
Para esta corrida de auditoria, la respuesta actual es:
- ¿Creo o cambie un servicio?
no - ¿Agregue o cambie una red?
no - ¿Agregue o cambie un volumen o bind mount?
no - ¿Agregue o cambie un dominio?
no - ¿Agregue o cambie una configuracion de NPM o proxy?
no - ¿Agregue o cambie un puerto?
no - ¿Agregue o cambie un backup?
no - ¿Agregue o cambie un restore o runbook?
no - ¿Agregue o cambie un usuario tecnico?
no - ¿Agregue o cambie una dependencia?
no - ¿Agregue o cambie un uso de servicio compartido?
no - ¿Cambie datos criticos o persistencia?
no - ¿Agregue o cambie una validacion, un test o un criterio de regresion?
no
Conclusion:
- la ventana real no requirio cambios adicionales en
catalog/TESTS.md - si correspondio actualizar este packet,
VALIDATION-STATE.md,PROJECT-STATE.md,ROADMAP.mdy las fichas afectadas para reflejar el estado final real
4. Exigencia de UPDATE-SERVICE¶
UPDATE-SERVICE.md obliga a:
- abrir la ficha actual del servicio
- pasar por
CHANGE-GATES.md - actualizar estado, fecha de revision y evidencia afectada
- ajustar catalogos relacionados
- validar si cambia backup, restore, dependencia o salud
- revisar que no se haya filtrado un secreto
Regla de cierre:
- el cambio solo queda cerrado cuando Governance refleja el estado real nuevo
Conclusion para esta corrida:
- se cumplio la lectura
PRE-UPDATEy tambien la evidenciaPOST TEST-DOCKER-UPDATE-001,TEST-PORTAINER-UPDATE-001,TEST-OPENCLAW-UPDATE-001,TEST-NPM-UPDATE-001yTEST-WEBSOCKET-001quedaron cerrados enPASS
5. Comandos ejecutados¶
SAFE POINT local¶
git status -sbgit rev-parse HEAD
Relectura documental local¶
Get-Content -Raw docs/governance/CHANGE-GATES.mdGet-Content -Raw docs/governance/runbooks/UPDATE-SERVICE.mdGet-Content -Raw docs/governance/catalog/TESTS.mdGet-Content -Raw docs/governance/change-packets/2026-06-08-update-validation-change-packet.mdGet-Content -Raw docs/governance/services/svc-portainer.mdGet-Content -Raw docs/governance/services/svc-openclaw.mdGet-Content -Raw docs/governance/services/svc-nginx-proxy-manager.mdGet-Content -Raw docs/governance/catalog/BACKUPS.md
Conectividad y auditoria remota read-only¶
ssh -o BatchMode=yes openclaw-vps "echo ok"ssh openclaw-vps 'bash -s'con comandos de solo lectura para:date -Isdocker version --format '{{.Server.Version}}'docker info --format ...docker ps --format ...docker inspect openclaw-openclaw-gateway-1 --format ...docker exec openclaw-openclaw-gateway-1 sh -lc 'openclaw health --json'docker inspect portainer --format ...docker exec portainer /portainer --versiondocker inspect nginx-proxy-manager --format ...docker exec nginx-proxy-manager sh -lc "node -p 'require(\"/app/package.json\").version'"curl -sI http://127.0.0.1:81curl -sI https://openclaw.alpuntodeventa.com.ar/docker exec nginx-proxy-manager curl -sI http://openclaw-gateway:18789/docker exec nginx-proxy-manager curl -skI https://portainer:9443docker inspect nginx-proxy-manager --format ...docker exec nginx-proxy-manager nginx -vdocker exec nginx-proxy-manager certbot --versiondocker exec nginx-proxy-manager python3 --versiondocker exec nginx-proxy-manager node -e "<query SQLite /data/database.sqlite>"docker exec nginx-proxy-manager sed -n ... /data/nginx/proxy_host/*.confdocker exec nginx-proxy-manager openssl x509 -in /etc/letsencrypt/live/*/fullchain.pem ...docker exec nginx-proxy-manager grep -E ... /etc/letsencrypt/renewal/*.confdocker exec nginx-proxy-manager cat /app/global/certbot-dns-plugins.jsondocker exec nginx-proxy-manager ls -la /etc/letsencrypt/renewal-hooks/{pre,post,deploy}curl -skI https://portainer.alpuntodeventa.com.ar/curl -skI https://doc.alpuntodeventa.com.ar/curl -skI https://grafana.alpuntodeventa.com.ar/curl -skI https://developers.alpuntodeventa.com.ar/docker exec nginx-proxy-manager curl -skI http://knowledge-portal:8085/docker exec nginx-proxy-manager curl -skI http://grafana:3000/docker exec nginx-proxy-manager curl -skI http://scalar-sandbox:8080/find /root/openclaw-backups/daily ...stat -c ...find <backup-dir> -maxdepth 1 -type f -printf ...tar -tzf <backup-dir>/npm-stack.tgzcat /docker/nginx-proxy-manager/docker-compose.yml
Evidencia local adicional¶
Get-ChildItem -Force C:\APV\backups\openclaw
6. Evidencia PRE-UPDATE recolectada¶
6.1 Docker¶
- version actual observada:
29.1.3 - estado operativo:
Dockerresponde y sostiene los contenedores auditados enrunning - host relacionado:
Ubuntu 24.04.4 LTS, kernel6.8.0-124-generic, driveroverlay2,cgroup v2 - ubicacion documental:
docs/governance/knowledge/infrastructure/SERVICES-AND-DEPENDENCIES.md - dependencias criticas conocidas:
Runtime Host, disco, red, Docker daemon; de esta capa dependen
OpenClaw,NPM,Portainery observabilidad - backup disponible:
indirecto por corrida diaria
/root/openclaw-backups/daily/20260607-030001con artefactos deOpenClaw,NPM,Portainery observabilidad
6.2 Portainer¶
- version actual observada:
2.39.2 - imagen observada:
portainer/portainer-ce:2.39.2 - estado operativo:
status=running, sinhealthcheckDocker declarado - reachability:
docker exec nginx-proxy-manager curl -skI https://portainer:9443->HTTP/1.1 200 OK - backup disponible:
portainer-volume.tgzpresente en/root/openclaw-backups/daily/20260607-030001 - ubicacion documental:
docs/governance/services/svc-portainer.md - dependencias criticas conocidas:
Docker daemon,docker.sock, volumenportainer_data_new,svc-nginx-proxy-managersi se usa el dominio publicado
6.3 OpenClaw¶
- version actual observada:
2026.5.5 - imagen observada:
ghcr.io/openclaw/openclaw:2026.5.5 - estado operativo:
status=running,health=healthy - health funcional:
openclaw health --json->ok: true,defaultAgentId: main,sessions.count: 1 - reachability publica:
curl -sI https://openclaw.alpuntodeventa.com.ar/->HTTP/2 200 - backup disponible:
openclaw-stack.tgzpresente en/root/openclaw-backups/daily/20260607-030001 - ubicacion documental:
docs/governance/services/svc-openclaw.md - dependencias criticas conocidas:
svc-nginx-proxy-manager, providerOpenAI,proxy-network, binds deconfig,workspaceyauth-profile-secrets - observacion operativa:
el
healthreportaeventLoop.degraded=trueporevent_loop_utilizationycpu, aunque el veredicto general del comando sigue enok: true
6.4 Nginx Proxy Manager¶
- version actual observada:
2.12.6 - imagen observada:
jc21/nginx-proxy-manager:latest - version interna de runtime observada:
2.12.6 (356eaa0),OpenResty 1.27.1.2,debian 12 bookworm,Certbot 4.1.1,Python 3.11.2 - estado operativo:
status=running, sinhealthcheckDocker declarado - mounts observados:
/docker/nginx-proxy-manager/data -> /data/docker/nginx-proxy-manager/letsencrypt -> /etc/letsencrypt- admin local:
curl -sI http://127.0.0.1:81->HTTP/1.1 200 OK - upstream OpenClaw:
docker exec nginx-proxy-manager curl -sI http://openclaw-gateway:18789/->HTTP/1.1 200 OK - upstream Portainer:
docker exec nginx-proxy-manager curl -skI https://portainer:9443->HTTP/1.1 200 OK - upstreams adicionales observados:
knowledge-portal:8085->HTTP/1.1 200 OKgrafana:3000->HTTP/1.1 302 Foundscalar-sandbox:8080->HTTP/1.1 200 OK- proxy hosts configurados y renderizados:
openclaw.alpuntodeventa.com.ar -> openclaw-gateway:18789portainer.alpuntodeventa.com.ar -> portainer:9443doc.alpuntodeventa.com.ar -> knowledge-portal:8085grafana.alpuntodeventa.com.ar -> grafana:3000developers.alpuntodeventa.com.ar -> scalar-sandbox:8080- reachability publica adicional:
https://portainer.alpuntodeventa.com.ar/->HTTP/2 200https://doc.alpuntodeventa.com.ar/->HTTP/2 200https://grafana.alpuntodeventa.com.ar/->HTTP/2 302 /loginhttps://developers.alpuntodeventa.com.ar/->HTTP/2 200- certificados activos observados:
npm-2->portainer.alpuntodeventa.com.ar, vence2026-08-30npm-3->openclaw.alpuntodeventa.com.ar, vence2026-08-27npm-4->doc.alpuntodeventa.com.ar, vence2026-08-30npm-5->grafana.alpuntodeventa.com.ar, vence2026-08-30npm-6->developers.alpuntodeventa.com.ar, vence2026-08-31- challenge y renovacion observados:
- todos los certificados activos usan
authenticator = webroot - todos los registros de
certificate.metamuestrandns_challenge=false - en
renewal/*.confaparecenpref_challs = dns-01, http-01paranpm-3,npm-4ynpm-6, pero no hay evidencia de un DNS challenge realmente activo en runtime - plugins DNS observados:
- la imagen incluye el manifiesto generico
/app/global/certbot-dns-plugins.json - no aparecio evidencia de plugins DNS instalados o configurados para uso real en los certificados activos
renewal-hooks/pre,postydeployestan vacios- backup disponible:
npm-stack.tgzpresente en/root/openclaw-backups/daily/20260607-030001 - artefactos incluidos en
npm-stack.tgz:docker-compose.yml,data/database.sqlite,data/keys.json,data/nginx/proxy_host/*.conf,letsencrypt/live/*,letsencrypt/renewal/*.conf,letsencrypt/archive/*,letsencrypt/accounts/* - ubicacion documental:
docs/governance/services/svc-nginx-proxy-manager.md - dependencias criticas conocidas:
DNS publico,
Let's Encrypt,proxy-network, reachability a backends y bindsdata/+letsencrypt/
6.5 Evidencia de backup disponible¶
- ultima corrida observada:
/root/openclaw-backups/daily/20260607-030001 mtimedel directorio:2026-06-07 03:00:29.574896685 -0300- artefactos observados:
SHA256SUMSmanifest.txtnpm-stack.tgzopenclaw-stack.tgzportainer-volume.tgzobservability-stack.tgzobs-prometheus-volume.tgzobs-grafana-volume.tgzobs-alertmanager-volume.tgz- evidencia externa local:
C:\APV\backups\openclaw\existe con carpetasdailyylogs
7. Release notes oficiales revisadas¶
Fecha de consulta:
2026-06-08
Fuentes y lectura aplicada:
- Docker Engine
29.x:https://docs.docker.com/engine/release-notes/29/ - Portainer releases:
https://github.com/portainer/portainer/releasesy release2.39.3 - OpenClaw releases:
https://github.com/openclaw/openclaw/releasesy release2026.6.1 - Nginx Proxy Manager releases:
https://github.com/NginxProxyManager/nginx-proxy-manager/releasesy releasev2.15.1
7.1 Docker 29.x¶
- actual:
29.1.3 - ultima estable observada:
29.5.2publicada el2026-05-20 - lectura relevante:
29.5.1publicada el2026-05-18corrige multiples vulnerabilidades endocker cp, incluyendo ejecucion arbitraria con privilegios de host root y redireccion de bind mounts al filesystem del host29.5.2corrige una regresion introducida en29.5.1paradocker cpcon bind mounts y symlinks internos29.5.0agrega cambios de runtime, entre ellos nuevo driver por defecto rootless y namespace de tiempo privado por defecto en kernels compatibles- lectura operativa:
el valor principal del salto
29.1.3 -> 29.5.2es seguridad dentro de la misma rama mayor
7.2 Portainer¶
- actual:
2.39.2 - ultima estable observada:
2.39.3 LTSpublicada el2026-06-03 - correccion importante:
la hipotesis inicial de "ya esta en ultima version" ya no aplica al
2026-06-08; la ultima estable es2.39.3, no2.39.2 - lectura relevante:
2.39.2publicada el2026-05-07corrige problemas de permisos, dashboard, visibilidad de contenedores y varias vulnerabilidades2.39.3agrega fixes de seguridad y estabilidad, incluyendo un SSRF en GitLab Registry Proxy, una falla de escalacion de acceso por equipos, actualizaciones de dependencias Go y fixes menores de operacion- lectura operativa:
es un patch
LTSde bajo salto, pero sigue siendo componente administrativo con privilegio alto sobre Docker
7.3 OpenClaw¶
- actual:
2026.5.5 - ultima estable observada:
2026.6.1publicada el2026-06-03 - lectura relevante:
- el release trae cambios amplios en runtime, Control UI, Skills, plugins, auth y persistencia en SQLite
- hay mejoras explicitas de recuperacion de sesiones, llamadas de tools, auth profiles, plugin install index y rutas WebSocket/mobile
- el release menciona hardening en config, limites y validaciones de runtime
- lectura operativa:
no parece un patch menor. El salto toca justo las superficies mas sensibles
para este VPS:
health,auth,HTTPS,Control UIywebsocket
7.4 Nginx Proxy Manager¶
- actual:
2.12.6 - ultima estable observada:
2.15.1publicada el2026-06-03 - lectura relevante:
2.15.0advierte expresamente un cambio mayor de base:Debian Trixie,OpenResty,CertbotyPythonactualizados- el mismo release pide cautela porque plugins DNS de
Certbotpueden dejar de funcionar o requerir ajustes 2.15.0tambien corrige CVEs deOpenResty2.15.1agrega dos fixes rapidos: vuelve aLua 5.1.5y corrige el caso de archivos internos de nginx sobremontados- lectura operativa:
es el salto con mayor riesgo transversal porque
NPMes el unico frente publico deOpenClawyPortainer
8. Tabla de decision preliminar¶
| Servicio | Actual | Objetivo recomendado | Motivo | Riesgo | Requiere update real | Recomendacion |
|---|---|---|---|---|---|---|
| Docker | 29.1.3 |
29.5.2 |
misma rama 29.x con fixes de seguridad relevantes y fix de regresion en 29.5.2 |
medio-alto |
si |
GO CANDIDATO |
| Portainer | 2.39.2 |
2.39.3 |
patch LTS nuevo con fixes de seguridad y estabilidad; 2.39.2 ya no es latest al 2026-06-08 |
medio |
si |
GO CANDIDATO |
| OpenClaw | 2026.5.5 |
2026.6.1 |
ultima estable con mejoras de runtime, auth, sesiones y UI, pero el salto toca superficies funcionales criticas | medio-alto |
si |
GO CANDIDATO |
| Nginx Proxy Manager | 2.12.6 |
2.15.1 |
hay gap real y fixes de seguridad; la evidencia nueva baja el riesgo de plugins DNS porque los certificados activos estan en webroot y dns_challenge=false |
alto |
si |
GO CANDIDATO |
9. Decision preliminar por servicio¶
9.1 Docker¶
- clasificacion:
GO - recomendacion:
conviene actualizar dentro de la rama
29.xy fijar como target29.5.2, con pin exacto deaptparadocker-ceydocker-ce-cli - motivo:
el gap no es cosmetico;
29.5.1corrige vulnerabilidades serias y29.5.2corrige la regresion inmediata de ese mismo tren - package pin exacto requerido:
docker-ce=5:29.5.2-1~ubuntu.24.04~nobledocker-ce-cli=5:29.5.2-1~ubuntu.24.04~noble- origen oficial:
- repo
aptoficial de Docker:https://download.docker.com/linux/ubuntu - artefactos exactos observados en
noble/stable amd64:dists/noble/pool/stable/amd64/docker-ce_29.5.2-1~ubuntu.24.04~noble_amd64.debdists/noble/pool/stable/amd64/docker-ce-cli_29.5.2-1~ubuntu.24.04~noble_amd64.deb
- prerequisitos oficiales:
- host
Ubuntu Noble 24.04 LTSamd64 - repo oficial de Docker configurado con su clave GPG
- remover paquetes conflictivos si existieran:
docker.io,docker-compose,docker-compose-v2,docker-doc,podman-docker,containerd,runc - considerar la advertencia oficial de firewall:
Dockersolo es compatible coniptables-nftoiptables-legacy; reglas creadas connftpuro no estan soportadas - dependencias asociadas segun metadata oficial:
docker-cedepende de:containerd.io (>= 1.7.27),docker-ce-cli,iptables,nftables,libc6 (>= 2.34),libnftables1 (>= 1.0.2),libsystemd0docker-ce-clidepende de:libc6 (>= 2.34)docker-ce-clirecomienda:docker-buildx-plugin,docker-compose-plugin- compatibilidad observada desde fuentes oficiales:
- el salto
29.1.3 -> 29.5.2se mantiene en la misma rama mayor29.x - no hay nota oficial que declare ruptura de Compose file format para
29.5.2; la especificacion Compose actual sigue siendo la recomendada y esta implementada por Compose v2 - el principal cambio tecnico intermedio aparece en
29.5.0: namespace de tiempo privado por defecto en kernels compatibles y cambio del driver de red rootless por defecto - riesgo principal: cualquier cambio pega a todo el runtime Docker del VPS
- riesgos concretos de downgrade:
29.0.0introdujo soporte de asignacion de subred desde pools por defecto; si se downgradea a una version sin ese soporte, la red queda inutilizable y debe borrarse y recrearse29.0.0actualizocontainerda2.1.5; el cambio reduce elulimit -npor defecto de1048576a1024, por lo que una ida y vuelta de versiones puede modificar el comportamiento de cargas sensibles anofile- si no se captura el bundle exacto pre-cambio de
containerd.io,docker-buildx-pluginydocker-compose-plugin, el rollback de paquetes auxiliares pierde reproducibilidad exacta aunque el pin del engine quede documentado - pruebas minimas pre:
- backup reciente confirmado
docker versiondocker psTEST-OPENCLAW-HTTPS-001TEST-NPM-HTTPS-001TEST-PORTAINER-HTTPS-001- pruebas minimas post:
docker versiondocker psTEST-OPENCLAW-HEALTH-001TEST-OPENCLAW-HTTPS-001TEST-NPM-UPSTREAM-001TEST-NPM-HTTPS-001TEST-PORTAINER-HTTPS-001- rollback esperado:
reinstalar desde el repo oficial la version especifica anterior usando el
mismo mecanismo documentado por Docker para instalar una version concreta,
mas revalidacion inmediata de
docker version,docker psy reachability base antes de tocar capas superiores
9.2 Portainer¶
- clasificacion:
GO CANDIDATO - recomendacion:
no corresponde
SKIP JUSTIFICADO; al2026-06-08ya existe2.39.3 LTScomo ultima estable y es mejor target que2.39.2 - motivo: el salto es corto y trae fixes de seguridad sobre un servicio administrativo
- riesgo principal:
usa
docker.sock, asi que cualquier regresion afecta la consola de admin - pruebas minimas pre:
- backup
portainer-volume.tgzreciente docker exec portainer /portainer --versiondocker exec nginx-proxy-manager curl -skI https://portainer:9443- pruebas minimas post:
docker exec portainer /portainer --versiondocker exec nginx-proxy-manager curl -skI https://portainer:9443TEST-PORTAINER-HTTPS-001- rollback esperado:
restore de
portainer-volume.tgzy vuelta a imagen anterior si la UI no vuelve por9443
9.3 OpenClaw¶
- clasificacion:
GO CANDIDATO - recomendacion:
el target recomendado es
2026.6.1, pero solo con ventana controlada y checklist funcional ampliado - motivo:
el release toca auth, sesiones, runtime, Control UI y rutas asociadas al
comportamiento de
websocket - riesgo principal:
una regresion puede dejar
healthen verde parcial pero romper auth, UI o flujowss - pruebas minimas pre:
- backup
openclaw-stack.tgzreciente openclaw health --jsonTEST-OPENCLAW-HTTPS-001TEST-OPENCLAW-AUTH-001TEST-WEBSOCKET-001- pruebas minimas post:
TEST-OPENCLAW-HEALTH-001TEST-OPENCLAW-HTTPS-001TEST-OPENCLAW-AUTH-001TEST-WEBSOCKET-001TEST-NPM-UPSTREAM-001- rollback esperado:
restore de
openclaw-stack.tgzy vuelta a imagen2026.5.5si fallahealth,auth,HTTPSowebsocket
9.4 Nginx Proxy Manager¶
- clasificacion:
GO CANDIDATO - recomendacion:
el target recomendado pasa a
2.15.1, pero solo dentro de una ventana controlada y con smoke ampliado sobre los5proxy hosts vigentes - motivo:
la release
2.15.0marca un cambio mayor de base, pero la evidencia actual muestra certificados activos porLet's Encryptcondns_challenge=false,authenticator=webroot, hooks vacios y sin evidencia de plugins DNS en uso - riesgo principal:
sigue siendo el punto unico de entrada publica y cualquier falla afecta
HTTPS, certificados y reachability no solo deOpenClawyPortainer, sino tambien dedoc,grafanaydevelopers - pruebas minimas pre:
- backup
npm-stack.tgzreciente TEST-NPM-HTTPS-001TEST-NPM-UPSTREAM-001TEST-OPENCLAW-HTTPS-001curl -I https://portainer.alpuntodeventa.com.ar/curl -I https://doc.alpuntodeventa.com.ar/curl -I https://grafana.alpuntodeventa.com.ar/curl -I https://developers.alpuntodeventa.com.ar/- pruebas minimas post:
TEST-NPM-HTTPS-001TEST-NPM-UPSTREAM-001TEST-OPENCLAW-HTTPS-001TEST-PORTAINER-HTTPS-001curl -I https://doc.alpuntodeventa.com.ar/curl -I https://grafana.alpuntodeventa.com.ar/curl -I https://developers.alpuntodeventa.com.ar/- verificacion de carga SSL y logs de renovacion/certbot sin error visible
- rollback esperado:
restore de
npm-stack.tgzy vuelta a imagen previa si fallaHTTPS, upstream o certificados
NPM PRE-DECISION evidence¶
- hallazgos:
- la version realmente corriendo sigue siendo
2.12.6, aunque el compose actual esta atado ajc21/nginx-proxy-manager:latest - el runtime actual usa
debian 12 bookworm,OpenResty 1.27.1.2,Certbot 4.1.1yPython 3.11.2 - hay
5proxy hosts activos y todos responden en el smoke actual:openclaw,portainer,doc,grafanaydevelopers - todos los certificados activos observados son
Let's Encrypty vencen entre2026-08-27y2026-08-31 - la SQLite muestra
dns_challenge=falseen todos los certificados activos y los archivosrenewal/*.confusanauthenticator = webroot - no aparecio evidencia de plugins DNS instalados ni hooks custom de
renovacion en uso real; lo unico observado es el manifiesto generico
/app/global/certbot-dns-plugins.jsonque trae la imagen - no hay overmount de archivos internos de nginx; los unicos binds vigentes
son
./data:/datay./letsencrypt:/etc/letsencrypt - el backup
npm-stack.tgzcubre compose, SQLite, configs renderizados, cuentas ACME, certificados live, renewal y archive - riesgos:
v2.15.0cambia base image aDebian Trixiey actualizaOpenResty,CertbotyPython; el salto no es cosmetico- NPM concentra hoy
5dominios publicos; una regresion no impactaria solo aOpenClawyPortainer - el uso de
latesten compose aumenta el riesgo de drift si el contenedor se recrea fuera de una ventana controlada - la fix de
v2.15.1sobre internal nginx conf over-mounted no parece dirigida a este runtime porque no existe ese patron de montaje - no hay evidencia
post-update; la compatibilidad de datos persistidos queda inferida por backup completo y por que las notas dev2.15.0mencionan fix de SQLite, no ruptura declarada - evidencia faltante:
- no falta evidencia
pre-updatecritica para decidir - sigue faltando la evidencia
post-updatede una ventana real - queda pendiente verificar en la misma ventana que cargan bien los
5hosts, los certificados y los logs decertbot - recomendacion final:
GO CANDIDATO
10. Riesgos concentrados¶
Docker: riesgo transversal sobre todos los contenedores; aun asi el salto dentro de29.xtiene buen argumento de seguridadPortainer: riesgo operativo medio; componente admin con privilegio alto, pero el salto a2.39.3es corto y bien justificadoOpenClaw: riesgo funcional medio-alto; la decision depende de repetir en la misma ventanahealth + auth + HTTPS + websocketNPM: riesgo alto, pero ya no queda bloqueado por falta de evidencia pre-update; el riesgo real ahora es de ejecucion y radio de impacto sobre5dominios
11. Evidencia faltante despues de la ventana¶
Docker: falta solo evidenciapost-updatede una ventana realPortainer: falta solo evidenciapost-updatede una ventana realOpenClaw: falta refrescarauthywebsocketen la misma ventana del cambio realNPM: falta solo evidenciapost-updatede una ventana real con smoke ampliado sobreopenclaw,portainer,doc,grafana,developersy logs SSL
Estado final de los tests de update:
TEST-DOCKER-UPDATE-001->CERRADO / PASSTEST-PORTAINER-UPDATE-001->CERRADO / PASSTEST-OPENCLAW-UPDATE-001->CERRADO / PASSTEST-NPM-UPDATE-001->CERRADO / PASSTEST-WEBSOCKET-001->CERRADO / PASS
12. Recomendacion operativa unica¶
- proximo paso unico recomendado:
sostener el baseline final
Docker 29.5.2,Portainer 2.39.3,OpenClaw 2026.6.1yNPM 2.15.1, dejando el drift detrustedProxiescomo mejora no bloqueante para una ventana aparte
13. Plan PRE-UPDATE conservado¶
Esta seccion conserva el plan usado antes de la ejecucion real
2026-06-08. Queda como trazabilidad historica y no como instruccion vigente
de reejecucion automatica.
Reglas de esta ventana preparada:
NO ejecutar todaviaNO ejecutar docker pullNO reiniciar servicios fuera de la ventana aprobadaNO cambiar runtime fuera del objetivo documentadoNO modificar certificadosNO renovar SSL- aprobacion final obligatoria:
autorizacion explicita de Gabiantes del primer comando mutante
13.1 Orden recomendado¶
Docker-> objetivo29.5.2Portainer-> objetivo2.39.3OpenClaw-> objetivo2026.6.1Nginx Proxy Manager-> objetivo2.15.1
Motivo del orden:
Dockerprimero porque sostiene el runtime base de todos los contenedoresPortainersegundo porque depende deDocker, pero no expone el frente publico principal del negocioOpenClawtercero porque depende deDockery deNPM, y su validacion funcional requiere comprobarhealth,auth,HTTPSywebsocketNPMultimo porque es el frente publicoHTTPSy cualquier falla impactaopenclaw,portainer,doc,grafanaydevelopers
13.2 GO / NO-GO previo a la ventana¶
Para pasar a GO, todos estos puntos deben quedar en si:
- backup reciente confirmado para
openclaw-stack.tgz,npm-stack.tgzyportainer-volume.tgz - versiones objetivo exactas fijadas por servicio
- release notes oficiales revisadas para cada target
- smoke
PREbase en verde - rollback claro y documentado por servicio
- autorizacion explicita final de
Gabi
Criterios NO-GO:
- falta backup reciente
- versiones objetivo no fijadas
- release notes no revisadas
- smoke
PREfalla - no existe rollback claro
- falta autorizacion explicita final de
Gabi
13.3 Checks PRE inmediatos¶
Checks globales obligatorios antes del primer update:
ssh openclaw-vps "date -Is"ssh openclaw-vps "docker version"ssh openclaw-vps "docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Image}}'"ssh openclaw-vps "docker info --format 'ServerVersion={{.ServerVersion}} Driver={{.Driver}} CgroupVersion={{.CgroupVersion}}'"ssh openclaw-vps "find /root/openclaw-backups/daily -maxdepth 1 -mindepth 1 -type d | sort | tail -n 1"ssh openclaw-vps "stat -c '%n %y' /root/openclaw-backups/daily/<timestamp-pendiente>"ssh openclaw-vps "ls -lh /root/openclaw-backups/daily/<timestamp-pendiente>/openclaw-stack.tgz /root/openclaw-backups/daily/<timestamp-pendiente>/npm-stack.tgz /root/openclaw-backups/daily/<timestamp-pendiente>/portainer-volume.tgz"ssh openclaw-vps "sha256sum /root/openclaw-backups/daily/<timestamp-pendiente>/openclaw-stack.tgz /root/openclaw-backups/daily/<timestamp-pendiente>/npm-stack.tgz /root/openclaw-backups/daily/<timestamp-pendiente>/portainer-volume.tgz"
Checks PRE funcionales inmediatos:
ssh openclaw-vps "docker exec openclaw-openclaw-gateway-1 sh -lc 'openclaw health --json'"ssh openclaw-vps "docker exec openclaw-openclaw-gateway-1 sh -lc 'openclaw agent --agent main --message \"Respondé solamente: OpenClaw OK\" --json'"ssh openclaw-vps "docker exec nginx-proxy-manager curl -sI http://openclaw-gateway:18789/"ssh openclaw-vps "docker exec nginx-proxy-manager curl -skI https://portainer:9443"ssh openclaw-vps "curl -sI http://127.0.0.1:81"ssh openclaw-vps "curl -skI https://openclaw.alpuntodeventa.com.ar/"ssh openclaw-vps "curl -skI https://portainer.alpuntodeventa.com.ar/"ssh openclaw-vps "curl -skI https://doc.alpuntodeventa.com.ar/"ssh openclaw-vps "curl -skI https://grafana.alpuntodeventa.com.ar/"ssh openclaw-vps "curl -skI https://developers.alpuntodeventa.com.ar/"
Check PRE adicional de websocket:
- usar el mismo metodo ya documentado por
TEST-WEBSOCKET-001 - si no se puede repetir el flujo autenticado completo en esa ventana, dejar
el punto como
PENDIENTEy no ejecutar el update deOpenClaw
13.4 Comandos propuestos por servicio¶
Docker¶
Objetivo exacto:
29.5.2- package pin de
apt:docker-ce=5:29.5.2-1~ubuntu.24.04~nobledocker-ce-cli=5:29.5.2-1~ubuntu.24.04~noble
Paquetes asociados desde el mismo origen oficial:
- repo:
https://download.docker.com/linux/ubuntu - dependencia requerida:
containerd.io (>= 1.7.27) - paquetes recomendados:
docker-buildx-plugin,docker-compose-plugin
Bundle reproducible recomendado a relevar en la misma ventana antes del primer comando mutante:
dpkg-query -W docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginapt-cache madison docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Observacion importante:
- la documentacion oficial de Ubuntu para Docker fija de forma explicita el
VERSION_STRINGdedocker-ceydocker-ce-cli; no publica un lockstep obligatorio unico paracontainerd.io,buildxycompose-plugin - por eso el pin exacto obligatorio para
29.5.2queda cerrado en engine y CLI, mientras que el bundle auxiliar debe capturarse en el host antes del cambio para preservar rollback exacto
Comandos de preparacion y ejecucion propuesta:
ssh openclaw-vps "apt-cache madison docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin"ssh openclaw-vps "sudo apt-mark showhold"ssh openclaw-vps "sudo apt-get update"ssh openclaw-vps "dpkg-query -W docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin"ssh openclaw-vps \"sudo apt-get install -y docker-ce=5:29.5.2-1~ubuntu.24.04~noble docker-ce-cli=5:29.5.2-1~ubuntu.24.04~noble containerd.io docker-buildx-plugin docker-compose-plugin\"
Portainer¶
Objetivo exacto:
portainer/portainer-ce:2.39.3
Comandos de preparacion y ejecucion propuesta:
ssh openclaw-vps "docker inspect portainer --format '{{.Image}} {{.HostConfig.RestartPolicy.Name}} {{range .Mounts}}{{.Name}} {{.Destination}} {{end}}'"ssh openclaw-vps "docker image inspect portainer/portainer-ce:2.39.2 --format '{{.RepoTags}}'"ssh openclaw-vps "cd /root && docker stop portainer && docker rm portainer && docker run -d --name portainer --restart unless-stopped --network proxy-network -p 8000:8000 -p 9443:9443 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data_new:/data portainer/portainer-ce:2.39.3"
OpenClaw¶
Objetivo exacto:
ghcr.io/openclaw/openclaw:2026.6.1
Comandos de preparacion y ejecucion propuesta:
ssh openclaw-vps "cd /opt/stacks/openclaw && grep -n 'ghcr.io/openclaw/openclaw' docker-compose.yml"ssh openclaw-vps "cd /opt/stacks/openclaw && cp docker-compose.yml docker-compose.yml.pre-update-2026-06-08"ssh openclaw-vps "cd /opt/stacks/openclaw && sed -i 's#ghcr.io/openclaw/openclaw:2026.5.5#ghcr.io/openclaw/openclaw:2026.6.1#' docker-compose.yml"ssh openclaw-vps "cd /opt/stacks/openclaw && docker compose up -d"
Nginx Proxy Manager¶
Objetivo exacto:
jc21/nginx-proxy-manager:2.15.1
Comandos de preparacion y ejecucion propuesta:
ssh openclaw-vps "cd /docker/nginx-proxy-manager && grep -n 'image:' docker-compose.yml"ssh openclaw-vps "cd /docker/nginx-proxy-manager && cp docker-compose.yml docker-compose.yml.pre-update-2026-06-08"ssh openclaw-vps "cd /docker/nginx-proxy-manager && sed -i 's#jc21/nginx-proxy-manager:latest#jc21/nginx-proxy-manager:2.15.1#' docker-compose.yml"ssh openclaw-vps "cd /docker/nginx-proxy-manager && docker compose up -d"
Observacion:
- en
NPMhay un pendiente estructural previo: el compose actual sigue usandolatest - la ventana real debe fijar
2.15.1antes de cerrar el cambio
13.5 Checks POST por servicio¶
Docker POST¶
ssh openclaw-vps "docker version"ssh openclaw-vps "docker ps --format 'table {{.Names}}\t{{.Status}}\t{{.Image}}'"ssh openclaw-vps "docker info --format 'ServerVersion={{.ServerVersion}} Driver={{.Driver}} CgroupVersion={{.CgroupVersion}}'"
Portainer POST¶
ssh openclaw-vps "docker ps --filter name=^/portainer$ --format 'table {{.Names}}\t{{.Status}}\t{{.Image}}'"ssh openclaw-vps "docker exec portainer /portainer --version"ssh openclaw-vps "docker exec nginx-proxy-manager curl -skI https://portainer:9443"ssh openclaw-vps "curl -skI https://portainer.alpuntodeventa.com.ar/"
OpenClaw POST¶
ssh openclaw-vps "docker ps --filter name=openclaw-openclaw-gateway-1 --format 'table {{.Names}}\t{{.Status}}\t{{.Image}}'"ssh openclaw-vps "docker exec openclaw-openclaw-gateway-1 sh -lc 'openclaw health --json'"ssh openclaw-vps "docker exec openclaw-openclaw-gateway-1 sh -lc 'openclaw agent --agent main --message \"Respondé solamente: OpenClaw OK\" --json'"ssh openclaw-vps "docker exec nginx-proxy-manager curl -sI http://openclaw-gateway:18789/"ssh openclaw-vps "curl -skI https://openclaw.alpuntodeventa.com.ar/"TEST-WEBSOCKET-001repetido en la misma ventana
NPM POST¶
ssh openclaw-vps "docker ps --filter name=^/nginx-proxy-manager$ --format 'table {{.Names}}\t{{.Status}}\t{{.Image}}'"ssh openclaw-vps "docker exec nginx-proxy-manager sh -lc \"node -p 'require(\\\"/app/package.json\\\").version'\""ssh openclaw-vps "curl -sI http://127.0.0.1:81"ssh openclaw-vps "docker exec nginx-proxy-manager curl -sI http://openclaw-gateway:18789/"ssh openclaw-vps "docker exec nginx-proxy-manager curl -skI https://portainer:9443"ssh openclaw-vps "docker exec nginx-proxy-manager curl -sI http://knowledge-portal:8085/"ssh openclaw-vps "docker exec nginx-proxy-manager curl -sI http://grafana:3000/login"ssh openclaw-vps "docker exec nginx-proxy-manager curl -sI http://scalar-sandbox:8080/"ssh openclaw-vps "curl -skI https://openclaw.alpuntodeventa.com.ar/"ssh openclaw-vps "curl -skI https://portainer.alpuntodeventa.com.ar/"ssh openclaw-vps "curl -skI https://doc.alpuntodeventa.com.ar/"ssh openclaw-vps "curl -skI https://grafana.alpuntodeventa.com.ar/"ssh openclaw-vps "curl -skI https://developers.alpuntodeventa.com.ar/"ssh openclaw-vps "docker exec nginx-proxy-manager sh -lc 'ls -1 /etc/letsencrypt/live && grep -R \"authenticator =\\|pref_challs =\" /etc/letsencrypt/renewal/*.conf'"
13.6 Smoke test global posterior¶
Smoke global obligatorio al terminar la ventana:
Dockerdocker versiondocker psdocker infobasicoPortainer- contenedor
running - upstream interno
9443responde200 HTTPSpublico responde200OpenClawhealthokHTTPSpublico responde200- auth basica validada
websocketvalidado si se puede repetir el flujo documentadoNPM- admin local
81responde200 5proxy hosts publicos responden5upstreams internos responden- certificados visibles y vigentes
Mapa minimo de 5 proxy hosts publicos a validar:
openclaw.alpuntodeventa.com.arportainer.alpuntodeventa.com.ardoc.alpuntodeventa.com.argrafana.alpuntodeventa.com.ardevelopers.alpuntodeventa.com.ar
Mapa minimo de 5 upstreams internos a validar:
openclaw-gateway:18789portainer:9443knowledge-portal:8085grafana:3000scalar-sandbox:8080
13.7 Rollback por servicio¶
Docker rollback¶
- validacion documental:
la documentacion oficial de Docker para Ubuntu no tiene un runbook separado
de downgrade; el procedimiento soportado y documentado es instalar una
version especifica del engine desde el repo
aptoficial - procedimiento oficial de downgrade documentado para esta ventana:
- frenar la ventana y no continuar con
Portainer,OpenClawniNPM - relevar versiones instaladas y disponibles:
dpkg-query -W docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginyapt-cache madison docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin - reinstalar la version objetivo anterior con
apt installusando version explicita paradocker-ceydocker-ce-cli, mas los paquetes asociados desde el mismo repo oficial - revalidar de inmediato:
docker version,docker ps,docker info,TEST-OPENCLAW-HTTPS-001,TEST-NPM-HTTPS-001,TEST-PORTAINER-HTTPS-001 - compatibilidad hacia atras esperada:
- volver de
29.5.2a29.1.3sigue dentro de la rama mayor29.x - no hay advertencia oficial de ruptura de Compose file format en este salto
- la limitacion explicita encontrada afecta redes creadas con la nueva capacidad de asignacion de subred desde pools por defecto: si se cae a una version sin soporte, la red debe borrarse y recrearse
- limite documentado:
- el repo no tenia hasta esta corrida un runbook especifico de rollback de
Docker Engine - Docker no publica un bundle fijo y obligatorio de
containerd.io,buildxycompose-pluginpara29.5.2; si esos paquetes no se capturan antes del cambio, el rollback exacto queda parcial - accion segura minima si falla:
no tocar
Portainer,OpenClawniNPM; estabilizar engine y revalidardocker version,docker psy reachability base
Portainer rollback¶
- volver a imagen anterior:
portainer/portainer-ce:2.39.2 - si el estado no recupera:
restaurar
portainer-volume.tgzsobreportainer_data_new - base documental:
docs/governance/runbooks/RESTORE-PORTAINER.md
OpenClaw rollback¶
- volver a imagen anterior:
ghcr.io/openclaw/openclaw:2026.5.5 - volver a
docker-compose.yml.pre-update-2026-06-08si fue creado en la misma ventana - si el estado no recupera:
restaurar
openclaw-stack.tgz - base documental:
docs/governance/runbooks/RESTORE-OPENCLAW.md
NPM rollback¶
- volver a imagen anterior efectiva:
jc21/nginx-proxy-manager:latestcon la advertencia de que ese tag no fija digest historico exacto - estrategia mas segura:
restaurar
npm-stack.tgzcompleto sobre/docker/nginx-proxy-managerincluyendodata/yletsencrypt/ - limite documentado: si se requiere reproducibilidad exacta del runtime anterior, falta fijar el digest o tag historico exacto de la imagen hoy en uso
- base documental:
docs/governance/runbooks/RESTORE-NPM.md
13.8 Criterio de corte si algo falla¶
Se corta la ventana en el primer fallo de cualquiera de estos puntos:
docker versionodocker psno vuelven sanos tras el update deDockerPortainerno responde por9443interno o porHTTPSpublicoOpenClawpierdehealth,auth,HTTPSowebsocketNPMpierde81, un upstream critico, un host publico critico o la carga visible de certificados- aparece evidencia de drift no esperado en compose, volumen, red o mounts
Accion al cortar:
- no continuar con el siguiente servicio
- aplicar rollback solo del servicio que acaba de fallar
- revalidar el baseline minimo
- dejar la ventana en
NO-GOhasta nueva decision explicita
13.9 Estado de preparacion¶
- ventana real preparada:
si - comandos listos pero no ejecutados:
si - targets exactos definidos:
Docker -> 29.5.2Portainer -> 2.39.3OpenClaw -> 2026.6.1NPM -> 2.15.1- pendientes explicitos:
- repetir
TEST-WEBSOCKET-001dentro de la ventana real - autorizacion explicita final de
Gabi
14. Referencias usadas¶
Governance local¶
docs/governance/CHANGE-GATES.mddocs/governance/runbooks/UPDATE-SERVICE.mddocs/governance/catalog/TESTS.mddocs/governance/services/svc-portainer.mddocs/governance/services/svc-openclaw.mddocs/governance/services/svc-nginx-proxy-manager.mddocs/governance/catalog/BACKUPS.mddocs/governance/knowledge/infrastructure/SERVICES-AND-DEPENDENCIES.md
Fuentes oficiales externas¶
- Docker Engine
29.5.2release notes:https://docs.docker.com/engine/release-notes/29/ - Portainer releases:
https://github.com/portainer/portainer/releases - Portainer
2.39.3 LTS:https://github.com/portainer/portainer/releases/tag/2.39.3 - OpenClaw releases:
https://github.com/openclaw/openclaw/releases - OpenClaw
2026.6.1:https://github.com/openclaw/openclaw/releases/tag/v2026.6.1 - Nginx Proxy Manager releases:
https://github.com/NginxProxyManager/nginx-proxy-manager/releases - Nginx Proxy Manager
v2.15.1:https://github.com/NginxProxyManager/nginx-proxy-manager/releases/tag/v2.15.1