Instalación de Portainer CE
Instalación
Vamos a instalar Portainer Server CE sobre un host con Docker standalone en Linux, que es el escenario más común para empezar. Es el mismo Server que luego gestionará entornos remotos, Swarm o Kubernetes.
Pre-requisitos
- Un host Linux con Docker Engine instalado y corriendo (
docker --version). - Acceso al socket de Docker (
/var/run/docker.sock). - Un puerto libre para la UI (usaremos 9443 para HTTPS).
Paso 1 — Crear el volumen de datos
Portainer guarda su configuración y base de datos en /data. Creamos un volumen con nombre para que sobreviva a recreaciones del contenedor:
docker volume create portainer_data
Paso 2 — Desplegar el Server
docker run -d \
-p 8000:8000 \
-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 parte:
| Opción | Para qué |
|---|---|
-p 9443:9443 | UI web por HTTPS (certificado autofirmado por defecto) |
-p 8000:8000 | Túnel TCP para Edge Agents (opcional si no usás Edge) |
--restart=always | Portainer vuelve a levantar tras reinicios del host |
-v /var/run/docker.sock:... | Le da acceso al Docker del host para gestionar el entorno local |
-v portainer_data:/data | Persiste su base de datos |
portainer/portainer-ce:lts | Imagen CE, canal estable (LTS) |
Seguridad: montar
docker.sockda a Portainer control total del host. Es necesario para gestionar el entorno local, pero tenelo presente: cualquiera con acceso admin a Portainer tiene, de facto, acceso root al host.
Paso 3 — Primer acceso y usuario admin
Abrí el navegador en:
https://localhost:9443
(Reemplazá localhost por la IP o dominio del host si entrás de forma remota.) El navegador advertirá por el certificado autofirmado; aceptás la excepción.
En la primera pantalla creás el usuario administrador. Reglas:
- La contraseña debe tener al menos 12 caracteres.
- Si tardás demasiado en completar este paso tras arrancar el contenedor, Portainer bloquea el setup por seguridad y hay que reiniciar el contenedor (
docker restart portainer) para volver a habilitarlo. Esto evita que un atacante reclame el admin de una instancia recién levantada.
Tras crear el admin, Portainer detecta el entorno local (tu Docker) y te lleva al dashboard.
Alternativa: instalación con Docker Compose
Si preferís declarar la instalación como código:
# portainer-compose.yml
services:
portainer:
image: portainer/portainer-ce:lts
container_name: portainer
restart: always
ports:
- "8000:8000"
- "9443:9443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- portainer_data:/data
volumes:
portainer_data:
docker compose -f portainer-compose.yml up -d
HTTPS con tu propio certificado
Por defecto Portainer genera un certificado autofirmado. Para producción conviene uno real:
- Opción A — certificado propio: montá tu
cert.pemykey.pemen el contenedor y pasá--sslcert/--sslkeycomo flags del comando de Portainer. - Opción B — reverse proxy (recomendado): poné Portainer detrás de Nginx, Traefik o Caddy, que terminan TLS con Let’s Encrypt. En ese caso exponés Portainer solo a la red interna y el proxy se encarga del HTTPS público.
Actualizar Portainer
Como Portainer corre en un contenedor y sus datos viven en el volumen, actualizar es recrear el contenedor con la imagen nueva:
docker stop portainer
docker rm portainer
docker pull portainer/portainer-ce:lts
# volvé a ejecutar el mismo `docker run` del Paso 2
El volumen portainer_data conserva usuarios, entornos y configuración, así que no perdés nada. Volvemos sobre upgrades, backups y la función de auto-update de parches en el capítulo 14.
Nota sobre Watchtower: no uses Watchtower para actualizar el propio contenedor de Portainer; puede dejarlo en un estado inconsistente. Actualizalo manualmente o con la función oficial.
Anterior → Capítulo 1: Introducción · Siguiente → Capítulo 3: Interfaz y entornos