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

Enlaces
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
portainercon la imagenportainer/portainer-ce:lts. - Montaje del socket Docker:
/var/run/docker.sock:/var/run/docker.sock. - Volumen persistente
portainer_datamontado en/datapara 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
- Clonar el repositorio (si no lo tienes):
git clone https://git.ictiberia.com/groales/portainer
cd portainer
- Levantar Portainer con Docker Compose:
docker compose up -d
- Verificar que Portainer está en ejecución:
docker ps --filter name=portainer
- 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_datapara 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"
Traefik

Para publicar el contenedor detrás del proxy Traefik, fusionaremos los ficheros del repositorio docker-compose.override.yaml con el docker-compose.yaml
1. Verificar Red Compartida
Asegúrate de que la red proxy existe (creada por el repo de Traefik):
docker network ls | grep proxy
2. Crear docker-compose.override.yaml
En el directorio de Portainer, copia el ejemplo:
cd ~/portainer # O tu ruta local
cp docker-compose.override.yaml.example docker-compose.override.yaml
3. Editar docker-compose.override.yaml
# docker-compose.override.yaml.example
#
# Este archivo muestra cómo integrar Portainer con Traefik del repositorio groales/traefik.
# Para usarlo:
# 1. Copia este archivo a docker-compose.override.yaml
# 2. Ajusta el dominio (portainer.tudominio.com)
# 3. Asegúrate de que la red 'proxy' existe (creada por Traefik)
#
# Docker Compose automáticamente fusiona docker-compose.yaml + docker-compose.override.yaml
services:
portainer:
networks:
- proxy
labels:
# Habilitar Traefik
- "traefik.enable=true"
# Router HTTPS
- "traefik.http.routers.portainer.rule=Host(`portainer.tudominio.com`)" # <- Cambia esto
- "traefik.http.routers.portainer.entrypoints=websecure"
- "traefik.http.routers.portainer.tls=true"
- "traefik.http.routers.portainer.tls.certresolver=letsencrypt"
# Service backend
- "traefik.http.services.portainer.loadbalancer.server.port=9443"
- "traefik.http.services.portainer.loadbalancer.server.scheme=https"
- "traefik.http.services.portainer.loadbalancer.serversTransport=insecure@file"
# Middlewares de seguridad (opcional)
- "traefik.http.routers.portainer.middlewares=security-headers@file"
networks:
proxy:
external: true
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.
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:

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@fileActualizar 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

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
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

