Portainer: Gestiona Docker con Interfaz Web (Guía Completa 2025)

Docker puede ser complicado, ¿verdad? Líneas de comando interminables, sintaxis que se olvida, y la sensación de que debería haber una forma más fácil. La hay. Se llama Portainer, y es la interfaz web que convierte la gestión de Docker en algo deliciosamente simple.

En esta guía te muestro cómo instalar Portainer en 30 segundos, gestionar todos tus contenedores desde un navegador, y lo mejor: controlar Docker en múltiples servidores remotos sin abrir puertos en tu firewall.

¿Qué es Portainer y Por Qué Usarlo?

Portainer es una interfaz web para Docker que te permite gestionar contenedores, imágenes, volúmenes, redes y stacks (Docker Compose) desde tu navegador. Es gratis, open-source, y ridículamente fácil de instalar.

Ventajas de Portainer vs CLI

  • Interfaz visual clara: Dashboard en tiempo real mostrando estado de contenedores, uso de recursos, logs
  • Terminal web integrado: Accede a la consola de cualquier contenedor desde el navegador (adiós docker exec -it)
  • Gestión multi-host: Controla Docker en múltiples servidores desde un solo panel
  • Editor de stacks integrado: Crea y edita archivos docker-compose.yml con syntax highlighting
  • Búsqueda de imágenes: Busca directamente en Docker Hub desde la interfaz
  • Control de acceso: Define usuarios y permisos (útil para equipos)
  • Sin memorizar sintaxis: Formularios visuales para configurar ports, volumes, networks, restart policies

Lo mejor: Portainer en sí mismo es un contenedor Docker. Se instala con un solo comando y funciona en cualquier lugar donde corra Docker: Linux, Raspberry Pi, WSL en Windows, VPS en la nube, etc.

Instalación de Portainer en 30 Segundos

Voy a mostrarte cómo instalar Portainer en un servidor Ubuntu/Debian desde cero. Si ya tienes Docker instalado, salta al paso 3.

Paso 1: Actualizar Repositorios

sudo apt update

Paso 2: Instalar Docker

Si aún no tienes Docker instalado:

sudo apt install docker.io -y

Verifica que Docker funciona ejecutando un contenedor de prueba:

docker run -d -p 80:80 nginx
docker ps

Deberías ver el contenedor nginx corriendo. Perfecto, Docker funciona.

Nota: Si encuentras problemas con Docker (permission denied, errores de conexión), consulta nuestra guía de troubleshooting Docker que resuelve los problemas más comunes en minutos.

Paso 3: Crear Volumen Persistente para Portainer

Este volumen guardará la configuración de Portainer (usuarios, endpoints, configuración):

docker volume create portainer_data

Paso 4: Instalar Portainer (El Comando Mágico)

Este es el comando completo para desplegar Portainer:

docker run -d \
  -p 9443:9443 \
  -p 8000:8000 \
  --name=portainer \
  --restart=always \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  portainer/portainer-ce:latest

¿Qué hace este comando?

  • -p 9443:9443: Expone la interfaz web HTTPS en el puerto 9443
  • -p 8000:8000: Puerto para conexiones con Portainer Agent (gestión remota)
  • -v /var/run/docker.sock:/var/run/docker.sock: Da acceso a Portainer al socket de Docker (necesario para gestionar contenedores)
  • -v portainer_data:/data: Monta el volumen persistente
  • --restart=always: Portainer se reinicia automáticamente si el servidor se reinicia

Verifica que Portainer está corriendo:

docker ps

Deberías ver portainer/portainer-ce en la lista. ¡Instalación completa!

Configuración Inicial de Portainer

Ahora accede a la interfaz web de Portainer:

  1. Abre tu navegador y ve a: https://TU_IP:9443 (reemplaza TU_IP con la IP de tu servidor)
  2. Verás un aviso de seguridad (certificado autofirmado). Es normal, acepta y continúa
  3. Crea tu usuario administrador:
    • Username: admin (o el que prefieras)
    • Password: Usa una contraseña segura
  4. Desmarca la casilla de telemetría (opcional)
  5. Haz clic en «Create user»

¡Listo! Verás la pantalla de bienvenida.

Conectar al Entorno Local

Haz clic en «Get Started» (el botón con la ballena azul). Portainer detectará automáticamente el Docker local y lo añadirá como entorno.

Ahora haz clic en el entorno «local» para verlo. Boom. Dashboard completo mostrando:

  • Contenedores corriendo y parados
  • Imágenes descargadas
  • Volúmenes y redes
  • Stacks (docker-compose)

Gestionar Contenedores con Portainer

