# Infraestructura: Portainer # Portainer CE — Despliegue con Docker Compose Este repositorio proporciona una forma sencilla de desplegar **Portainer Community Edition (CE)** usando Docker Compose en Linux, siguiendo las recomendaciones oficiales: https://docs.portainer.io/start/install-ce/server/docker/linux#docker-compose ## 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: ```yaml 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): ```powershell git clone https://git.ictiberia.com/groales/portainer cd portainer ``` 2) Levantar Portainer con Docker Compose: ```powershell docker compose up -d ``` 3) Verificar que Portainer está en ejecución: ```powershell docker ps --filter name=portainer ``` 4) Acceder a la interfaz web: - URL: `https://: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. ### Edge Agents (opcional) Este stack no expone el puerto `8000` por defecto. Si necesitas gestionar agentes remotos (Edge), añade de nuevo el puerto en la sección `ports`: ```yaml ports: - 9443:9443 - 8000:8000 ``` ## Documentación adicional Consulta la [**Wiki del proyecto**](https://git.ictiberia.com/groales/portainer/wiki) para documentación detallada: - [Guía inicial](https://git.ictiberia.com/groales/portainer/wiki/Home) - [Instalación avanzada y TLS](https://git.ictiberia.com/groales/portainer/wiki/Instalacion) - [Backup/Restore del volumen data](https://git.ictiberia.com/groales/portainer/wiki/Backup) - [Proxy inverso y TLS con Traefik](https://git.ictiberia.com/groales/portainer/wiki/Traefik) ## Solución de problemas - Puerto ocupado (`9443/8000`): comprueba procesos con `netstat` o `Get-NetTCPConnection` y ajusta puertos en `docker-compose.yaml`. - Permisos sobre `/var/run/docker.sock`: ejecuta con un usuario que pertenezca al grupo `docker` (Linux) o valida que Docker Desktop esté activo (Windows WSL2). - Certificados/TLS: si accedes por `https://` y hay advertencias, usa un proxy inverso con certificados válidos o configura confiables en el cliente. - Contenedor no arranca: revisa logs con `docker logs portainer` y valida que el volumen `portainer_data` exista. ## Personalización rápida - Eliminar Edge Agents: borra la línea `- 8000:8000` en `ports:`. - Cambiar nombre de red/volumen: ajusta `name: portainer_network` y `name: portainer_data` en las secciones `networks` y `volumes`. - Variables mediante `.env`: añade valores personalizados y referencia desde el compose si lo necesitas. - `docs/Traefik.md` — integración con proxy reverso