Portainer es una interfaz web para administrar Docker: desde el navegador puedes ver y gestionar contenedores, imágenes, volúmenes, redes y stacks de Docker Compose. En este tutorial instalarás Portainer Community Edition (CE) como contenedor en un servidor Ubuntu 24.04, accederás a su panel por HTTPS, crearás el usuario administrador y aprenderás a actualizarlo sin perder su configuración.
Requisitos previos
- Un servidor con Ubuntu 24.04 LTS, por ejemplo un VPS de CubePath, con al menos 1 GB de RAM.
- Un usuario no root con privilegios
sudo. - Docker Engine instalado desde el repositorio oficial de Docker. Si aún no lo tienes, sigue la guía "Cómo instalar Docker en Ubuntu 24.04, Debian 12 y Rocky 9".
- El puerto TCP 9443 accesible desde tu equipo.
Comprueba que Docker funciona antes de empezar:
sudo docker version --format '{{.Server.Version}}'
28.4.0
Cualquier versión actual de Docker Engine es válida.
Paso 1: Crear el volumen de datos
Portainer guarda su base de datos interna (usuarios, entornos, configuración) en /data dentro del contenedor. Crea un volumen de Docker para que esos datos sobrevivan cuando actualices o recrees el contenedor:
sudo docker volume create portainer_data
Comprueba que existe:
sudo docker volume ls
DRIVER VOLUME NAME
local portainer_data
Paso 2: Ejecutar el contenedor de Portainer
Lanza Portainer CE con la imagen lts, que corresponde a la versión de soporte extendido recomendada para producción:
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
Qué hace cada opción:
-p 9443:9443publica la interfaz web por HTTPS. Portainer genera un certificado autofirmado la primera vez que arranca.--restart=alwaysvuelve a arrancar el contenedor tras un reinicio del servidor o del servicio Docker.-v /var/run/docker.sock:/var/run/docker.sockda a Portainer acceso a la API de Docker del propio servidor.-v portainer_data:/datamonta el volumen del paso anterior.
Importantemontar
/var/run/docker.sockequivale a dar acceso de root al servidor. Quien entre en Portainer como administrador controla la máquina, así que protege el acceso con una contraseña robusta.
Las guías antiguas publican también el puerto 9000 (HTTP sin cifrar) y el 8000. El 9000 ya no es necesario y el 8000 solo se usa para agentes Edge, por lo que no los publicamos.
Comprueba que el contenedor está en marcha:
sudo docker ps --filter name=portainer
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3f2a1b9c8d7e portainer/portainer-ce:lts "/portainer" 20 seconds ago Up 19 seconds 8000/tcp, 9000/tcp, 0.0.0.0:9443->9443/tcp portainer
Y que responde por HTTPS desde el propio servidor:
curl -kI https://localhost:9443
HTTP/1.1 200 OK
...
Paso 3: Tener en cuenta el firewall
Docker añade sus propias reglas de iptables para los puertos publicados con -p, y esas reglas se aplican antes que las de UFW. Eso significa que el puerto 9443 queda accesible desde internet aunque UFW no lo permita de forma explícita, y que un ufw deny 9443 no lo bloquea.
Si no quieres exponer Portainer a internet, publícalo solo en la interfaz local cambiando la opción -p al crear el contenedor:
sudo docker run -d \
-p 127.0.0.1:9443:9443 \
--name portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:lts
(Si ya lo creaste con el comando del paso 2, elimínalo antes con sudo docker rm -f portainer; los datos están en el volumen y no se pierden.)
Después accede a través de un túnel SSH desde tu equipo:
ssh -L 9443:localhost:9443 your_user@your_server_ip
Con el túnel abierto, la interfaz está disponible en https://localhost:9443 en tu navegador local.
Paso 4: Crear el usuario administrador
Abre en el navegador la dirección de Portainer (o https://localhost:9443 si usas el túnel SSH):
https://your_server_ip:9443
Sustituye your_server_ip por la IP pública del servidor. El navegador avisará de que el certificado es autofirmado; acepta la excepción para continuar.
En la primera pantalla, crea el administrador:
- Escribe el nombre de usuario (por defecto
admin, puedes cambiarlo). - Introduce una contraseña de al menos 12 caracteres y confírmala.
- Pulsa Create user.
Notapor seguridad, Portainer solo permite crear el administrador durante los primeros 5 minutos tras arrancar. Si ves un aviso de tiempo agotado, reinicia el contenedor con
sudo docker restart portainery vuelve a cargar la página.
Paso 5: Conectar el entorno Docker local
Tras crear el usuario, Portainer muestra el asistente de bienvenida. Pulsa Get Started para usar el entorno en el que se está ejecutando Portainer. Aparecerá un entorno llamado local en la página Home.
Haz clic en local para abrir su panel. Deberías ver el número de contenedores, imágenes, volúmenes y redes del servidor, entre ellos el propio contenedor portainer. Para comprobar que todo funciona, despliega un contenedor de prueba:
- Ve a Containers > Add container.
- En Name escribe
hello-nginxy en Image escribenginx:alpine. - En Network ports configuration, pulsa Publish a new network port y asigna el puerto
8080del host al80del contenedor. - Pulsa Deploy the container.
Comprueba desde el servidor que responde:
curl -I http://localhost:8080
HTTP/1.1 200 OK
Server: nginx/1.29.1
...
Cuando termines, elimina el contenedor de prueba desde la lista Containers seleccionándolo y pulsando Remove.
Paso 6: Actualizar Portainer
Para actualizar Portainer basta con recrear el contenedor con la imagen nueva. Como la configuración vive en el volumen portainer_data, no se pierde nada. Detén y elimina el contenedor actual:
sudo docker stop portainer
sudo docker rm portainer
Descarga la última imagen lts:
sudo docker pull portainer/portainer-ce:lts
Vuelve a crear el contenedor con el mismo comando docker run que usaste en el paso 2 (o en el paso 3 si lo publicaste solo en local). Al entrar de nuevo en la interfaz, la versión aparece en la esquina inferior izquierda.
Solución de problemas
- La página no carga en
https://your_server_ip:9443: comprueba que el contenedor estáUpconsudo docker psy revisa sus registros consudo docker logs portainer. Si tienes un firewall externo en el panel de tu proveedor, permite en él el puerto 9443. - Accedes por
http://y no carga: Portainer solo escucha por HTTPS en el 9443. Usahttps://. - Has olvidado la contraseña del administrador: si no hay otro administrador, la forma más sencilla es borrar el contenedor y el volumen (
sudo docker rm -f portainerysudo docker volume rm portainer_data) y volver a instalar. Perderás la configuración de Portainer, pero no tus contenedores.
Conclusión
Tienes Portainer CE funcionando sobre Docker en Ubuntu 24.04, accesible por HTTPS y con un administrador protegido. Como siguientes pasos, puedes desplegar aplicaciones desde Stacks pegando un archivo de Docker Compose, crear usuarios adicionales con permisos limitados en Users, o colocar Portainer detrás de un proxy inverso con un certificado de Let's Encrypt para tu dominio.