Ver y Controlar Contenedores

En el menú lateral, haz clic en «Containers». Verás todos tus contenedores con:

  • Estado: Running, Stopped, Paused
  • Puertos expuestos
  • Uso de CPU y memoria (en tiempo real si activas las métricas)

Acciones rápidas:

  • Start/Stop/Restart: Botones en la columna derecha
  • Terminal web: Haz clic en el icono de terminal (>_) → Connect → Estás dentro del contenedor desde tu navegador
  • Logs: Ver logs en tiempo real (sin docker logs -f)
  • Inspect: Ver configuración completa del contenedor (JSON)
  • Stats: Gráficas de CPU, RAM, I/O en tiempo real

Crear un Contenedor Nuevo

Haz clic en «Add container». Verás un formulario visual para configurar el contenedor:

  1. Name: Nombre del contenedor (ej: mi-nginx)
  2. Image: Puedes buscar en Docker Hub directamente desde aquí. Busca «nginx» y copia: nginx:latest
  3. Port mapping: Mapea puertos del host al contenedor
    • Host: 8080 → Container: 80
  4. Volumes: Monta directorios o volúmenes
  5. Network: Elige la red Docker (bridge, host, custom)
  6. Restart policy: Always, Unless-stopped, On-failure
  7. Advanced: Variables de entorno, límites de recursos, capabilities

Haz clic en «Deploy the container». Listo. El contenedor se crea y arranca automáticamente.

Accede al terminal: Haz clic en el icono de terminal → Connect. Estás dentro del contenedor sin escribir docker exec.

Gestión Remota con Portainer Agent

Aquí viene la magia: gestiona Docker en múltiples servidores remotos desde un solo Portainer. Esto es perfecto si tienes:

  • Homelab detrás de tu firewall + VPS en la nube
  • Varios servidores en producción
  • Raspberry Pi ejecutando servicios Docker

Dos Opciones: Agent vs Edge Agent

Portainer Agent (estándar):

  • El servidor Portainer se conecta hacia el agent
  • Requiere que el puerto 9001 del host remoto sea accesible desde Portainer
  • Útil si ambos hosts están en la misma red (LAN, VPN)

Portainer Edge Agent (recomendado para homelabs):

  • El agent se conecta hacia el servidor Portainer (conexión inversa)
  • No necesitas abrir puertos en tu firewall
  • Perfecto para homelabs detrás de CGNAT o firewalls estrictos
  • El agent «llama a casa» periódicamente (heartbeat)

Voy a mostrarte cómo instalar el Edge Agent (el más útil).

Instalar Portainer Edge Agent

En el servidor Portainer (el que tiene la interfaz web):

  1. Ve a «Environments» en el menú lateral
  2. Haz clic en «Add environment»
  3. Selecciona «Docker» (el ícono de ballena con bloques)
  4. Scroll down y haz clic en «Start Wizard»
  5. Selecciona «Edge Agent»
  6. Name: Dale un nombre (ej: homelab, raspberry-pi)
  7. Portainer server URL: Deja el valor por defecto (o ajusta si usas dominio personalizado)
  8. Haz clic en «Create»

Portainer te mostrará un comando Docker para ejecutar en el host remoto. Copia ese comando.

En el servidor remoto (donde quieres gestionar Docker):

Pega y ejecuta el comando que copiaste. Será algo así:

sudo docker run -d \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /var/lib/docker/volumes:/var/lib/docker/volumes \
  -v /:/host \
  -v portainer_agent_data:/data \
  --restart always \
  -e EDGE=1 \
  -e EDGE_ID=xxxxx \
  -e EDGE_KEY=yyyyy \
  -e CAP_HOST_MANAGEMENT=1 \
  --name portainer_edge_agent \
  portainer/agent:latest

Eso es todo. El agent se conecta automáticamente al servidor Portainer.

Verificar Conexión

Vuelve a Portainer (interfaz web) → «Environments». Verás el nuevo entorno con:

  • Status: Heartbeat (verde = conectado)
  • Tipo: Edge Agent

Haz clic en el entorno remoto. Boom. Estás gestionando Docker en ese servidor remoto sin haber abierto ningún puerto.

Puedes:

  • Ver todos sus contenedores
  • Start/Stop/Restart
  • Acceder al terminal web
  • Desplegar nuevos contenedores
  • Gestionar stacks (docker-compose)

Todo desde un solo panel. Sin SSH, sin VPN complicadas.

Docker Compose con Portainer (Stacks)

