Skip to main content

Portainer

Portainer es una herramienta web open-source que permite gestionar contenedores.​ Permite administrar contenedores de forma remota o local, la infraestructura de soporte y todos los aspectos de las implementaciones de Kubernetes, Podman, Docker standalone y Docker Swarm

Connect to the Docker Socket - Portainer Documentation

Enlaces

https://www.portainer.io/

https://docs.portainer.io

groales/portainer - portainer - ICT

Requisitos

  • Docker y Docker Compose instalados en el host.
  • Usuario con permisos para acceder a /var/run/docker.sock.
  • Conectividad a los puertos necesarios.

Qué incluye este stack

  • Servicio portainer con la imagen portainer/portainer-ce:lts.
  • Montaje del socket Docker: /var/run/docker.sock:/var/run/docker.sock.
  • Volumen persistente portainer_data montado en /data para conservar la configuración.
  • Puertos:
    • 9443:9443 (UI HTTPS de Portainer)
  • Red portainer_network (por defecto).

Archivo Compose

El docker-compose.yaml actual contiene:

services:
	portainer:
		container_name: portainer
		image: portainer/portainer-ce
		restart: always
		volumes:
			- /var/run/docker.sock:/var/run/docker.sock
			- portainer_data:/data
		ports:
			- 9443:9443

volumes:
	portainer_data:
		name: portainer_data

networks:
	default:
		name: portainer_network

Pasos de despliegue

  1. Clonar el repositorio (si no lo tienes):
git clone https://git.ictiberia.com/groales/portainer
cd portainer
  1. Levantar Portainer con Docker Compose:
docker compose up -d
  1. Verificar que Portainer está en ejecución:
docker ps --filter name=portainer
  1. Acceder a la interfaz web:
  • URL: https://<HOST>:9443
  • Al primer acceso, Portainer te pedirá crear el usuario administrador.

Notas y buenas prácticas

  • Mantén el volumen portainer_data para persistir configuración y datos.
  • Para exponer Portainer a Internet, usa un proxy inverso (Traefik/Nginx) con TLS y reglas de acceso.
  • Limita el acceso a la UI mediante firewall/VPN.

Configuración

Acceder a la interfaz web:

  • URL: https://<HOST>:9443
  • En el primer acceso, Portainer te pedirá crear el usuario administrador.

Publicando detrás de un proxy

Crear registro DNS

En el proveedor que aloja el servidor DNS público, crear un registro DNS que resuelva la IP pública que llega al Proxy hacia un nombre del estilo "host.domain.com"

NGINX Proxy Manager

Para publicar el contenedor detrás del proxy NGINX, es necesario instalarlo antes. Así que, sigue el siguiente documento para instalar NGINX Proxy Manager.image.png

Para publicar el contenedor detrás de NGINX proxy, como el stack está en la red proxy solo deberás crear un nuevo host

Crear un nuevo "proxy host"

Añade un nuevo proxy host con el nombre de dominio creado en el paso anterior redirigido hacia el nombre del contenedor y el puerto que use:

image.png

Traefik

Para publicar el contenedor detrás del proxy Traefik, es necesario instalarlo antes. Así que, sigue el siguiente documento para instalar Traefik.

Un vez instalado, para publicar el contenedor detrás del proxy Traefik, deberás añadir al fichero docker-compose.yaml las siguientes etiquetas al servicio portainer

    labels:
      - traefik.enable=true
      - traefik.http.routers.portainer.rule=Host(`portainer.dominio.com`)
      - traefik.http.routers.portainer.tls=true
      - traefik.http.routers.portainer.tls.certresolver=letsencrypt
      - traefik.http.services.portainer.loadbalancer.server.port=9000
      - traefik.http.routers.portainer.middlewares=privateIPs@file

Actualizar Portainer Bussiness

https://docs.portainer.io/v/ce-2.9/start/upgrade/tobe/docker

Modifica el repositorio en el fichero docker-compose para que usa la imagen de Portainer Bussiness

image: portainer/portainer-ee

Actualiza el contenedor

docker compose up --force-recreate --build -d 
docker image prune -f
Cuando entres de nuevo en portainer, te pedirá license key. Pégala desde el email que habrás recibido.

‘Business Edition’ aparece ahora en la esquina inferior izquierda.

Añadir un entorno de Docker individual

Add a Docker Standalone environment – Portainer Documentation

Vamos a añadir un nuevo entorno individual de docker vía API. Previamente, nuestra instancia de docker deberá admitir conexiones remotas.

Configurar acceso remoto para Docker

para modificar el fichero docker.service crea el siguiente fichero:

mkdir /etc/systemd/system/docker.service.d
vi /etc/systemd/system/docker.service.d/override.conf

Añade las siguientes líneas:

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://IP_docker:2375

Guarda el fichero y recarga la configuración de  «systemctl»

systemctl daemon-reload

Reinicia docker

systemctl restart docker.service

Verifica los cambios

netstat -lntp | grep dockerd

Selecciona Docker Standalone y ejecuta el asistente. Selecciona la opción API , rellena los datos que pide

Validar via OAuth

Microsoft

Cómo registrar una aplicación en Entra ID de Microsoft - Microsoft identity platform | Microsoft Learn

Portainer

Authenticate via OAuth | Portainer Documentation

Para Portainer Bussiness selecciona Settings -> Authentication. Bajo Authentication method  elije OAuth. Después selecciona el Provider Microsoft y rellena los campos Tenant ID, Aplication ID y el valor del secreto generado en Aplication Key para la app creada en Entra ID

image.gif

image.png