Saltar a contenido

Portainer Modernization

Fecha

  • 2026-05-31

Objetivo

  • Modernizar Portainer CE para resolver la compatibilidad con Docker 29.x sin afectar OpenClaw, NPM, DNS, firewall ni persistencia

Fuentes oficiales usadas

  • https://docs.portainer.io/start/upgrade/docker
  • https://docs.portainer.io/faqs/known-issues/environments-not-loading-with-docker-engine-29.0.0
  • https://www.portainer.io/blog/new-portainer-2-39-release

Safe point

  • git status -sb: ## main...origin/main
  • git rev-parse HEAD: 208914617dad0f9994a1d6139f9b983e9949ab7e

Estado previo confirmado

  • Host remoto: srv977009
  • Contenedor real: portainer
  • Imagen declarada: portainer/portainer-ce:latest
  • Version real por binario: 2.33.1
  • Volumen real: portainer_data_new
  • Puertos host: 8000 y 9443
  • Restart policy: unless-stopped
  • Red: proxy-network
  • Mount Docker socket: /var/run/docker.sock:/var/run/docker.sock

Backup

  • Backup previo existente: /root/portainer-backups/portainer-data-20260531-000206.tar.gz
  • Backup nuevo creado: /root/portainer-backups/portainer-data-20260531-001058.tar.gz
  • Tamano validado: 37552 bytes
  • sha256: b67c05ae7e95a5a7fc93738fdf78d9e950b1146770aebded85273da024c4326d

Metodo de upgrade usado

bash docker pull portainer/portainer-ce:2.39.2 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.2

Resultado

  • Version final por binario: 2.39.2
  • Imagen final: portainer/portainer-ce:2.39.2
  • Digest final: portainer/portainer-ce@sha256:8d2f5c9fbc5b8490fb3a12efadbad74978e22991911e1db611d8a45871775112
  • Migracion de base observada en logs: 2.33.1 -> 2.39.2
  • HTTPS local validado en 9443: HTTP/1.1 200 OK
  • OpenClaw post-upgrade: running healthy
  • NPM post-upgrade: running
  • Puertos host nuevos: no
  • Rollback necesario: no

Alcance y restricciones respetadas

  • No se toco OpenClaw
  • No se toco NPM
  • No se toco DNS
  • No se toco firewall
  • No se borraron volumenes
  • No se borraron imagenes ajenas
  • No se tocaron proxy hosts
  • No se imprimieron secretos

Validaciones no automatizadas

  • No se valido en esta sesion la UI autenticada de Portainer con login humano
  • No se certifico visualmente Environment local UP ni Live Connect desde la interfaz, aunque el backend y el servicio HTTPS quedaron sanos

Estado final

  • Portainer: VERDE
  • OpenClaw: VERDE
  • NPM: VERDE

Certificacion operativa posterior

  • Validacion visual confirmada por Gabi el 2026-05-31:
  • Portainer navegable
  • endpoint local accesible
  • Containers visibles
  • Stacks visibles
  • Networks visibles
  • Volumes visibles
  • OpenClaw visible
  • NPM visible
  • Portainer visible
  • Validacion backend por SSH:
  • docker exec portainer /portainer --version -> 2.39.2
  • curl -k -I https://127.0.0.1:9443 -> HTTP/1.1 200 OK

La modernizacion queda certificada no solo por backend sino tambien por validacion visual humana del plano de administracion.

Auditoria Docker post-modernizacion

Estado observado

  • Contenedores activos:
  • portainer
  • nginx-proxy-manager
  • openclaw-openclaw-gateway-1
  • Imagen activa real de Portainer: portainer/portainer-ce:2.39.2
  • Volumen activo real de Portainer: portainer_data_new
  • Red activa real de Portainer: proxy-network

Hallazgos de legado

  • La metadata persistida de Portainer todavia conserva un Compose previo en portainer_data_new/_data/compose/2/docker-compose.yml.
  • Ese archivo sigue declarando portainer/portainer-ce:latest, aunque el contenedor real fue recreado standalone y fijado a 2.39.2.
  • La red portainer2_default sigue existiendo pero no tiene contenedores.
  • El volumen portainer_data sigue existiendo con portainer.db y un backup interno historico; no debe borrarse sin backup y confirmacion humana.

Limpieza segura ejecutada

  • docker rmi alpine:latest
  • docker rmi portainer/portainer-ce:latest

Limpieza diferida

  • No se borro portainer_data.
  • No se borro portainer2_default.
  • No se toco proxy-network.
  • No se tocaron OpenClaw ni NPM.