Portainer llama «Stacks» a los archivos docker-compose.yml. Es la misma funcionalidad, pero con interfaz visual. Si eres nuevo en Docker Compose, te recomiendo empezar con nuestra guía completa de homelab donde explicamos Docker Compose desde cero.

Desplegar un Stack

  1. Ve a «Stacks» en el menú lateral
  2. Haz clic en «Add stack»
  3. Dale un nombre (ej: media-server)
  4. Pega tu archivo docker-compose.yml en el Web editor (tiene syntax highlighting)

Ejemplo: Stack con Jellyfin + Sonarr + Radarr

version: '3'

services:
  jellyfin:
    image: jellyfin/jellyfin:latest
    container_name: jellyfin
    ports:
      - "8096:8096"
    volumes:
      - /media/library:/media
      - jellyfin_config:/config
    restart: unless-stopped

  sonarr:
    image: linuxserver/sonarr:latest
    container_name: sonarr
    ports:
      - "8989:8989"
    volumes:
      - sonarr_config:/config
      - /media/downloads:/downloads
    restart: unless-stopped

  radarr:
    image: linuxserver/radarr:latest
    container_name: radarr
    ports:
      - "7878:7878"
    volumes:
      - radarr_config:/config
      - /media/downloads:/downloads
    restart: unless-stopped

volumes:
  jellyfin_config:
  sonarr_config:
  radarr_config:
  1. Haz clic en «Deploy the stack»

Portainer despliega los 3 contenedores automáticamente. Verás el stack en la lista con:

  • Estado de todos los servicios
  • Opción de Stop/Start todo el stack con un clic
  • Editor: Edita el docker-compose.yml y redespliega con un botón

Gestionar Stacks Existentes

Si ya tenías un docker-compose corriendo antes de instalar Portainer, aparecerá en la lista de stacks pero no podrás editarlo desde Portainer (fue desplegado externamente).

Solución:

  1. Para el stack manualmente: docker-compose down
  2. Elimina el stack de Portainer (se limpia automáticamente al refrescar)
  3. Re-despliega desde Portainer (Add stack → pega el docker-compose.yml)

Ahora Portainer tiene control total y puedes editar, parar, iniciar desde la interfaz.

Funcionalidades Avanzadas de Portainer

1. Gestión de Redes Docker

Ve a «Networks»«Add network». Crea redes bridge personalizadas, define rangos IP, gateways. Todo visual.

2. Gestión de Volúmenes

«Volumes» → Ver todos los volúmenes Docker, eliminar huérfanos, crear nuevos volúmenes con drivers específicos (local, NFS, etc).

3. Búsqueda de Imágenes en Docker Hub

Desde «Images»«Pull image» → Busca directamente en Docker Hub sin salir de Portainer.

4. Registries Privados

Conecta registries privados (Harbor, GitLab Registry, AWS ECR) en «Registries»«Add registry».

5. Control de Acceso (RBAC)

Crea usuarios con permisos limitados (solo lectura, gestión de contenedores específicos). Útil para equipos.

6. Plantillas de Aplicaciones

«App Templates» → Despliega aplicaciones populares con un clic: WordPress, MySQL, Redis, Grafana, etc.

Portainer vs Otras Alternativas

Si estás decidiendo entre diferentes soluciones de virtualización/containerización para tu homelab, consulta nuestra comparativa completa Proxmox vs Docker que te ayuda a elegir según tus necesidades.

Herramienta Ventajas Desventajas
Portainer Gratis, fácil, gestión multi-host, Edge Agent sin puertos Funcionalidades avanzadas en versión paga (Business Edition)
Docker CLI Nativo, scripting, automatización Curva de aprendizaje, no visual, difícil para principiantes
Rancher Kubernetes + Docker, enterprise-grade Complejo, overkill para homelabs
Yacht Ligero, bonito Menos funcionalidades, no gestión multi-host
Dockge Simple, enfocado en docker-compose Sin gestión remota, menos maduro

Veredicto: Para homelabs y pequeños equipos, Portainer es el balance perfecto entre facilidad y funcionalidad.

Consejos y Trucos de Portainer

1. Backup de Configuración

El volumen portainer_data contiene toda la configuración (usuarios, endpoints, stacks). Haz backup regularmente:

docker run --rm -v portainer_data:/data -v $(pwd):/backup \
  busybox tar czf /backup/portainer-backup.tar.gz /data

2. Cambiar Puerto HTTPS

Si el puerto 9443 está ocupado, puedes usar otro al desplegar Portainer:

docker run -d -p 7443:9443 ... portainer/portainer-ce:latest

Accede con: https://TU_IP:7443

3. Usar Certificado SSL Propio

