{"id":3258,"date":"2025-12-28T01:06:45","date_gmt":"2025-12-27T23:06:45","guid":{"rendered":"https:\/\/www.sinetiqueta.com\/?p=3258"},"modified":"2025-12-28T02:14:45","modified_gmt":"2025-12-28T00:14:45","slug":"como-solucionar-el-error-de-api-en-portainer-con-openmediavault-y-docker-compose","status":"publish","type":"post","link":"https:\/\/www.sinetiqueta.com\/?p=3258","title":{"rendered":"C\u00f3mo solucionar el error de API en Portainer con OpenMediaVault y Docker Compose"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Si gestionas tus contenedores Docker mediante el plugin <strong>Compose<\/strong> en <strong>OpenMediaVault (OMV)<\/strong>, es posible que tras una actualizaci\u00f3n del sistema te hayas encontrado con que Portainer deja de funcionar. El contenedor no arranca y, al revisar los logs, te encuentras con un error cr\u00edtico de \u00abAPI version\u00bb.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Cabe mencionar que <strong>NO soy un experto en el tema<\/strong>, y me sirvo de las herramientas a mi alcance para conseguir solucionar este tipo de cosas<\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En este art\u00edculo explicamos por qu\u00e9 sucede esto y c\u00f3mo solucionarlo paso a paso.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. El Problema: El error de \u00abClient Version is too old\u00bb<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">El error suele presentarse con un mensaje similar a este:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>FTL &gt; failed initializing upgrade service | error=\"failed to determine container platform: ... client version 1.42 is too old. Minimum supported API version is 1.44\"<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfPor qu\u00e9 ocurre?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Este fallo sucede porque el motor de Docker en tu servidor se ha actualizado (probablemente a la versi\u00f3n 26 o 27), la cual requiere una versi\u00f3n de la API de Docker m\u00ednima (1.44). Si est\u00e1s intentando ejecutar una imagen de Portainer antigua o la versi\u00f3n obsoleta (<code>portainer\/portainer<\/code>), el cliente interno de Portainer no sabe \u00abhablar\u00bb con el nuevo motor de Docker.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2. La Soluci\u00f3n: Actualizar a Portainer CE<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">La soluci\u00f3n definitiva consiste en migrar a la imagen oficial mantenida:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>portainer\/portainer-ce<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Paso 1: Editar el archivo Docker Compose<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Desde el panel de OMV, ve a <strong>Servicios &gt; Compose &gt; Files<\/strong>, selecciona tu stack de Portainer y pulsa <strong>Editar<\/strong>. Debes asegurarte de que tu configuraci\u00f3n sea similar a esta:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-style-default\"><img loading=\"lazy\" decoding=\"async\" width=\"361\" height=\"420\" src=\"https:\/\/www.sinetiqueta.com\/wp-content\/uploads\/2025\/12\/image-4.png\" alt=\"\" class=\"wp-image-3268\" style=\"aspect-ratio:1;object-fit:cover\" srcset=\"https:\/\/www.sinetiqueta.com\/wp-content\/uploads\/2025\/12\/image-4.png 361w, https:\/\/www.sinetiqueta.com\/wp-content\/uploads\/2025\/12\/image-4-258x300.png 258w\" sizes=\"auto, (max-width: 361px) 100vw, 361px\" \/><\/figure>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-green-cyan-color\">services:<br>  portainer:<br>    image: portainer\/portainer-ce:latest  # Usar siempre la Community Edition<br>    container_name: portainer-ce          # Cambiamos el nombre si el anterior da conflicto<br>    restart: unless-stopped<br>    security_opt:<br>      &#8211; no-new-privileges:true<br>    volumes:<br>      &#8211; \/etc\/localtime:\/etc\/localtime:ro<br>      &#8211; \/var\/run\/docker.sock:\/var\/run\/docker.sock:ro<br>      &#8211; .\/data:\/data                      # Persistencia de datos<br>    ports:<br>      &#8211; 9443:9443                         # Acceso seguro v\u00eda HTTPS<\/mark><\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Paso 2: Resolver conflictos de nombre<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Si al intentar levantar el contenedor recibes un error de <strong>\u00abConflict. The container name is already in use\u00bb<\/strong>, Docker tiene un contenedor \u00abzombi\u00bb bloqueando el nombre. Tienes dos opciones:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Limpieza por SSH:<\/strong> Ejecuta $ <code><strong>docker rm -f portainer<\/strong><\/code> para borrar el contenedor antiguo. He usado <a href=\"https:\/\/www.chiark.greenend.org.uk\/~sgtatham\/putty\/latest.html\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Putty<\/strong><\/a>, recuerda que el usuario con el que inicies sesi\u00f3n debe tener permisos <strong>SUDO<\/strong> y <strong>_SSH<\/strong>, esto lo ocnfiguras dentro del OMV en USERS.<\/li>\n\n\n\n<li><strong>Renombrado r\u00e1pido:<\/strong> Cambia el <code>container_name<\/code> en tu YAML (por ejemplo, de <code>portainer<\/code> a <code>portainer-ce<\/code>), como hicimos en el ejemplo anterior.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">3. Aplicar los cambios en OpenMediaVault<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Una vez editado el archivo, muchos usuarios cometen el error de pulsar directamente el bot\u00f3n \u00abUp\u00bb. Sin embargo, si quieres solucionar el error de la API, <strong>el orden de los factores s\u00ed altera el producto<\/strong>. Sigue estos pasos:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Save:<\/strong> Guarda los cambios en el editor. Esto registra tu nueva configuraci\u00f3n en la base de datos de OMV.<\/li>\n\n\n\n<li><strong>Pull (CRUCIAL):<\/strong> Haz clic en el bot\u00f3n de descarga (icono de la flecha hacia abajo &#x2b07;&#xfe0f;).\n<ul class=\"wp-block-list\">\n<li><strong>\u00bfPor qu\u00e9 es vital?<\/strong> Docker es ahorrador por naturaleza; si ya tiene una imagen llamada <code><strong>portainer-ce:latest<\/strong><\/code> en tu disco (aunque sea antigua), no ir\u00e1 a buscar una nueva. Al pulsar <strong>Pull<\/strong>, fuerzas a OMV a conectar con internet y descargar los parches de compatibilidad necesarios para la API de Docker 1.44+.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Up:<\/strong> Una vez finalizada la descarga, pulsa el bot\u00f3n de arranque (icono de la flecha hacia arriba &#x2b06;&#xfe0f;). Esto crear\u00e1 el nuevo contenedor utilizando la imagen que acabas de descargar.<\/li>\n<\/ol>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>&#x1f4a1; Consejo:<\/strong> Si despu\u00e9s de hacer el <em><strong>Pull<\/strong><\/em> y el <em><strong>Up<\/strong><\/em> el sistema sigue quej\u00e1ndose del nombre en uso, recuerda usar el comando <code><strong>docker rm -f portainer<\/strong><\/code> por SSH o cambiar el <code><strong>container_name<\/strong><\/code> en el archivo como vimos en el paso anterior.<\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">4. Acceso y Verificaci\u00f3n<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Al haber configurado el puerto <code>9443<\/code>, el acceso ahora es exclusivamente a trav\u00e9s de protocolo seguro:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>URL:<\/strong> <code>https:\/\/IP-DE-TU-SERVIDOR:9443<\/code><\/li>\n\n\n\n<li><strong>Aviso de Seguridad:<\/strong> Tu navegador mostrar\u00e1 un aviso de \u00abConexi\u00f3n no privada\u00bb. Esto es normal al usar certificados locales. Haz clic en <strong>Opciones avanzadas &gt; Acceder (sitio no seguro)<\/strong>.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfSe pierden los datos?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Si en la secci\u00f3n de <code>volumes<\/code> apuntaste correctamente a la carpeta donde ten\u00edas los datos antiguos (por ejemplo <code>.\/data:\/data<\/code>), <strong>Portainer reconocer\u00e1 tus contenedores y configuraciones anteriores autom\u00e1ticamente<\/strong>. Es posible que te pida crear un usuario administrador de nuevo si la base de datos es detectada como nueva, pero una vez dentro, ver\u00e1s todo tu entorno de Docker intacto.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Una vez accedas al nuevo PORTAINER CE, debr\u00edas poder ver los CONTENDORES que ten\u00edas, y &#8230; el \u00abZombi\u00bb que nos estaba molestando:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"835\" height=\"71\" src=\"https:\/\/www.sinetiqueta.com\/wp-content\/uploads\/2025\/12\/image-1.png\" alt=\"\" class=\"wp-image-3260\" srcset=\"https:\/\/www.sinetiqueta.com\/wp-content\/uploads\/2025\/12\/image-1.png 835w, https:\/\/www.sinetiqueta.com\/wp-content\/uploads\/2025\/12\/image-1-300x26.png 300w, https:\/\/www.sinetiqueta.com\/wp-content\/uploads\/2025\/12\/image-1-768x65.png 768w\" sizes=\"auto, (max-width: 835px) 100vw, 835px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusi\u00f3n<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Mantener las im\u00e1genes actualizadas (<code><strong>:latest<\/strong><\/code>) y usar la rama correcta (<code><strong>portainer-ce<\/strong><\/code>) es vital en sistemas como OpenMediaVault que actualizan el motor de Docker con frecuencia. Con estos pasos, habr\u00e1s recuperado el control de tu panel de gesti\u00f3n sin perder tus contenedores actuales.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Puntos clave incluidos<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>&#x2705; <strong>Causa Ra\u00edz:<\/strong> Explicaci\u00f3n clara de la API 1.42 vs 1.44.<\/li>\n\n\n\n<li>&#x2705; <strong>La Soluci\u00f3n de Imagen:<\/strong> Cambio de <code>portainer\/portainer<\/code> a <code>portainer\/portainer-ce<\/code>.<\/li>\n\n\n\n<li>&#x2705; <strong>El Conflicto de Nombres:<\/strong> Soluci\u00f3n mediante el renombrado del <code>container_name<\/code>.<\/li>\n\n\n\n<li>&#x2705; <strong>El Puerto HTTPS:<\/strong> Recordatorio de usar <code>https:\/\/<\/code> y el puerto <code>9443<\/code>.<\/li>\n\n\n\n<li>&#x2705; <strong>Persistencia:<\/strong> Confirmaci\u00f3n de que los contenedores previos se mantienen.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>&#x26a0;&#xfe0f; Nota importante sobre el primer acceso:<\/strong> Por seguridad, Portainer cierra el asistente de configuraci\u00f3n si no creas el usuario administrador en los primeros <strong>5 minutos<\/strong> tras el arranque. Si al intentar entrar te sale un mensaje de error diciendo que \u00abpor seguridad se ha cerrado el asistente\u00bb, simplemente vuelve a OpenMediaVault y pulsa el bot\u00f3n <strong>Restart<\/strong> en tu stack de Portainer para reiniciar el temporizador.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>&#x26a0;&#xfe0f; Nota importante al finalizar<\/strong>: recuerda seactivar el acceso por SSH si no lo usas, para as\u00ed evitar problemas de accesos no deseados.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>&#x26a0;&#xfe0f; Nota importante<\/strong> <strong>Final:<\/strong> NO me hago respnsable de nada, si has seguido esta gu\u00eda es bajo tu responsabilidad.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><em>\u00bfTe ha servido este tutorial? No olvides compartirlo con otros usuarios de OMV que puedan estar sufriendo este bloqueo tras actualizar sus sistemas.<\/em><\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-style-rounded\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"1024\" src=\"https:\/\/www.sinetiqueta.com\/wp-content\/uploads\/2025\/12\/image-3.png\" alt=\"\" class=\"wp-image-3262\" srcset=\"https:\/\/www.sinetiqueta.com\/wp-content\/uploads\/2025\/12\/image-3.png 1024w, https:\/\/www.sinetiqueta.com\/wp-content\/uploads\/2025\/12\/image-3-300x300.png 300w, https:\/\/www.sinetiqueta.com\/wp-content\/uploads\/2025\/12\/image-3-150x150.png 150w, https:\/\/www.sinetiqueta.com\/wp-content\/uploads\/2025\/12\/image-3-768x768.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Si gestionas tus contenedores Docker mediante el plugin Compose en OpenMediaVault (OMV), es posible que tras una actualizaci\u00f3n del sistema te hayas encontrado con que Portainer deja de funcionar. El contenedor no arranca y, al revisar los logs, te encuentras&#8230; <a href=\"https:\/\/www.sinetiqueta.com\/?p=3258\" class=\"readmore\">Leer m\u00e1s<span class=\"screen-reader-text\">C\u00f3mo solucionar el error de API en Portainer con OpenMediaVault y Docker Compose<\/span><span class=\"fa fa-angle-double-right\" aria-hidden=\"true\"><\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":3262,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[324,376],"tags":[492,493,320],"class_list":["post-3258","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-openmediavault","category-portainer","tag-compose","tag-docker","tag-omv","content-layout-excerpt-thumb"],"jetpack_featured_media_url":"https:\/\/www.sinetiqueta.com\/wp-content\/uploads\/2025\/12\/image-3.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.sinetiqueta.com\/index.php?rest_route=\/wp\/v2\/posts\/3258","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sinetiqueta.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sinetiqueta.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sinetiqueta.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sinetiqueta.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3258"}],"version-history":[{"count":6,"href":"https:\/\/www.sinetiqueta.com\/index.php?rest_route=\/wp\/v2\/posts\/3258\/revisions"}],"predecessor-version":[{"id":3272,"href":"https:\/\/www.sinetiqueta.com\/index.php?rest_route=\/wp\/v2\/posts\/3258\/revisions\/3272"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.sinetiqueta.com\/index.php?rest_route=\/wp\/v2\/media\/3262"}],"wp:attachment":[{"href":"https:\/\/www.sinetiqueta.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3258"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sinetiqueta.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3258"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sinetiqueta.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3258"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}