{"id":82076,"date":"2026-06-19T07:30:00","date_gmt":"2026-06-19T14:30:00","guid":{"rendered":"https:\/\/dhblog.dream.press\/blog\/?p=82076"},"modified":"2026-08-25T19:50:53","modified_gmt":"2026-08-26T02:50:53","slug":"como-ejecutar-docker-y-portainer-en-un-vps-guia-2026-es","status":"publish","type":"post","link":"https:\/\/www-dev.dreamhost.com\/blog\/es\/como-ejecutar-docker-y-portainer-en-un-vps-guia-2026-es\/","title":{"rendered":"C\u00f3mo ejecutar Docker en un VPS con Portainer (gu\u00eda 2026)"},"content":{"rendered":"<div class=\"tldr-block\" style=\"display: none;\">\n\t<div class=\"svg\">\n\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 119.25 37.8\">\n\t<g>\n\t\t<g>\n\t\t\t<path fill=\"#ffffff\" d=\"M23.4,6.93h-8.1v24.57h-7.2V6.93H0V0h23.4v6.93Z\" \/>\n\t\t\t<path fill=\"#ffffff\" d=\"M45,24.57v6.93h-18.45V0h7.2v24.57h11.25Z\" \/>\n\t\t\t<path fill=\"#ffffff\"\n\t\t\t\td=\"M90.9,15.75c0,8.91-6.61,15.75-15.3,15.75h-12.6V0h12.6c8.68,0,15.3,6.84,15.3,15.75ZM83.97,15.75c0-5.4-3.42-8.82-8.37-8.82h-5.4v17.64h5.4c4.95,0,8.37-3.42,8.37-8.82Z\" \/>\n\t\t\t<path fill=\"#ffffff\"\n\t\t\t\td=\"M105.57,21.15h-3.42v10.35h-7.2V0h12.6c5.98,0,10.8,4.81,10.8,10.8,0,3.87-2.34,7.38-5.81,9.13l6.71,11.56h-7.74l-5.94-10.35ZM102.15,14.85h5.4c1.98,0,3.6-1.75,3.6-4.05s-1.62-4.05-3.6-4.05h-5.4v8.1Z\" \/>\n\t\t<\/g>\n\t\t<path\n\t\t\tfill=\"#0173ec\"\n\t\t\td=\"M53.97,37.8h-5.4l1.8-13.27h7.2l-3.6,13.27ZM49.02,12.55c0-2.34,1.93-4.27,4.27-4.27s4.27,1.94,4.27,4.27-1.93,4.27-4.27,4.27-4.27-1.94-4.27-4.27Z\"\n\t\t \/>\n\t<\/g>\n<\/svg>\n\t<\/div>\n\t<div class=\"tldr-wrap\">\n\t\t\n\n<p class=\"wp-block-paragraph\">Ejecutar <a href=\"https:\/\/www.dreamhost.com\/es\/hosting\/vps\/docker\/\">Docker en un VPS<\/a> te da lo mejor de dos mundos: aplicaciones autoalojadas y port\u00e1tiles, y control directo sobre el servidor y la forma de desplegarlas. Portainer completa la f\u00f3rmula con una interfaz web para Docker, para que administrar tus contenedores no te obligue a vivir en la terminal.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Portainer no publica un requisito m\u00ednimo de RAM. Para una pila peque\u00f1a, un VPS de 4 GB puede ser suficiente, pero el c\u00e1lculo correcto es una suma: lo que necesitan el sistema operativo, el daemon de Docker y cada contenedor que piensas ejecutar. Portainer en s\u00ed es un contenedor ligero, as\u00ed que la memoria la dictan tus aplicaciones, no la interfaz. Portainer Community Edition es gratuita y de c\u00f3digo abierto y, con Docker y el firewall ya listos, instalarla se reduce a dos comandos: crear un volumen y un docker run.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Antes de empezar conviene conocer dos trampas: Portainer solo espera cinco minutos a que alguien cree la cuenta de administrador inicial, y de manera predeterminada los puertos que Docker publica se saltan UFW. Esta gu\u00eda resuelve ambas en el orden correcto: la instalaci\u00f3n, el firewall, el tama\u00f1o del VPS, los respaldos y el uso diario donde Portainer demuestra su valor.<\/p>\n\n\n\t<\/div>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">\u00bfTe suena la palabra <em>Dockerception<\/em>?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Prep\u00e1rate, porque vamos a entrar en un juego de espejos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Portainer, la interfaz web que vas a instalar sobre Docker, <em>es en s\u00ed misma un contenedor de Docker<\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Es decir: una herramienta que se ejecuta sobre lo mismo que administra. La arrancas con una l\u00ednea de docker run, y su primer acto es asomarse al host por una abertura diminuta (un archivo de socket) para pedirle al daemon de Docker la lista completa de contenedores de la m\u00e1quina, con ella incluida. Desde esa pesta\u00f1a del navegador controlas todos tus dem\u00e1s contenedores.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>La interfaz que tienes enfrente se enlista a s\u00ed misma entre los contenedores.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En un VPS que ya pagas y donde SSH es terreno conocido, Portainer se monta sobre Docker sin alterar nada de lo que ya funciona debajo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Ah\u00ed<\/em> est\u00e1 su valor.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un servidor de 4 GB puede ser el punto de partida para Docker y Portainer; que alcance o no depende de las aplicaciones que decidas sumarle. Piensa en automatizar tu casa, guardar las fotos de la familia, tu asistente de IA y ese bolet\u00edn que juras que vas a lanzar, todo en un servidor que de verdad es tuyo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Vamos por partes: instalarlo, asegurarlo y sacarle jugo.<\/p>\n\n\n\n<h2 id=\"h-what-is-portainer-exactly\" class=\"wp-block-heading\">\u00bfQu\u00e9 es Portainer exactamente?<\/h2>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" width=\"1536\" height=\"1024\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/arquitectura-portainer-socket-docker-navegador-dreamops-6cbba4bffa28dc1ac7c8d266.webp\" alt=\"Portainer Architecture 1x\" class=\"wp-image-87125 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/arquitectura-portainer-socket-docker-navegador-dreamops-6cbba4bffa28dc1ac7c8d266.webp 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/arquitectura-portainer-socket-docker-navegador-dreamops-6cbba4bffa28dc1ac7c8d266-300x200.webp 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/arquitectura-portainer-socket-docker-navegador-dreamops-6cbba4bffa28dc1ac7c8d266-1024x683.webp 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/arquitectura-portainer-socket-docker-navegador-dreamops-6cbba4bffa28dc1ac7c8d266-768x512.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/arquitectura-portainer-socket-docker-navegador-dreamops-6cbba4bffa28dc1ac7c8d266-600x400.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/arquitectura-portainer-socket-docker-navegador-dreamops-6cbba4bffa28dc1ac7c8d266-1200x800.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/arquitectura-portainer-socket-docker-navegador-dreamops-6cbba4bffa28dc1ac7c8d266-730x487.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/arquitectura-portainer-socket-docker-navegador-dreamops-6cbba4bffa28dc1ac7c8d266-1460x973.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/arquitectura-portainer-socket-docker-navegador-dreamops-6cbba4bffa28dc1ac7c8d266-784x523.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/arquitectura-portainer-socket-docker-navegador-dreamops-6cbba4bffa28dc1ac7c8d266-877x585.webp 877w\" data-sizes=\"(max-width: 1536px) 100vw, 1536px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1536px; --smush-placeholder-aspect-ratio: 1536\/1024;\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Portainer es una interfaz web que se ejecuta como contenedor de Docker y administra el resto de tus contenedores a trav\u00e9s del socket de Docker.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dicho de otro modo, es un frontend para el navegador (una interfaz gr\u00e1fica de Docker) que dispara los mismos comandos de Docker que escribir\u00edas a mano, y le suma la gesti\u00f3n de stacks, el control de acceso basado en roles (RBAC, por sus siglas en ingl\u00e9s; llega con Business Edition) y un tablero con el uso de CPU y de memoria.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Todo depende de la conexi\u00f3n al socket. En el comando de instalaci\u00f3n aparece como <code><strong>-v \/var\/run\/docker.sock:\/var\/run\/docker.sock<\/strong><\/code>, y esa sola l\u00ednea carga con todo el trabajo. Sin ella, Portainer es la interfaz de un host de Docker vac\u00edo. Con ella, es el control remoto del host completo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ojo con esto: cualquier proceso capaz de tocar <strong><code>\/var\/run\/docker.sock<\/code><\/strong> puede controlar el daemon de Docker, y la <a target=\"_blank\" href=\"https:\/\/docs.docker.com\/engine\/security\/\">documentaci\u00f3n de seguridad de Docker<\/a> (en ingl\u00e9s) es tajante: ese permiso es solo para usuarios de confianza, porque un contenedor iniciado a trav\u00e9s del daemon puede montar el sistema de archivos completo del host y modificarlo sin restricci\u00f3n alguna. Cuando quien pregunta es Portainer, eso es una <em>funci\u00f3n<\/em>. Cuando es aquel contenedor que levantaste la semana pasada y ya ni recuerdas por qu\u00e9 tiene acceso al socket, es un <em>problema<\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Trata el montaje del socket como el privilegio que es, y revisa con lupa a cualquier otro contenedor que lo pida.<\/p>\n\n\n\n<div class=\"article-newsletter article-newsletter--gradient\">\n\n\n<h2>Get Content Delivered Straight to Your Inbox<\/h2><p>Subscribe now to receive all the latest updates, delivered directly to your inbox.<\/p><form class=\"nwsl-form\" id=\"newsletter_block_\" novalidate><div class=\"messages\"><\/div><div class=\"form-group\"><label for=\"input_newsletter_block_\"><input type=\"email\"name=\"email\"id=\"input_newsletter_block_\"placeholder=\"Enter your email address\"novalidatedisabled=\"disabled\"\/><\/label><button type=\"submit\"class=\"btn btn--brand\"disabled=\"disabled\"><span>Sign Me Up!<\/span><svg width=\"21\" height=\"14\" viewBox=\"0 0 21 14\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n<path d=\"M13.8523 0.42524L12.9323 1.34521C12.7095 1.56801 12.7132 1.9304 12.9404 2.14865L16.7241 5.7823H0.5625C0.251859 5.7823 0 6.03416 0 6.3448V7.6573C0 7.96794 0.251859 8.2198 0.5625 8.2198H16.7241L12.9405 11.8535C12.7132 12.0717 12.7095 12.4341 12.9323 12.6569L13.8523 13.5769C14.072 13.7965 14.4281 13.7965 14.6478 13.5769L20.8259 7.39879C21.0456 7.17913 21.0456 6.82298 20.8259 6.60327L14.6477 0.42524C14.4281 0.205584 14.0719 0.205584 13.8523 0.42524Z\" fill=\"white\"\/>\n<\/svg>\n<\/button><\/div><\/form><\/div>\n\n\n<h2 id=\"h-do-you-need-portainer-if-you-already-have-docker\" class=\"wp-block-heading\">\u00bfNecesitas Portainer si ya tienes Docker?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">No. <a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/blog\/es\/que-es-docker\/\">Docker<\/a> funciona perfectamente desde la terminal, y mucha gente pasa a\u00f1os con un par de contenedores sin ponerle nunca una interfaz encima.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Instala Portainer si:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Vas a administrar m\u00e1s de dos o tres contenedores de aplicaciones distintas.<\/li>\n\n\n\n<li>Prefieres hacer clic en &#8220;reiniciar&#8221; a reescribir un comando de Compose a las 11 de la noche.<\/li>\n\n\n\n<li>Otra persona que no domina la terminal tambi\u00e9n necesita acceso.<\/li>\n\n\n\n<li>Quieres desplegar actualizaciones de stacks desde un repositorio de Git sin escribir tu propio script de despliegue.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Qu\u00e9date solo con Docker si:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ejecutas uno o dos contenedores que casi nunca cambian.<\/li>\n\n\n\n<li>Docker Compose te resulta c\u00f3modo y no tienes intenci\u00f3n de dejarlo.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Tampoco es una decisi\u00f3n marginal: en la <a target=\"_blank\" href=\"https:\/\/stackoverflow.co\/company\/press\/archive\/stack-overflow-2025-developer-survey\/\">Encuesta a Desarrolladores 2025 de Stack Overflow<\/a> (en ingl\u00e9s), el 71% de quienes respondieron dijo usar Docker, el resultado m\u00e1s alto entre las tecnolog\u00edas de desarrollo en la nube e infraestructura, tras subir 17 puntos porcentuales respecto a 2024. Y el proyecto Portainer acumula m\u00e1s de <a target=\"_blank\" href=\"https:\/\/github.com\/portainer\/portainer\">38,000 estrellas en GitHub<\/a> (en ingl\u00e9s) a agosto de 2026.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hay alternativas. <a href=\"https:\/\/www.dreamhost.com\/es\/hosting\/vps\/dokploy\/\">Dokploy<\/a>, por ejemplo, apunta a ser una plataforma como servicio (PaaS, por sus siglas en ingl\u00e9s) autoalojada y completa: se encarga por ti de las aplicaciones, las bases de datos y el SSL. Portainer, en cambio, se mantiene pegado a Docker puro: los mismos archivos Compose, las mismas im\u00e1genes, con una interfaz encima.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00bfVives en tmux y solo ejecutas una aplicaci\u00f3n? Cierra esta pesta\u00f1a. <em>No te hace falta.<\/em> \u00bfAdministras cuatro aplicaciones autoalojadas y este mes ya buscaste dos veces c\u00f3mo consultar los logs de Docker? Sigue leyendo.<\/p>\n\n\n\n<h2 id=\"h-how-big-a-vps-do-you-need-to-run-docker-and-portainer\" class=\"wp-block-heading\">\u00bfQu\u00e9 tama\u00f1o de VPS necesitas para Docker y Portainer?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Portainer no publica un m\u00ednimo de RAM. Un <a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/blog\/es\/guia-de-servidores-privados-vps\/\">VPS<\/a> de 4 GB puede alcanzar para una pila peque\u00f1a, pero el n\u00famero correcto sale de sumar los requisitos del sistema operativo, del daemon de Docker y de cada contenedor que planeas ejecutar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Su propia <a target=\"_blank\" href=\"https:\/\/docs.portainer.io\/start\/requirements-and-prerequisites\">p\u00e1gina de requisitos<\/a> (en ingl\u00e9s) casi no habla de memoria: el servidor de Portainer se distribuye como un contenedor ligero, y la \u00fanica gu\u00eda de rendimiento que la documentaci\u00f3n establece se refiere al almacenamiento (te lo contamos unos p\u00e1rrafos m\u00e1s abajo). La cuenta de RAM que importa es la de tus cargas de trabajo: presupuesta el sistema operativo, el daemon de Docker y cada contenedor que vayas a ejecutar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As\u00ed se traduce esa suma a planes concretos:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" width=\"1536\" height=\"1024\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/ram-por-plan-stack-dreamhost-vps-dreamops-afdce5536f828c1b56a31e80.webp\" alt=\"Planes Stack de DreamHost VPS escalonados por RAM: Stack 4 con 4 GB, Stack 8 con 8 GB, Stack 16 con 16 GB y Stack 32 con 32 GB\" class=\"wp-image-90035 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/ram-por-plan-stack-dreamhost-vps-dreamops-afdce5536f828c1b56a31e80.webp 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/ram-por-plan-stack-dreamhost-vps-dreamops-afdce5536f828c1b56a31e80-300x200.webp 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/ram-por-plan-stack-dreamhost-vps-dreamops-afdce5536f828c1b56a31e80-1024x683.webp 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/ram-por-plan-stack-dreamhost-vps-dreamops-afdce5536f828c1b56a31e80-768x512.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/ram-por-plan-stack-dreamhost-vps-dreamops-afdce5536f828c1b56a31e80-600x400.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/ram-por-plan-stack-dreamhost-vps-dreamops-afdce5536f828c1b56a31e80-1200x800.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/ram-por-plan-stack-dreamhost-vps-dreamops-afdce5536f828c1b56a31e80-730x487.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/ram-por-plan-stack-dreamhost-vps-dreamops-afdce5536f828c1b56a31e80-1460x973.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/ram-por-plan-stack-dreamhost-vps-dreamops-afdce5536f828c1b56a31e80-784x523.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/ram-por-plan-stack-dreamhost-vps-dreamops-afdce5536f828c1b56a31e80-877x585.webp 877w\" data-sizes=\"(max-width: 1536px) 100vw, 1536px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1536px; --smush-placeholder-aspect-ratio: 1536\/1024;\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">La hoja de c\u00e1lculo no tiene misterio: busca la RAM que documenta cada aplicaci\u00f3n de tu lista, s\u00famale el sistema operativo y el daemon de Docker, y deja un colch\u00f3n para los picos de uso. Como Portainer no exige un m\u00ednimo de RAM, quienes llenan el servidor son tus aplicaciones, no la interfaz.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En DreamHost, nuestro <a href=\"https:\/\/www.dreamhost.com\/es\/hosting\/vps\/\" target=\"_blank\">VPS Hosting<\/a> se vende en cuatro planes Stack escalonados por RAM (Stack 4, 8, 16 y 32). El plan de entrada, Stack 4 (2 vCPU, 4 GB de RAM, 75 GB de NVMe SSD y acceso root completo), encaja de manera natural con un host de Docker peque\u00f1o. Con facturaci\u00f3n mensual cuesta $8.99 USD al mes durante los primeros 3 meses y despu\u00e9s se renueva autom\u00e1ticamente a $15.99 USD al mes (a agosto de 2026; al finalizar la compra se cobra el periodo completo m\u00e1s impuestos, y las cifras vigentes est\u00e1n siempre en la <a href=\"https:\/\/www.dreamhost.com\/es\/hosting\/vps\/docker\/\">p\u00e1gina del VPS con Docker + Portainer<\/a>).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si todav\u00eda no decides si el <a href=\"https:\/\/www.dreamhost.com\/blog\/es\/revolucion-autoalojamiento-pros-contras\/\" target=\"_blank\">autoalojamiento<\/a> merece tu tiempo, Stack 4 es el tama\u00f1o para descubrirlo: suficiente para probar en serio, sin pagar capacidad de sobra. Si tu suma lo rebasa, subes de plan y tu entorno se muda contigo. Un aviso: por ahora no es posible bajar a un Stack m\u00e1s peque\u00f1o, as\u00ed que conviene empezar chico a prop\u00f3sito.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Una nota sobre el almacenamiento:<\/strong> el volumen de datos de Portainer guarda su base de datos y su configuraci\u00f3n, y tambi\u00e9n un clon de cada repositorio de Git desde el que despliegues stacks; la documentaci\u00f3n de Portainer advierte que los repositorios grandes o numerosos pueden ocupar mucho disco. Y la gu\u00eda de rendimiento que la documentaci\u00f3n s\u00ed publica habla de disco, no de memoria: considera ideal un desempe\u00f1o de clase SSD (\u22483.5 MB\/s, 30,000 operaciones de entrada y salida por segundo (IOPS, por sus siglas en ingl\u00e9s) o m\u00e1s, y una latencia de escritura por debajo de 10 ms). Stack 4 incluye 75 GB de almacenamiento NVMe SSD.<\/p>\n\n\n\n<h2 id=\"h-how-do-you-install-docker-and-portainer-on-a-vps\" class=\"wp-block-heading\">\u00bfC\u00f3mo instalar Docker y Portainer en un VPS?<\/h2>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"1600\" height=\"1392\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/03-Protainer.io-new-installer_1x.webp\" alt=\"Formulario de configuraci\u00f3n inicial de Portainer.io para crear una cuenta de administrador\" class=\"wp-image-82012 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/03-Protainer.io-new-installer_1x.webp 1600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/03-Protainer.io-new-installer_1x-300x261.webp 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/03-Protainer.io-new-installer_1x-1024x891.webp 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/03-Protainer.io-new-installer_1x-768x668.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/03-Protainer.io-new-installer_1x-1536x1336.webp 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/03-Protainer.io-new-installer_1x-600x522.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/03-Protainer.io-new-installer_1x-1200x1044.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/03-Protainer.io-new-installer_1x-730x635.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/03-Protainer.io-new-installer_1x-1460x1270.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/03-Protainer.io-new-installer_1x-784x682.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/03-Protainer.io-new-installer_1x-1568x1364.webp 1568w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/03-Protainer.io-new-installer_1x-877x763.webp 877w\" data-sizes=\"(max-width: 1600px) 100vw, 1600px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1600px; --smush-placeholder-aspect-ratio: 1600\/1392;\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Son siete pasos; cu\u00e1nto tarden la descarga y la instalaci\u00f3n depende de tu VPS y de tu conexi\u00f3n de red. Los comandos de los pasos 2 a 6 est\u00e1n pensados para Ubuntu y puedes pegarlos en orden en un servidor limpio. Solo un comando pide un dato que \u00fanicamente t\u00fa conoces (tu direcci\u00f3n IP, en el paso 4), y el propio paso lo se\u00f1ala. (\u00bfPrefieres ahorrarte la lista entera? La biblioteca de aplicaciones de DreamHost VPS Hosting trae una <a href=\"https:\/\/www.dreamhost.com\/es\/hosting\/vps\/docker\/\">imagen de Docker + Portainer<\/a> con los dos ya configurados.)<\/p>\n\n\n\n<h3 id=\"h-1-pick-a-linux-distribution\" class=\"wp-block-heading\">1. Elige tu distribuci\u00f3n de Linux<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Esta gu\u00eda trabaja con Ubuntu 24.04 LTS. A agosto de 2026, Docker Engine es compatible con Ubuntu 22.04, 24.04 y 26.04 LTS. <a href=\"https:\/\/www.dreamhost.com\/es\/hosting\/vps\/ubuntu\/\">Ubuntu<\/a> es, adem\u00e1s, una de las opciones de sistema operativo preinstaladas en DreamHost VPS Hosting.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Debian y la familia RHEL (AlmaLinux, por ejemplo) tambi\u00e9n sirven, pero tienen sus propias instrucciones en la documentaci\u00f3n de Docker, y los comandos de esta gu\u00eda no funcionan ah\u00ed tal cual. La familia RHEL trae un detalle adicional: la documentaci\u00f3n de instalaci\u00f3n de Portainer da por hecho que SELinux est\u00e1 desactivado y, si necesitas mantenerlo activo, indica pasarle la bandera <strong><code>--privileged<\/code><\/strong> a Docker al desplegar Portainer. Si esa oraci\u00f3n te son\u00f3 a otro idioma, qu\u00e9date con Ubuntu.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00bfNo est\u00e1s seguro de qu\u00e9 versi\u00f3n de Ubuntu tienes? Te ense\u00f1amos <a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/blog\/es\/verificar-version-ubuntu\/\">cinco formas de comprobarlo<\/a>.<\/p>\n\n\n\n<h3 id=\"h-2-install-docker-from-the-official-repository\" class=\"wp-block-heading\">2. Instala Docker desde su repositorio oficial<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Nada de <strong><code>apt install docker.io<\/code><\/strong>, y nada de instalar Docker con snap: la <a target=\"_blank\" href=\"https:\/\/docs.docker.com\/engine\/install\/ubuntu\/\">documentaci\u00f3n oficial de instalaci\u00f3n de Docker<\/a> (en ingl\u00e9s) pone a <strong>docker.io<\/strong> en la lista de paquetes no oficiales que deben desinstalarse antes de instalar Docker Engine, y la documentaci\u00f3n de instalaci\u00f3n de Portainer advierte que el paquete de snap puede provocar problemas de compatibilidad.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Empieza por limpiar cualquier paquete en conflicto. En un servidor reci\u00e9n creado casi siempre saldr\u00e1 vac\u00edo: dpkg puede mostrar advertencias de &#8220;no packages found matching&#8221; y apt puede responder que ninguno de esos paquetes est\u00e1 instalado. Seg\u00fan la propia documentaci\u00f3n de instalaci\u00f3n de Docker, eso es lo esperado, y el comando termina bien en cualquiera de los dos casos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt remove $(dpkg --get-selections docker.io docker-compose docker-compose-v2 docker-doc docker-buildx podman-docker containerd runc | cut -f1)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora agrega la llave GPG de Docker (cada l\u00ednea de abajo es un comando por separado):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt update\nsudo apt install ca-certificates curl\nsudo install -m 0755 -d \/etc\/apt\/keyrings\nsudo curl -fsSL https:\/\/download.docker.com\/linux\/ubuntu\/gpg -o \/etc\/apt\/keyrings\/docker.asc\nsudo chmod a+r \/etc\/apt\/keyrings\/docker.asc<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ahora toca el repositorio apt de Docker. Este bloque escribe la definici\u00f3n del repositorio en <strong><code>\/etc\/apt\/sources.list.d\/docker.sources<\/code><\/strong>, el archivo que usa la documentaci\u00f3n de instalaci\u00f3n de Docker, y detecta en autom\u00e1tico tu versi\u00f3n de Ubuntu y la arquitectura de tu CPU:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo tee \/etc\/apt\/sources.list.d\/docker.sources &gt; \/dev\/null &lt;&lt;EOF\nTypes: deb\nURIs: https:\/\/download.docker.com\/linux\/ubuntu\nSuites: $(. \/etc\/os-release &amp;&amp; echo \"$VERSION_CODENAME\")\nComponents: stable\nArchitectures: $(dpkg --print-architecture)\nSigned-By: \/etc\/apt\/keyrings\/docker.asc\nEOF\nsudo apt update<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Cierra instalando Docker Engine y el plugin de Compose en un solo comando:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin<\/code><\/pre>\n\n\n\n<h3 id=\"h-3-verify-docker-is-running\" class=\"wp-block-heading\">3. Comprueba que Docker funcione<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ejecuta <strong><code>sudo docker run hello-world<\/code><\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00bfNo apareci\u00f3 el mensaje &#8220;Hello from Docker!&#8221;? Repara el daemon antes de ponerle Portainer encima.<\/p>\n\n\n\n<h3 id=\"h-4-wire-ufw-into-docker-before-you-start-portainer\" class=\"wp-block-heading\">4. Conecta UFW con Docker antes de encender Portainer<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Aqu\u00ed viene lo que la mayor\u00eda de las gu\u00edas cuenta al final, cuando el da\u00f1o ya est\u00e1 hecho: cuando Docker publica un puerto, el tr\u00e1fico hacia ese puerto se desv\u00eda antes de tocar las cadenas que UFW filtra, as\u00ed que el puerto queda accesible desde el internet p\u00fablico aunque UFW jure que est\u00e1 denegado. (La explicaci\u00f3n completa est\u00e1 <a href=\"#h-how-do-you-stop-docker-from-bypassing-your-firewall\">m\u00e1s abajo<\/a>.) Al arrancar Portainer, su puerto 9443 quedar\u00e1 abierto al mundo justo durante los cinco minutos en los que el primero en llegar se queda con la cuenta de administrador. Por eso el firewall se arregla <em>antes<\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si UFW a\u00fan no est\u00e1 activo, permite SSH y enci\u00e9ndelo. (\u00bfTu SSH usa un puerto personalizado? Permite ese puerto en vez del 22, o este ser\u00e1 el paso en el que te quedes fuera de tu propio servidor.)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo ufw allow 22\/tcp\nsudo ufw enable<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Luego instala <a target=\"_blank\" href=\"https:\/\/github.com\/chaifeng\/ufw-docker\">chaifeng\/ufw-docker<\/a> (en ingl\u00e9s), una herramienta de terceros que a\u00f1ade al final de <strong>\/etc\/ufw\/after.rules<\/strong> las reglas necesarias para que el tr\u00e1fico hacia los puertos publicados por Docker se filtre a trav\u00e9s de la cadena <strong>DOCKER-USER<\/strong>. Estos comandos fijan la versi\u00f3n <strong>251123<\/strong> del proyecto (de noviembre de 2025) en vez de descargar la rama master, que cambia sin previo aviso, y usan curl, que instalaste en el paso 2:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo curl -fsSL -o \/usr\/local\/bin\/ufw-docker \\\n  https:\/\/github.com\/chaifeng\/ufw-docker\/raw\/251123\/ufw-docker\nsudo chmod +x \/usr\/local\/bin\/ufw-docker\nsudo ufw-docker install\nsudo ufw reload<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Despu\u00e9s de la recarga, los puertos publicados por contenedores ya se filtran con UFW. Si tu pol\u00edtica de tr\u00e1fico enrutado rechaza las conexiones entrantes y no existe una regla que permita el puerto, las conexiones p\u00fablicas siguen bloqueadas hasta que las autorices de forma expl\u00edcita. (El proyecto ufw-docker anota que, si las reglas no surten efecto tras reiniciar UFW, reiniciar el servidor lo corrige.)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Toca autorizar por adelantado <em>tu propio<\/em> acceso a la interfaz de Portainer. Cambia <strong><code>YOUR_HOME_IP<\/code><\/strong> por la IP p\u00fablica desde la que vas a conectarte:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo ufw route allow proto tcp from YOUR_HOME_IP to any port 9443<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Con la regla lista antes del arranque, la interfaz solo responde a tu IP, incluso durante la ventana del administrador inicial. El costo: muchas conexiones caseras cambian de IP cada cierto tiempo, as\u00ed que tal vez debas actualizar la regla m\u00e1s adelante. Si eso te molesta, la salida definitiva es una VPN delante de la interfaz (la vemos en la secci\u00f3n de seguridad).<\/p>\n\n\n\n<h3 id=\"h-5-create-a-persistent-volume-for-portainer-s-data\" class=\"wp-block-heading\">5. Crea un volumen persistente para los datos de Portainer<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ejecuta <strong><code>sudo docker volume create portainer_data<\/code><\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Con la base de datos de Portainer en un volumen de Docker, fuera del contenedor, una actualizaci\u00f3n de Portainer no se lleva tu configuraci\u00f3n.<\/p>\n\n\n\n<h3 id=\"h-6-run-portainer-community-edition\" class=\"wp-block-heading\">6. Levanta Portainer Community Edition<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">El comando sale de la <a target=\"_blank\" href=\"https:\/\/docs.portainer.io\/start\/install-ce\/server\/docker\/linux\">documentaci\u00f3n de instalaci\u00f3n de Portainer para Linux<\/a> (en ingl\u00e9s), con una bandera menos: el original publica tambi\u00e9n el puerto 8000, un t\u00fanel TCP que solo hace falta si m\u00e1s adelante conectas entornos remotos mediante Edge Agents. En una instalaci\u00f3n de un solo host sobra, as\u00ed que lo omitimos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo docker run -d \\\n  -p 9443:9443 \\\n  --name portainer \\\n  --restart=always \\\n  -v \/var\/run\/docker.sock:\/var\/run\/docker.sock \\\n  -v portainer_data:\/data \\\n  portainer\/portainer-ce:lts<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">L\u00ednea por l\u00ednea:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong><code>-d<\/code><\/strong> lo ejecuta en segundo plano.<\/li>\n\n\n\n<li><strong><code>-p 9443:9443<\/code><\/strong> publica la interfaz web de Portainer por HTTPS: el puerto que autorizaste para tu IP en el paso 4.<\/li>\n\n\n\n<li><strong><code>--restart=always<\/code><\/strong> vuelve a levantar Portainer despu\u00e9s de cada reinicio.<\/li>\n\n\n\n<li>Las dos banderas <strong><code>-v<\/code><\/strong> son el montaje del socket y el volumen persistente del paso 5.<\/li>\n\n\n\n<li><strong><code>:lts<\/code><\/strong> te ancla a la l\u00ednea de soporte a largo plazo (Long Term Support) de Portainer, la misma etiqueta que usa su documentaci\u00f3n de instalaci\u00f3n.<\/li>\n<\/ul>\n\n\n\n<h3 id=\"h-7-open-the-ui-and-create-your-admin-account\" class=\"wp-block-heading\">7. Entra a la interfaz y crea tu cuenta de administrador<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Abre <strong>https:\/\/YOUR_VPS_IP:9443<\/strong> en tu navegador (desde la direcci\u00f3n IP que autorizaste en el paso 4).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Acepta la advertencia del certificado autofirmado y ver\u00e1s la pantalla para crear el usuario administrador inicial. Escoge un nombre que no sea admin, define una contrase\u00f1a fuerte y gu\u00e1rdala en un lugar confiable. Listo: ya est\u00e1s dentro.<\/p>\n\n\n\n<h2 id=\"h-why-did-portainer-just-time-out-on-me\" class=\"wp-block-heading\">\u00bfPor qu\u00e9 Portainer dej\u00f3 de responder a los cinco minutos?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Porque en su primera instalaci\u00f3n Portainer espera exactamente cinco minutos a que alguien lo reclame. Si nadie aparece, echa el cerrojo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sus <a target=\"_blank\" href=\"https:\/\/docs.portainer.io\/faqs\/installing\/i-just-installed-portainer-but-i-cant-access-the-ui-how-do-i-fix-this\">preguntas frecuentes<\/a> (en ingl\u00e9s) lo dicen sin rodeos: como medida de seguridad, en la primera instalaci\u00f3n Portainer espera 5 minutos a que se cree el usuario administrador como parte de la configuraci\u00f3n inicial; si nadie lo crea dentro de esos 5 minutos, el servidor de Portainer deja de escuchar solicitudes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En otras palabras: si el paso 6 te encontr\u00f3 preparando un s\u00e1ndwich, tu instalaci\u00f3n ahora te ignora, y no rompiste nada.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La soluci\u00f3n es un comando: <strong><code>sudo docker restart portainer<\/code><\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El contenedor vuelve a arrancar, obtienes otros cinco minutos y regresas a la pantalla de crear administrador. Repite cuantas veces necesites. Bienvenido al <a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/blog\/es\/revolucion-autoalojamiento-pros-contras\/\">autoalojamiento<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00bfInstalas en serie para una flota (Ansible, Terraform, un pipeline de despliegue)? Portainer acepta la bandera <strong><code>--admin-password-file<\/code><\/strong>, que crea el usuario administrador desde un archivo en el primer arranque del contenedor, sin tener que correr para completar la pantalla inicial. La sintaxis est\u00e1 en su <a href=\"https:\/\/docs.portainer.io\/advanced\/cli\" target=\"_blank\">documentaci\u00f3n de opciones de l\u00ednea de comandos<\/a> (en ingl\u00e9s). Para un solo VPS, con el truco del reinicio alcanza.<\/p>\n\n\n\n<h2 id=\"h-how-do-you-stop-docker-from-bypassing-your-firewall\" class=\"wp-block-heading\">\u00bfC\u00f3mo evitar que Docker se salte tu firewall?<\/h2>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" width=\"1536\" height=\"1024\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/docker-firewall-regla-docker-user-comparacion-dreamops-82a331332e90ef71a7cac793.webp\" alt=\"Comparaci\u00f3n del firewall de Docker: sin la regla DOCKER-USER permite acceso ilimitado al contenedor\" class=\"wp-image-87127 lazyload\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/docker-firewall-regla-docker-user-comparacion-dreamops-82a331332e90ef71a7cac793.webp 1536w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/docker-firewall-regla-docker-user-comparacion-dreamops-82a331332e90ef71a7cac793-300x200.webp 300w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/docker-firewall-regla-docker-user-comparacion-dreamops-82a331332e90ef71a7cac793-1024x683.webp 1024w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/docker-firewall-regla-docker-user-comparacion-dreamops-82a331332e90ef71a7cac793-768x512.webp 768w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/docker-firewall-regla-docker-user-comparacion-dreamops-82a331332e90ef71a7cac793-600x400.webp 600w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/docker-firewall-regla-docker-user-comparacion-dreamops-82a331332e90ef71a7cac793-1200x800.webp 1200w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/docker-firewall-regla-docker-user-comparacion-dreamops-82a331332e90ef71a7cac793-730x487.webp 730w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/docker-firewall-regla-docker-user-comparacion-dreamops-82a331332e90ef71a7cac793-1460x973.webp 1460w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/docker-firewall-regla-docker-user-comparacion-dreamops-82a331332e90ef71a7cac793-784x523.webp 784w, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/08\/docker-firewall-regla-docker-user-comparacion-dreamops-82a331332e90ef71a7cac793-877x585.webp 877w\" data-sizes=\"(max-width: 1536px) 100vw, 1536px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 1536px; --smush-placeholder-aspect-ratio: 1536\/1024;\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Ya lo hiciste, en el paso 4. Lo que sigue es entender qu\u00e9 pas\u00f3 en realidad, c\u00f3mo abrir puertos cuando t\u00fa lo decidas y c\u00f3mo comprobar que funciona.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El problema: con <strong><code>docker run -p 80:80<\/code><\/strong>, el puerto publicado responde al internet p\u00fablico aunque <strong>ufw status<\/strong> marque el puerto 80 como denegado. La <a target=\"_blank\" href=\"https:\/\/docs.docker.com\/engine\/network\/packet-filtering-firewalls\/\">documentaci\u00f3n de filtrado de paquetes de Docker<\/a> (en ingl\u00e9s) lo explica: Docker enruta el tr\u00e1fico de los contenedores en la tabla nat, de modo que los paquetes se desv\u00edan antes de llegar a las cadenas INPUT y OUTPUT que UFW usa.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">UFW no fall\u00f3. Simplemente est\u00e1 cuidando la puerta equivocada.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El remedio que la propia Docker se\u00f1ala es la cadena de iptables <strong>DOCKER-USER<\/strong>, creada por Docker justamente para las reglas definidas por el usuario y procesada antes que las reglas de sus propias cadenas. El script <strong>ufw-docker<\/strong> del paso 4 conecta UFW con esa cadena: a\u00f1ade un bloque de reglas (delimitado por los marcadores <strong># BEGIN UFW AND DOCKER<\/strong> y <strong># END UFW AND DOCKER<\/strong>) al final de <strong>\/etc\/ufw\/after.rules<\/strong>, para que se cargue junto con el resto de tu configuraci\u00f3n de UFW.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Para exponer un puerto de contenedor a prop\u00f3sito<\/strong> (por ejemplo, una aplicaci\u00f3n web en el puerto 80 del contenedor), usa una regla de ruta:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo ufw route allow proto tcp from any to any port 80<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">La documentaci\u00f3n de ufw-docker advierte una trampa: la regla usa el puerto del <em>contenedor<\/em>, no el del host. Si publicaste con <strong><code>-p 8080:80<\/code><\/strong>, la regla correcta es la de arriba (puerto 80), no una con el 8080.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Para comprobarlo desde fuera<\/strong>, con\u00e9ctate desde una red que no est\u00e9 en tu lista de permitidas; el hotspot de tu celular basta. Este comando deber\u00eda agotar su tiempo de espera en lugar de mostrarte el inicio de sesi\u00f3n de Portainer:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -k --max-time 5 https:\/\/YOUR_VPS_IP:9443<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Repite el comando desde la IP que autorizaste en el paso 4 y deber\u00edas recibir HTML. Que UFW diga &#8220;denegado&#8221; es solo una afirmaci\u00f3n; que una red desconocida se quede esperando es la prueba.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Para revertirlo todo<\/strong>, ejecuta <strong><code>sudo ufw-docker uninstall<\/code><\/strong>, que seg\u00fan la documentaci\u00f3n del proyecto restaura tu configuraci\u00f3n de UFW y elimina los archivos que instal\u00f3, y despu\u00e9s <strong><code>sudo ufw reload<\/code><\/strong>. Otra v\u00eda es borrar a mano el bloque entre los marcadores <strong># BEGIN UFW AND DOCKER<\/strong> y <strong># END UFW AND DOCKER<\/strong> de <strong>\/etc\/ufw\/after.rules<\/strong> y recargar UFW.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Esta trampa sorprende a ingenieros con oficio, tanto en m\u00e1quinas personales como en servidores de producci\u00f3n: UFW afirma una cosa, el internet p\u00fablico demuestra otra y la verdad est\u00e1 en iptables. Y si prefieres que Portainer nunca exponga un puerto p\u00fablico, <a target=\"_blank\" href=\"https:\/\/www.portainer.io\/how-to\/how-to-secure-your-portainer-installation\">col\u00f3cale delante un t\u00fanel VPN<\/a> (en ingl\u00e9s) como WireGuard.<\/p>\n\n\n\n<h2 id=\"h-what-should-you-lock-down-right-after-the-first-login\" class=\"wp-block-heading\">\u00bfQu\u00e9 conviene asegurar justo despu\u00e9s del primer inicio de sesi\u00f3n?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ya entraste. Antes de cerrar esa pesta\u00f1a del navegador, haz estas cinco cosas; las primeras cuatro vienen directo de la <a target=\"_blank\" href=\"https:\/\/www.portainer.io\/how-to\/how-to-secure-your-portainer-installation\">gu\u00eda de seguridad de Portainer<\/a> (en ingl\u00e9s):<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Activa <em>Force HTTPS only<\/em>.<\/strong> La instalaci\u00f3n de esta gu\u00eda publica \u00fanicamente el puerto 9443, as\u00ed que de entrada no hay puerto HTTP expuesto. El interruptor <em>Force HTTPS only<\/em>, en <em>Settings \u2192 SSL Certificate<\/em>, lo vuelve permanente: de acuerdo con la documentaci\u00f3n de ajustes de Portainer, apaga por completo la escucha en el puerto HTTP heredado (9000), y as\u00ed un redespliegue futuro con <strong><code>-p 9000:9000<\/code><\/strong> no puede reabrir un camino sin cifrar.<\/li>\n\n\n\n<li><strong>Cambia el certificado autofirmado.<\/strong> Sube un certificado generado por ti, o coloca delante de Portainer un proxy inverso NGINX con un certificado de Let&#8217;s Encrypt. Pasado el primer d\u00eda, saltarte la advertencia del navegador en cada visita es un h\u00e1bito que te va a pasar factura.<\/li>\n\n\n\n<li><strong>Elige un nombre de administrador de verdad.<\/strong> Quedarte con el usuario admin le regala a un atacante una credencial que ya no tiene que adivinar. Usa un nombre espec\u00edfico tuyo.<\/li>\n\n\n\n<li><strong>Limita la interfaz a una VPN.<\/strong> Ejecutar Portainer detr\u00e1s de una VPN de WireGuard es el patr\u00f3n que la gu\u00eda de seguridad de Portainer recomienda. Un puerto 9443 restringido a tu IP de origen (paso 4) est\u00e1 bien; un 9443 accesible solo desde una red privada est\u00e1 mejor.<\/li>\n\n\n\n<li><strong>Audita cada montaje del socket de Docker.<\/strong> Todo lo que alcanza <strong><code>\/var\/run\/docker.sock<\/code><\/strong> controla el daemon de Docker y, con \u00e9l, el host. <em>No<\/em> montes el socket en otros contenedores a la ligera: cada montaje extra es una puerta m\u00e1s hacia el host. Si un contenedor insiste en que necesita el socket, preg\u00fantale para qu\u00e9; si la respuesta es &#8220;para monitoreo&#8221;, eval\u00faa un proxy para el socket.<\/li>\n<\/ul>\n\n\n\n<h2 id=\"h-how-do-you-actually-use-portainer-day-to-day\" class=\"wp-block-heading\">\u00bfQu\u00e9 ganas con Portainer en el d\u00eda a d\u00eda?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">El premio por instalar Portainer llega el d\u00eda en que un contenedor se porta mal y, en vez de abrir una sesi\u00f3n de SSH para reiniciarlo, haces clic en un bot\u00f3n. El premio mayor es la gesti\u00f3n de stacks.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un stack de Portainer es una aplicaci\u00f3n de varios contenedores definida en un archivo de Docker Compose. Seg\u00fan la <a target=\"_blank\" href=\"https:\/\/docs.portainer.io\/user\/docker\/stacks\/add\">documentaci\u00f3n oficial de stacks<\/a> (en ingl\u00e9s), Portainer despliega como stacks las configuraciones de Docker Compose compatibles por cuatro caminos:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Pegar el Compose en el editor web<\/li>\n\n\n\n<li>Subir un archivo Compose<\/li>\n\n\n\n<li>Apuntar Portainer hacia un repositorio de Git<\/li>\n\n\n\n<li>Desplegar desde una plantilla personalizada<\/li>\n<\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" width=\"2560\" height=\"1181\" data-src=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/05-How-Do-You-Actually-Use-Portainer-Day-to-Day_-scaled.gif\" alt=\"Panel de Portainer.io mostrando los Detalles del Stack con tabla de contenedores, registros\" class=\"wp-image-82014 lazyload\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 2560px; --smush-placeholder-aspect-ratio: 2560\/1181;\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">El camino que importa es el de Git. Apuntas Portainer a un repositorio (p\u00fablico o con credenciales) y a la ruta del <strong>docker-compose.yml<\/strong>, y enciendes las actualizaciones GitOps. Portainer revisa el repositorio con la frecuencia que definas, o te entrega una URL de webhook para agregar a tu host de Git (que puede dispararse desde una GitHub Action, por ejemplo). Cuando el archivo Compose cambia en el repositorio, Portainer lo descarga y redespliega en autom\u00e1tico. Y s\u00ed, todo esto est\u00e1 en Community Edition: en la p\u00e1gina de stacks de la documentaci\u00f3n, la \u00fanica opci\u00f3n marcada como exclusiva de Business Edition es la de vol\u00famenes con rutas relativas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Es &#8220;desplegar con cada push&#8221; en versi\u00f3n autoalojada, sin pagarle a una PaaS por el privilegio.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Las victorias peque\u00f1as tambi\u00e9n cuentan: los logs en un panel en lugar de <strong>docker logs -f<\/strong>, reinicios con un clic, reconstruir un stack con un bot\u00f3n y gr\u00e1ficas de recursos que entiendes en tres segundos sin abrir docker stats.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00bfY el puerto 8000? El d\u00eda que conectes un entorno remoto con un Edge Agent, redespliega Portainer agregando <strong><code>-p 8000:8000<\/code><\/strong> y luego permite en UFW el puerto 8000 del contenedor desde la IP p\u00fablica de salida de cada Edge Agent, sustituyendo <strong><code>EDGE_AGENT_IP<\/code><\/strong> aqu\u00ed: <strong><code>sudo ufw route allow proto tcp from EDGE_AGENT_IP to any port 8000<\/code><\/strong>.<\/p>\n\n\n\n<h2 id=\"h-how-do-you-back-up-portainer-and-your-containers\" class=\"wp-block-heading\">\u00bfC\u00f3mo respaldar Portainer y tus contenedores?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Un volumen es persistencia, no un respaldo. El volumen <strong>portainer_data<\/strong> del paso 5 sobrevive a las actualizaciones del contenedor, pero comparte disco con todo lo dem\u00e1s. Por eso un plan de respaldo serio tiene tres partes, y las tres terminan fuera del VPS.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>1. La configuraci\u00f3n de Portainer.<\/strong> En la interfaz, entra a <em>Settings \u2192 Back up Portainer<\/em> y haz clic en <em>Download backup file<\/em>. De acuerdo con la <a target=\"_blank\" href=\"https:\/\/docs.portainer.io\/admin\/settings\">documentaci\u00f3n de ajustes de Portainer<\/a> (en ingl\u00e9s), obtienes un tar.gz con todo lo que Portainer guarda en su volumen \/data, cifrado con contrase\u00f1a si as\u00ed lo pides, y ese archivo basta para restaurar Portainer. El alcance tambi\u00e9n est\u00e1 claro en la documentaci\u00f3n: respalda <em>solo<\/em> la configuraci\u00f3n de Portainer, no los contenedores, stacks ni vol\u00famenes que hayas desplegado. (Los respaldos programados hacia S3 existen, pero \u00fanicamente en Business Edition; en CE, agenda un recordatorio recurrente en tu calendario.)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>2. Los datos de tus aplicaciones.<\/strong> La <a target=\"_blank\" href=\"https:\/\/docs.docker.com\/engine\/storage\/volumes\/\">documentaci\u00f3n de vol\u00famenes de Docker<\/a> (en ingl\u00e9s) se\u00f1ala los vol\u00famenes con nombre como el mecanismo preferido para persistir los datos de un contenedor, y m\u00e1s f\u00e1ciles de respaldar o migrar que los bind mounts. Para archivar uno, m\u00f3ntalo en modo de solo lectura dentro de un contenedor desechable y compr\u00edmelo con tar (sustituye el nombre por el de tu volumen):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo docker run --rm \\\n  -v myapp_data:\/source:ro \\\n  -v \"$PWD\":\/backup \\\n  alpine tar czf \/backup\/myapp_data.tgz -C \/source .<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Con las bases de datos, usa la herramienta de volcado del propio motor (pg_dump, mysqldump) en lugar de copiar los archivos de datos en caliente, para no archivar un archivo a medio escribir. Y saca los archivos del servidor con regularidad: rsync o scp hacia otra m\u00e1quina, o un almacenamiento de objetos. Un respaldo que vive en el mismo disco que respalda muere junto con ese disco.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>3. Tus archivos Compose y tus secretos.<\/strong> Si despliegas stacks desde Git, los archivos Compose ya est\u00e1n fuera del host. Lo que Git <em>no<\/em> tiene es lo que nunca le confiaste: archivos .env, llaves de API y contrase\u00f1as escritas al momento del despliegue. Los directorios montados con bind tampoco entran en el respaldo de vol\u00famenes anterior. Haz un inventario aparte de todo eso y resp\u00e1ldalo cifrado.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Y ensaya la restauraci\u00f3n antes de necesitarla.<\/strong> Seg\u00fan la documentaci\u00f3n de Portainer, la restauraci\u00f3n de configuraci\u00f3n solo funciona en una instancia nueva: despliega otro contenedor de Portainer con un volumen de datos vac\u00edo (un VPS desechable o tu laptop sirven), elige <em>Restore Portainer from backup<\/em> durante la configuraci\u00f3n inicial y verifica que entras con tus credenciales anteriores y que tus definiciones de stacks siguen ah\u00ed. Ese ensayo cubre solo la parte 1, la configuraci\u00f3n de Portainer. Las partes 2 y 3 exigen su propia prueba, aplicaci\u00f3n por aplicaci\u00f3n: restaura el archivo en un volumen nuevo, arranca la aplicaci\u00f3n contra ese volumen y confirma que los datos de verdad existen. Un respaldo que nunca probaste no es un respaldo: es una ilusi\u00f3n con nombre de archivo.<\/p>\n\n\n\n<h2 id=\"h-what-does-portainer-cost-and-when-does-free-stop-being-free\" class=\"wp-block-heading\">\u00bfCu\u00e1nto cuesta Portainer? \u00bfY cu\u00e1ndo deja de ser gratis?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Portainer es gratuito por partida doble. Community Edition es gratuita y de <a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/blog\/es\/codigo-abierto-vs-propiertario\/\">c\u00f3digo abierto<\/a> (licencia zlib), sin clave de licencia de por medio. Y Portainer Business Edition es <a target=\"_blank\" href=\"https:\/\/www.portainer.io\/take-3\">gratis para siempre hasta 3 nodos<\/a> (en ingl\u00e9s): todas las funciones Business, sin fecha de caducidad y sin tarjeta de cr\u00e9dito. Solo te registras para recibir una clave de licencia gratuita.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th><strong>Edici\u00f3n<\/strong><\/th><th><strong>Costo<\/strong><\/th><th><strong>Nodos<\/strong><\/th><th><strong>Ideal para<\/strong><\/th><\/tr><\/thead><tbody><tr><td>Community Edition<\/td><td>Gratuita, de c\u00f3digo abierto<\/td><td>Sin licencias por nodo<\/td><td>Proyectos personales, homelabs y autoalojamiento en un solo VPS<\/td><\/tr><tr><td>Business Edition (3 nodos gratis)<\/td><td>Gratuita, sin l\u00edmite de tiempo<\/td><td>Hasta 3<\/td><td>Homelabs peque\u00f1os que quieren funciones Business como RBAC<\/td><\/tr><tr><td>Home &amp; Student<\/td><td>$155 USD al a\u00f1o<\/td><td>Hasta 15<\/td><td>Homelabs grandes y estudiantes; solo uso no comercial<\/td><\/tr><tr><td>Business Starter<\/td><td>Desde $105 USD al mes<\/td><td>5, 10 o 15<\/td><td>Equipos peque\u00f1os que administran infraestructura en producci\u00f3n (soporte comunitario)<\/td><\/tr><tr><td>Business Scale<\/td><td>Desde $209 USD al mes<\/td><td>De 5 a 35<\/td><td>Equipos en crecimiento que requieren soporte 9&#215;5<\/td><\/tr><tr><td>Enterprise<\/td><td>Cotizaci\u00f3n<\/td><td>A la medida<\/td><td>Cumplimiento normativo y soporte prioritario<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Los precios provienen de la <a target=\"_blank\" href=\"https:\/\/www.portainer.io\/pricing\">p\u00e1gina de precios de Portainer<\/a> (en ingl\u00e9s) a agosto de 2026; Starter y Scale piden un compromiso anual.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00bfCon cu\u00e1l quedarte? Para un solo VPS con un solo administrador, <strong>Community Edition<\/strong>: es de c\u00f3digo abierto, no pide registro y hace todo lo de esta gu\u00eda, despliegues desde Git incluidos. Si necesitas control de acceso por roles (RBAC) para otra persona, o ya administras dos o tres servidores, mejor toma el nivel gratuito de 3 nodos de Business Edition: el mismo software con las funciones Business encendidas, gratis mientras no pases de tres nodos. Los planes de pago solo tienen sentido cuando un equipo administra una cantidad considerable de nodos. Y antes de asumir que pagar equivale a tener soporte, revisa la letra: a agosto de 2026, la p\u00e1gina de precios de Portainer marca soporte comunitario en el plan Starter, soporte 9&#215;5 al siguiente d\u00eda h\u00e1bil del plan Scale en adelante y soporte prioritario en Enterprise.<\/p>\n\n\n\n<h2 id=\"h-should-you-add-portainer-or-skip-it\" class=\"wp-block-heading\">\u00bfInstalar Portainer o seguir sin \u00e9l?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">La respuesta honesta cabe en dos oraciones:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u2705 Si vas a compartir el servidor, desplegar desde Git o ejecutar m\u00e1s de tres contenedores de aqu\u00ed a un a\u00f1o, instala Portainer ahora, con el host reci\u00e9n estrenado y tus h\u00e1bitos todav\u00eda por formarse.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u274c Si tienes una sola aplicaci\u00f3n tranquila y la terminal te basta, no vas a extra\u00f1ar una interfaz que nunca instalaste.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La pregunta de fondo no es Portainer s\u00ed o Portainer no; es si el autoalojamiento va contigo. Y esa la contestaste cuando abriste esta pesta\u00f1a.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un VPS de 4 GB, Docker y Portainer CE bastan para autoalojarte en serio: elige tus aplicaciones, suma sus requisitos documentados y deja que la cuenta, y no el antojo, decida cu\u00e1ndo le toca crecer al servidor.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No es un mal trato.<\/p>\n\n\n\n<h2 id=\"h-frequently-asked-questions-about-docker-and-portainer\" class=\"wp-block-heading\">Preguntas frecuentes sobre Docker y Portainer<\/h2>\n\n\n\n<h3 id=\"h-can-you-run-docker-on-a-vps\" class=\"wp-block-heading\">\u00bfSe puede ejecutar Docker en un VPS?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">S\u00ed. Un VPS con acceso root es de los lugares m\u00e1s flexibles para ejecutar Docker: instalas Docker Engine sobre el Linux del servidor y cada aplicaci\u00f3n se ejecuta en su propio contenedor. El punto que suele confundir: el VPS es el servidor virtual que rentas, y Docker es el software que instalas en \u00e9l para aislar aplicaciones en contenedores. Sirve cualquier VPS con acceso root y RAM suficiente para tus contenedores; <a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/es\/hosting\/vps\/docker\/\">DreamHost VPS Hosting<\/a> ofrece incluso una imagen con Docker + Portainer preinstalados.<\/p>\n\n\n\n<h3 id=\"h-what-is-portainer-used-for\" class=\"wp-block-heading\">\u00bfPara qu\u00e9 sirve Portainer?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Portainer sirve para administrar contenedores de Docker, Docker Swarm y Kubernetes desde una interfaz web. Se ejecuta como un contenedor de Docker m\u00e1s, se conecta al socket de Docker del host y te da visibilidad y control sobre el resto de los contenedores del host: iniciarlos y detenerlos, desplegar stacks de varios contenedores, revisar logs y gestionar los accesos de usuarios sin abrir una sesi\u00f3n de SSH.<\/p>\n\n\n\n<h3 id=\"h-do-i-need-portainer-if-i-have-docker\" class=\"wp-block-heading\">\u00bfNecesito Portainer si tengo Docker?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">No, no necesitas Portainer para usar Docker. Docker se maneja completo desde la terminal, y hay quien se autoaloja por a\u00f1os sin instalar interfaz alguna.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Portainer se justifica cuando administras m\u00e1s de dos o tres contenedores, compartes el acceso con alguien ajeno a la terminal o despliegas actualizaciones de stacks desde un repositorio de Git. Si tienes uno o dos contenedores estables y Docker Compose te funciona, s\u00e1ltatelo.<\/p>\n\n\n\n<h3 id=\"h-what-port-does-portainer-run-on\" class=\"wp-block-heading\">\u00bfEn qu\u00e9 puerto funciona Portainer?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Portainer entrega su interfaz web por HTTPS en el puerto 9443 de manera predeterminada. El comando oficial de la <a href=\"https:\/\/docs.portainer.io\/start\/install-ce\/server\/docker\/linux\" target=\"_blank\">documentaci\u00f3n de instalaci\u00f3n de Portainer para Linux<\/a> (en ingl\u00e9s) publica adem\u00e1s el puerto 8000, un t\u00fanel TCP que solo usan los Edge Agents cuando m\u00e1s adelante conectas hosts remotos de Docker; como es opcional, la instalaci\u00f3n de un solo host de esta gu\u00eda omite por completo la bandera <strong><code>-p 8000:8000<\/code><\/strong>.<\/p>\n\n\n\n<h3 id=\"h-how-much-ram-does-portainer-need\" class=\"wp-block-heading\">\u00bfCu\u00e1nta RAM necesita Portainer?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Los requisitos de sistema vigentes de Portainer no publican un m\u00ednimo de RAM: el servidor se ejecuta como un contenedor ligero, y la gu\u00eda de rendimiento de su documentaci\u00f3n trata sobre disco, no sobre memoria. Calcula la RAM sumando los requisitos documentados del sistema operativo, del daemon de Docker y de cada aplicaci\u00f3n que vayas a ejecutar, y deja margen para los picos.<br><br>En DreamHost, Stack 4, el plan de entrada de nuestro <a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/es\/hosting\/vps\/\">VPS Hosting<\/a>, incluye 4 GB de RAM: un punto de partida para una pila peque\u00f1a de contenedores de proyectos personales como <a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/blog\/es\/autoalojar-ghost-cms-la-guia-completa-es\/\">Ghost<\/a> o <a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/blog\/es\/como-ejecutar-n8n-en-tu-propio-servidor-es\/\">n8n<\/a>. Si 4 GB alcanzan depende de las aplicaciones que de verdad ejecutes; cuando la suma crezca, puedes pasar a un plan Stack mayor.<\/p>\n\n\n\n<h3 id=\"h-is-portainer-free\" class=\"wp-block-heading\">\u00bfPortainer es gratis?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">S\u00ed, por partida doble. Portainer Community Edition es gratuita y de <a target=\"_blank\" href=\"https:\/\/www.dreamhost.com\/blog\/es\/codigo-abierto-vs-propiertario\/\">c\u00f3digo abierto<\/a>, sin clave de licencia. Portainer Business Edition (que suma funciones como el control de acceso por roles) tambi\u00e9n es gratuita hasta 3 nodos, con funciones completas y sin l\u00edmite de tiempo; te registras para recibir una clave de licencia gratuita en lugar de pagar. Por encima de tres nodos, los precios de Business parten de $105 USD al mes en el plan Starter seg\u00fan la <a target=\"_blank\" href=\"https:\/\/www.portainer.io\/pricing\">p\u00e1gina de precios de Portainer<\/a> (en ingl\u00e9s) a agosto de 2026, y la licencia Home &amp; Student de $155 USD al a\u00f1o cubre homelabs no comerciales de hasta 15 nodos.<\/p>\n\n\n\n<h3 id=\"h-can-portainer-manage-multiple-docker-hosts\" class=\"wp-block-heading\">\u00bfPuede Portainer administrar varios hosts de Docker?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">S\u00ed, mediante Agents y Edge Agents. El Agent est\u00e1ndar escucha en el puerto 9001 de cada host remoto; los Edge Agents se conectan en el sentido contrario, hacia el puerto de t\u00fanel 8000 del servidor de Portainer, y de acuerdo con la documentaci\u00f3n de requisitos de Portainer no necesitan puertos de entrada abiertos. Para autoalojarte en un solo VPS no requieres nada de esa maquinaria; por eso esta gu\u00eda quita la bandera del puerto 8000 que trae el comando oficial de Portainer. El d\u00eda que conectes un entorno remoto con un Edge Agent, redespliega Portainer agregando <strong><code>-p 8000:8000<\/code><\/strong> y luego permite en UFW el puerto 8000 del contenedor desde la IP p\u00fablica de salida de cada Edge Agent, sustituyendo <strong><code>EDGE_AGENT_IP<\/code><\/strong> aqu\u00ed: <strong><code>sudo ufw route allow proto tcp from EDGE_AGENT_IP to any port 8000<\/code><\/strong>.<\/p>\n\n\n\n<h3 id=\"h-does-docker-bypass-ufw-on-a-vps\" class=\"wp-block-heading\">\u00bfDocker se salta UFW en un VPS?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">S\u00ed. De manera predeterminada, Docker se salta UFW porque gestiona el tr\u00e1fico de los contenedores en la capa NAT de iptables, que se procesa antes que las cadenas INPUT y OUTPUT que UFW usa.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La <a target=\"_blank\" href=\"https:\/\/docs.docker.com\/engine\/network\/packet-filtering-firewalls\/\">documentaci\u00f3n de filtrado de paquetes de Docker<\/a> (en ingl\u00e9s) lo confirma: los paquetes se desv\u00edan antes de alcanzar las cadenas INPUT y OUTPUT que UFW utiliza. La correcci\u00f3n es colocar tus reglas en la cadena de iptables <strong>DOCKER-USER<\/strong>, y una herramienta comunitaria que conecta UFW con esa cadena es <a target=\"_blank\" href=\"https:\/\/github.com\/chaifeng\/ufw-docker\">chaifeng\/ufw-docker<\/a> (en ingl\u00e9s), instalada en el paso 4 de esta gu\u00eda, antes del primer arranque de Portainer.<\/p>\n\n\n\n\n<div class=\"article-cta-shared article-cta-small article-cta--product\">\n\t<div class=\"tr-img-wrap-outer jsLoading\"><img decoding=\"async\" class=\"js-img-lazy \" src=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/themes\/blog2018\/assets\/img\/lazy-loading-transparent.webp\" data-srcset=\"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/cta_image_a-877x522.webp 1x, https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/cta_image_a.webp 2x\"  \/><\/div>\n\n\t<a href='https:\/\/www.dreamhost.com\/hosting\/vps\/' class='link-top' target='_blank' rel='noopener noreferrer'>\n\t\t<span>VPS<\/span>\n\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 384 512\" width=\"15\"><path d=\"M342.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L274.7 256 105.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z\"\/><\/svg>\n\t<\/a>\n\n\t<div class=\"content-btm\">\n\t\t<h2 class=\"h2--md\">\n\t\t\tOwn Your Entire Stack. Apps, AI, Databases, and More.\n\t\t<\/h2>\n\t\t<p class=\"p--md\">\n\t\t\tKeep every credential and conversation on a server you control, with NVMe speed and unmetered bandwidth built in.\n\t\t<\/p>\n\n\t\t        <a\n            href=\"https:\/\/www.dreamhost.com\/hosting\/vps\/\"\n                        class=\"btn btn--white-outline btn--sm btn--round\"\n                                    target=\"_blank\"\n            rel=\"noopener noreferrer\"\n            >\n                            Explore VPS Hosting Plans                    <\/a>\n\n\t<\/div>\n<\/div>\n\n\n<script type=\"application\/ld+json\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"FAQPage\",\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"\u00bfSe puede ejecutar Docker en un VPS?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"S\u00ed. Un VPS con acceso root es de los lugares m\u00e1s flexibles para ejecutar Docker: instalas Docker Engine sobre el Linux del servidor y cada aplicaci\u00f3n se ejecuta en su propio contenedor. El VPS es el servidor virtual que rentas; Docker es el software que instalas en \u00e9l para aislar aplicaciones en contenedores.\"}},{\"@type\":\"Question\",\"name\":\"\u00bfPara qu\u00e9 sirve Portainer?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Portainer sirve para administrar contenedores de Docker, Docker Swarm y Kubernetes desde una interfaz web. Se ejecuta como un contenedor de Docker m\u00e1s, se conecta al socket de Docker del host y te da visibilidad y control sobre el resto de los contenedores del host: iniciarlos y detenerlos, desplegar stacks de varios contenedores, revisar logs y gestionar los accesos de usuarios sin abrir una sesi\u00f3n de SSH.\"}},{\"@type\":\"Question\",\"name\":\"\u00bfNecesito Portainer si tengo Docker?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"No, no necesitas Portainer para usar Docker. Docker se maneja completo desde la terminal, y hay quien se autoaloja por a\u00f1os sin instalar interfaz alguna.\"}},{\"@type\":\"Question\",\"name\":\"\u00bfEn qu\u00e9 puerto funciona Portainer?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Portainer entrega su interfaz web por HTTPS en el puerto 9443 de manera predeterminada. El comando de instalaci\u00f3n oficial publica adem\u00e1s el puerto 8000, un t\u00fanel TCP que solo usan los Edge Agents cuando conectas hosts remotos de Docker; en una instalaci\u00f3n de un solo host es opcional.\"}},{\"@type\":\"Question\",\"name\":\"\u00bfCu\u00e1nta RAM necesita Portainer?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Los requisitos de sistema vigentes de Portainer no publican un m\u00ednimo de RAM: el servidor se ejecuta como un contenedor ligero, y la gu\u00eda de rendimiento de su documentaci\u00f3n trata sobre disco, no sobre memoria. Calcula la RAM sumando los requisitos documentados del sistema operativo, del daemon de Docker y de cada aplicaci\u00f3n que vayas a ejecutar, y deja margen para los picos.\"}},{\"@type\":\"Question\",\"name\":\"\u00bfPortainer es gratis?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"S\u00ed, por partida doble. Portainer Community Edition es gratuita y de c\u00f3digo abierto, sin clave de licencia. Portainer Business Edition tambi\u00e9n es gratuita hasta 3 nodos, con funciones completas y sin l\u00edmite de tiempo; por encima de tres nodos, los precios de Business parten de $105 USD al mes en el plan Starter, a agosto de 2026.\"}},{\"@type\":\"Question\",\"name\":\"\u00bfPuede Portainer administrar varios hosts de Docker?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"S\u00ed, mediante Agents y Edge Agents. El Agent est\u00e1ndar escucha en el puerto 9001 de cada host remoto; los Edge Agents se conectan en el sentido contrario, hacia el puerto de t\u00fanel 8000 del servidor de Portainer, y no necesitan puertos de entrada abiertos.\"}},{\"@type\":\"Question\",\"name\":\"\u00bfDocker se salta UFW en un VPS?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"S\u00ed. De manera predeterminada, Docker se salta UFW porque gestiona el tr\u00e1fico de los contenedores en la capa NAT de iptables, que se procesa antes que las cadenas INPUT y OUTPUT que UFW usa. La correcci\u00f3n es colocar tus reglas en la cadena de iptables DOCKER-USER; una herramienta comunitaria que conecta UFW con esa cadena es chaifeng\/ufw-docker.\"}}]},{\"@type\":\"HowTo\",\"name\":\"C\u00f3mo instalar Docker y Portainer en un VPS\",\"description\":\"Instala Docker y Portainer Community Edition en un VPS con Ubuntu en siete pasos, desde elegir la distribuci\u00f3n de Linux hasta crear la cuenta de administrador. El tiempo de descarga e instalaci\u00f3n depende de tu VPS y de tu conexi\u00f3n de red.\",\"step\":[{\"@type\":\"HowToStep\",\"position\":1,\"name\":\"Elige tu distribuci\u00f3n de Linux\",\"text\":\"Esta gu\u00eda trabaja con Ubuntu 24.04 LTS. A agosto de 2026, Docker Engine es compatible con Ubuntu 22.04, 24.04 y 26.04 LTS. Debian y la familia RHEL, como AlmaLinux, tienen sus propias instrucciones en la documentaci\u00f3n de Docker, y la documentaci\u00f3n de instalaci\u00f3n de Portainer da por hecho que SELinux est\u00e1 desactivado en los sistemas de la familia RHEL.\"},{\"@type\":\"HowToStep\",\"position\":2,\"name\":\"Instala Docker desde su repositorio oficial\",\"text\":\"Nada de apt install docker.io: la documentaci\u00f3n de instalaci\u00f3n de Docker lo pone en la lista de paquetes no oficiales que deben desinstalarse antes. Limpia los paquetes en conflicto, agrega la llave GPG y el repositorio apt de Docker seg\u00fan su documentaci\u00f3n oficial, y despu\u00e9s ejecuta: sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin\"},{\"@type\":\"HowToStep\",\"position\":3,\"name\":\"Comprueba que Docker funcione\",\"text\":\"Ejecuta sudo docker run hello-world. Si no aparece el mensaje \\\"Hello from Docker!\\\", repara el daemon antes de ponerle Portainer encima.\"},{\"@type\":\"HowToStep\",\"position\":4,\"name\":\"Conecta UFW con Docker antes de encender Portainer\",\"text\":\"Los puertos que Docker publica se saltan UFW de manera predeterminada. Activa UFW (permitiendo SSH primero), instala el script chaifeng\/ufw-docker en su versi\u00f3n 251123, ejecuta ufw-docker install, recarga UFW y agrega una regla que permita tu IP de origen hacia el puerto 9443 del contenedor \u2014 sudo ufw route allow proto tcp from YOUR_HOME_IP to any port 9443 \u2014 antes de que Portainer arranque, para que la interfaz nunca quede expuesta al p\u00fablico durante su ventana inicial de cinco minutos.\"},{\"@type\":\"HowToStep\",\"position\":5,\"name\":\"Crea un volumen persistente para los datos de Portainer\",\"text\":\"Ejecuta sudo docker volume create portainer_data. Con la base de datos de Portainer en un volumen de Docker, fuera del contenedor, una actualizaci\u00f3n de Portainer no se lleva tu configuraci\u00f3n.\"},{\"@type\":\"HowToStep\",\"position\":6,\"name\":\"Levanta Portainer Community Edition\",\"text\":\"Usa el comando oficial de la documentaci\u00f3n de instalaci\u00f3n de Portainer para Linux, sin el puerto opcional del t\u00fanel de Edge Agents: sudo docker run -d -p 9443:9443 --name portainer --restart=always -v \/var\/run\/docker.sock:\/var\/run\/docker.sock -v portainer_data:\/data portainer\/portainer-ce:lts. La bandera -d lo ejecuta en segundo plano, -p 9443:9443 publica la interfaz web por HTTPS, --restart=always vuelve a levantar Portainer tras un reinicio, las banderas -v montan el socket y el volumen persistente del paso 5, y la etiqueta :lts te ancla a la l\u00ednea de soporte a largo plazo de Portainer.\"},{\"@type\":\"HowToStep\",\"position\":7,\"name\":\"Entra a la interfaz de Portainer y crea la cuenta de administrador\",\"text\":\"Abre https:\/\/YOUR_VPS_IP:9443 en tu navegador desde la direcci\u00f3n IP que autorizaste en el paso 4. Acepta la advertencia del certificado autofirmado. Ver\u00e1s la pantalla para crear el usuario administrador inicial. Escoge un nombre que no sea admin, define una contrase\u00f1a fuerte y gu\u00e1rdala en un lugar confiable.\"}]}]}<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Ejecuta Docker en un VPS con la interfaz web de Portainer al frente. Pasos de instalaci\u00f3n, dimensionamiento, seguridad y las trampas que cada gu\u00eda de instalaci\u00f3n omite. Aproximadamente 30 minutos de principio a fin.<\/p>\n","protected":false},"author":2,"featured_media":82008,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_yoast_wpseo_opengraph-title":"C\u00f3mo ejecutar Docker en un VPS con Portainer (gu\u00eda 2026)","_yoast_wpseo_opengraph-description":"Instala Docker y Portainer en un VPS con Ubuntu en 7 pasos: firewall UFW bien configurado, puerto 9443, respaldos y cu\u00e1nta RAM necesitas de verdad.","_yoast_wpseo_twitter-title":"C\u00f3mo ejecutar Docker en un VPS con Portainer (gu\u00eda 2026)","_yoast_wpseo_twitter-description":"Instala Docker y Portainer en un VPS con Ubuntu en 7 pasos: firewall UFW bien configurado, puerto 9443, respaldos y cu\u00e1nta RAM necesitas de verdad.","toc_headlines":"[[\"h-what-is-portainer-exactly\",\"\u00bfQu\u00e9 es Portainer exactamente?\"],[\"h-do-you-need-portainer-if-you-already-have-docker\",\"\u00bfNecesitas Portainer si ya tienes Docker?\"],[\"h-how-big-a-vps-do-you-need-to-run-docker-and-portainer\",\"\u00bfQu\u00e9 tama\u00f1o de VPS necesitas para Docker y Portainer?\"],[\"h-how-do-you-install-docker-and-portainer-on-a-vps\",\"\u00bfC\u00f3mo instalar Docker y Portainer en un VPS?\"],[\"h-why-did-portainer-just-time-out-on-me\",\"\u00bfPor qu\u00e9 Portainer dej\u00f3 de responder a los cinco minutos?\"],[\"h-how-do-you-stop-docker-from-bypassing-your-firewall\",\"\u00bfC\u00f3mo evitar que Docker se salte tu firewall?\"],[\"h-what-should-you-lock-down-right-after-the-first-login\",\"\u00bfQu\u00e9 conviene asegurar justo despu\u00e9s del primer inicio de sesi\u00f3n?\"],[\"h-how-do-you-actually-use-portainer-day-to-day\",\"\u00bfQu\u00e9 ganas con Portainer en el d\u00eda a d\u00eda?\"],[\"h-how-do-you-back-up-portainer-and-your-containers\",\"\u00bfC\u00f3mo respaldar Portainer y tus contenedores?\"],[\"h-what-does-portainer-cost-and-when-does-free-stop-being-free\",\"\u00bfCu\u00e1nto cuesta Portainer? \u00bfY cu\u00e1ndo deja de ser gratis?\"],[\"h-should-you-add-portainer-or-skip-it\",\"\u00bfInstalar Portainer o seguir sin \u00e9l?\"],[\"h-frequently-asked-questions-about-docker-and-portainer\",\"Preguntas frecuentes sobre Docker y Portainer\"]]","hide_toc":false,"show_updated_at":"1","footnotes":""},"categories":[11668,11690,11692],"tags":[],"class_list":["post-82076","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutoriales","category-vps-hosting","category-web-hosting"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.3 (Yoast SEO v28.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>C\u00f3mo ejecutar Docker en un VPS con Portainer (gu\u00eda 2026)<\/title>\n<meta name=\"description\" content=\"Instala Docker y Portainer en un VPS con Ubuntu en 7 pasos: firewall UFW bien configurado, puerto 9443, respaldos y cu\u00e1nta RAM necesitas de verdad.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www-dev.dreamhost.com\/blog\/es\/como-ejecutar-docker-y-portainer-en-un-vps-guia-2026-es\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"C\u00f3mo ejecutar Docker en un VPS con Portainer (gu\u00eda 2026)\" \/>\n<meta property=\"og:description\" content=\"Instala Docker y Portainer en un VPS con Ubuntu en 7 pasos: firewall UFW bien configurado, puerto 9443, respaldos y cu\u00e1nta RAM necesitas de verdad.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www-dev.dreamhost.com\/blog\/es\/como-ejecutar-docker-y-portainer-en-un-vps-guia-2026-es\/\" \/>\n<meta property=\"og:site_name\" content=\"DreamHost Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/DreamHost\/\" \/>\n<meta property=\"article:published_time\" content=\"2026-06-19T14:30:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-26T02:50:53+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/1460x1095-BLOG-HERO-Run-Docker-and-Portainer-on-a-VPS-2026-Guide_1x.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1460\" \/>\n\t<meta property=\"og:image:height\" content=\"1095\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Dallas Kashuba\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"C\u00f3mo ejecutar Docker en un VPS con Portainer (gu\u00eda 2026)\" \/>\n<meta name=\"twitter:description\" content=\"Instala Docker y Portainer en un VPS con Ubuntu en 7 pasos: firewall UFW bien configurado, puerto 9443, respaldos y cu\u00e1nta RAM necesitas de verdad.\" \/>\n<meta name=\"twitter:creator\" content=\"@http:\/\/twitter.com\/dallas\" \/>\n<meta name=\"twitter:site\" content=\"@dreamhost\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Dallas Kashuba\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"17 minutes\" \/>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"C\u00f3mo ejecutar Docker en un VPS con Portainer (gu\u00eda 2026)","description":"Instala Docker y Portainer en un VPS con Ubuntu en 7 pasos: firewall UFW bien configurado, puerto 9443, respaldos y cu\u00e1nta RAM necesitas de verdad.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www-dev.dreamhost.com\/blog\/es\/como-ejecutar-docker-y-portainer-en-un-vps-guia-2026-es\/","og_locale":"en_US","og_type":"article","og_title":"C\u00f3mo ejecutar Docker en un VPS con Portainer (gu\u00eda 2026)","og_description":"Instala Docker y Portainer en un VPS con Ubuntu en 7 pasos: firewall UFW bien configurado, puerto 9443, respaldos y cu\u00e1nta RAM necesitas de verdad.","og_url":"https:\/\/www-dev.dreamhost.com\/blog\/es\/como-ejecutar-docker-y-portainer-en-un-vps-guia-2026-es\/","og_site_name":"DreamHost Blog","article_publisher":"https:\/\/www.facebook.com\/DreamHost\/","article_published_time":"2026-06-19T14:30:00+00:00","article_modified_time":"2026-08-26T02:50:53+00:00","og_image":[{"width":1460,"height":1095,"url":"https:\/\/www.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/1460x1095-BLOG-HERO-Run-Docker-and-Portainer-on-a-VPS-2026-Guide_1x.webp","type":"image\/webp"}],"author":"Dallas Kashuba","twitter_card":"summary_large_image","twitter_title":"C\u00f3mo ejecutar Docker en un VPS con Portainer (gu\u00eda 2026)","twitter_description":"Instala Docker y Portainer en un VPS con Ubuntu en 7 pasos: firewall UFW bien configurado, puerto 9443, respaldos y cu\u00e1nta RAM necesitas de verdad.","twitter_creator":"@http:\/\/twitter.com\/dallas","twitter_site":"@dreamhost","twitter_misc":{"Written by":"Dallas Kashuba","Est. reading time":"17 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www-dev.dreamhost.com\/blog\/es\/como-ejecutar-docker-y-portainer-en-un-vps-guia-2026-es\/#article","isPartOf":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/es\/como-ejecutar-docker-y-portainer-en-un-vps-guia-2026-es\/"},"author":{"name":"Dallas Kashuba","@id":"https:\/\/www-dev.dreamhost.com\/blog\/#\/schema\/person\/f6a12ad459538e8e418cf31b8b603814"},"headline":"C\u00f3mo ejecutar Docker en un VPS con Portainer (gu\u00eda 2026)","datePublished":"2026-06-19T14:30:00+00:00","dateModified":"2026-08-26T02:50:53+00:00","mainEntityOfPage":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/es\/como-ejecutar-docker-y-portainer-en-un-vps-guia-2026-es\/"},"wordCount":5615,"publisher":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/#organization"},"image":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/es\/como-ejecutar-docker-y-portainer-en-un-vps-guia-2026-es\/#primaryimage"},"thumbnailUrl":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/1460x1095-BLOG-HERO-Run-Docker-and-Portainer-on-a-VPS-2026-Guide_1x.webp","articleSection":["Tutoriales","VPS Hosting","Web Hosting"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www-dev.dreamhost.com\/blog\/es\/como-ejecutar-docker-y-portainer-en-un-vps-guia-2026-es\/","url":"https:\/\/www-dev.dreamhost.com\/blog\/es\/como-ejecutar-docker-y-portainer-en-un-vps-guia-2026-es\/","name":"C\u00f3mo ejecutar Docker en un VPS con Portainer (gu\u00eda 2026)","isPartOf":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/es\/como-ejecutar-docker-y-portainer-en-un-vps-guia-2026-es\/#primaryimage"},"image":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/es\/como-ejecutar-docker-y-portainer-en-un-vps-guia-2026-es\/#primaryimage"},"thumbnailUrl":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/1460x1095-BLOG-HERO-Run-Docker-and-Portainer-on-a-VPS-2026-Guide_1x.webp","datePublished":"2026-06-19T14:30:00+00:00","dateModified":"2026-08-26T02:50:53+00:00","description":"Instala Docker y Portainer en un VPS con Ubuntu en 7 pasos: firewall UFW bien configurado, puerto 9443, respaldos y cu\u00e1nta RAM necesitas de verdad.","breadcrumb":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/es\/como-ejecutar-docker-y-portainer-en-un-vps-guia-2026-es\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www-dev.dreamhost.com\/blog\/es\/como-ejecutar-docker-y-portainer-en-un-vps-guia-2026-es\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www-dev.dreamhost.com\/blog\/es\/como-ejecutar-docker-y-portainer-en-un-vps-guia-2026-es\/#primaryimage","url":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/1460x1095-BLOG-HERO-Run-Docker-and-Portainer-on-a-VPS-2026-Guide_1x.webp","contentUrl":"https:\/\/www-dev.dreamhost.com\/blog\/wp-content\/uploads\/2026\/06\/1460x1095-BLOG-HERO-Run-Docker-and-Portainer-on-a-VPS-2026-Guide_1x.webp","width":1460,"height":1095,"caption":"How To Run Docker and Portainer on a VPS (2026 Guide)"},{"@type":"BreadcrumbList","@id":"https:\/\/www-dev.dreamhost.com\/blog\/es\/como-ejecutar-docker-y-portainer-en-un-vps-guia-2026-es\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.dreamhost.com\/blog\/"},{"@type":"ListItem","position":2,"name":"C\u00f3mo ejecutar Docker en un VPS con Portainer (gu\u00eda 2026)"}]},{"@type":"WebSite","@id":"https:\/\/www-dev.dreamhost.com\/blog\/#website","url":"https:\/\/www-dev.dreamhost.com\/blog\/","name":"DreamHost Blog","description":"","publisher":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www-dev.dreamhost.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www-dev.dreamhost.com\/blog\/#organization","name":"DreamHost","url":"https:\/\/www-dev.dreamhost.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www-dev.dreamhost.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/dhblog.dream.press\/blog\/wp-content\/uploads\/2019\/01\/dh_logo-blue-2.png","contentUrl":"https:\/\/dhblog.dream.press\/blog\/wp-content\/uploads\/2019\/01\/dh_logo-blue-2.png","width":1200,"height":168,"caption":"DreamHost"},"image":{"@id":"https:\/\/www-dev.dreamhost.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/DreamHost\/","https:\/\/x.com\/dreamhost","https:\/\/www.instagram.com\/dreamhost\/","https:\/\/www.linkedin.com\/company\/dreamhost\/","https:\/\/www.youtube.com\/user\/dreamhostusa"]},{"@type":"Person","@id":"https:\/\/www-dev.dreamhost.com\/blog\/#\/schema\/person\/f6a12ad459538e8e418cf31b8b603814","name":"Dallas Kashuba","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/05ab6fb1606be97d16c74efb0fba01b3c11e91501dc5f9661bdfbb5c5b0cd113?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/05ab6fb1606be97d16c74efb0fba01b3c11e91501dc5f9661bdfbb5c5b0cd113?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/05ab6fb1606be97d16c74efb0fba01b3c11e91501dc5f9661bdfbb5c5b0cd113?s=96&d=mm&r=g","caption":"Dallas Kashuba"},"description":"Dallas Kashuba co-founded DreamHost while attending Harvey Mudd College and has spent nearly three decades building infrastructure at scale. Today he serves as an advisor, board member, and investor for various tech startups, with a consistent focus on user privacy, open source, and data portability. When he's not thinking about the Open Web, he's probably making music. Follow Dallas on X.","sameAs":["http:\/\/www.idallas.com\/","https:\/\/x.com\/http:\/\/twitter.com\/dallas"],"url":"https:\/\/www-dev.dreamhost.com\/blog\/author\/dallas\/"}]}},"lang":"es","translations":{"es":82076,"en":82006,"uk":82095,"ru":82089,"pt":82068,"pl":82086,"de":82070,"nl":82080,"fr":82074,"it":82082},"pll_sync_post":{},"_links":{"self":[{"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts\/82076","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"version-history":[{"count":7,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts\/82076\/revisions"}],"predecessor-version":[{"id":90051,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/posts\/82076\/revisions\/90051"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/media\/82008"}],"wp:attachment":[{"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/media?parent=82076"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/categories?post=82076"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www-dev.dreamhost.com\/blog\/wp-json\/wp\/v2\/tags?post=82076"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}