Reemplaza el certificado autofirmado montando tus propios certificados:

docker run -d \
  -v /ruta/a/certs:/certs \
  -e SSL_CERT=/certs/cert.pem \
  -e SSL_KEY=/certs/key.pem \
  ... portainer/portainer-ce:latest

Acceso remoto seguro: Si quieres acceder a Portainer desde fuera de casa sin abrir puertos, te recomiendo usar Cloudflare Tunnel, que crea un túnel seguro sin necesidad de VPN ni puertos expuestos.

4. Habilitar Métricas de Contenedores

Para ver gráficas de CPU/RAM en tiempo real:

  1. Ve a «Settings»«Environments»
  2. Selecciona tu entorno → «Enable features»
  3. Activa «Enable host management features»

5. Actualizar Portainer

docker stop portainer
docker rm portainer
docker pull portainer/portainer-ce:latest
# Ejecuta nuevamente el comando de instalación (el volumen persiste los datos)

Casos de Uso Reales

Homelab con Servicios en Raspberry Pi + VPS

  • Raspberry Pi: Home Assistant, Pi-hole, Jellyfin
  • VPS en la nube: Portainer Server, Nginx reverse proxy
  • Setup: Edge Agent en Raspberry Pi → gestión completa desde VPS sin abrir puertos en casa

Desarrollo Multi-Entorno

  • Local: Docker Desktop en Mac
  • Staging: VPS con Docker
  • Producción: Servidor dedicado
  • Setup: Portainer gestiona los 3 entornos → despliegue de stacks idénticos en cada uno con un clic

Equipo de Desarrollo con Permisos

  • Admin: Control total
  • Developers: Solo gestión de contenedores (start/stop/logs), sin eliminar
  • QA: Solo lectura y acceso a logs
  • Setup: Portainer RBAC con usuarios y roles personalizados

Troubleshooting Común

Portainer no arranca / Puerto 9443 no responde

Verifica que el contenedor está corriendo:

docker ps -a | grep portainer

Si está parado, mira los logs:

docker logs portainer

Problema común: conflicto de puertos. Cambia el puerto en el comando de instalación.

Edge Agent muestra «Heartbeat» rojo

  • Verifica conectividad: El host remoto debe poder alcanzar la URL del servidor Portainer
  • Firewall: El servidor Portainer debe tener el puerto 8000 abierto (para Edge Agent)
  • Tiempo: El Edge Agent tarda ~30 segundos en conectar la primera vez

No puedo editar un stack existente

Si el stack fue creado con docker-compose externamente, Portainer lo detecta pero no puede editarlo. Solución:

  1. docker-compose down (para el stack manualmente)
  2. Elimina el stack de Portainer
  3. Re-despliega desde Portainer (Add stack)

Certificado SSL autofirmado molesta en navegador

Opciones:

  • Aceptar el riesgo: Es seguro si es tu servidor
  • Usar certificado Let’s Encrypt: Monta tus propios certs (ver Trucos arriba)
  • Reverse proxy con Nginx/Caddy: Proxy HTTPS válido → Portainer HTTP interno

Conclusión: ¿Adiós Docker CLI?

Portainer no reemplaza completamente el CLI de Docker (y no debería). Hay tareas avanzadas donde el CLI es más rápido (scripting, automatización con CI/CD). Pero para la gestión diaria: desplegar contenedores, revisar logs, acceder a terminales, gestionar stacks… Portainer es superior.

Mi workflow actual:

  • 80% Portainer: Gestión visual, deployments, troubleshooting
  • 20% CLI: Scripts automatizados, one-liners rápidos, debugging avanzado

Portainer hace Docker accesible. Si estás empezando con contenedores, o gestionas múltiples servidores, Portainer te ahorrará horas de dolores de cabeza.

Próximos Pasos

  1. Instala Portainer ahora: Literalmente toma 30 segundos
  2. Conecta tus servidores remotos: Usa Edge Agent para gestionar homelab + cloud desde un panel
  3. Migra tus docker-compose a Stacks: Gestión centralizada de todas tus aplicaciones
  4. Explora App Templates: Despliega WordPress, Grafana, MySQL con un clic
  5. Configura backups: No pierdas tu configuración de Portainer

¿Usas Portainer o alguna alternativa? ¿Qué funcionalidades te gustaría que agregara? Déjame un comentario.


Artículo creado usando Whisper + RTX 5090: El video original de Techno Tim fue transcrito localmente con Whisper large-v3 en 57 segundos (15.8x realtime), adaptado y expandido al español con ejemplos prácticos y casos de uso.

Por ziru

El Diario IA
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.