Docs: añadir Traefik y enlazar desde README

This commit is contained in:
2025-11-27 17:42:20 +01:00
parent b34b36f179
commit 801ffe698e
2 changed files with 71 additions and 12 deletions

70
docs/Traefik.md Normal file
View File

@@ -0,0 +1,70 @@
# Traefik — Proxy inverso y TLS para Portainer
Esta guía muestra cómo exponer Portainer detrás de **Traefik** con HTTPS automático (Let's Encrypt) y reglas limpias.
## Requisitos
- Traefik corriendo en el mismo host (como servicio en otro `docker-compose` o stack).
- Resolución DNS del dominio hacia tu host.
## Etiquetas (labels) de ejemplo para Portainer
Añade estas etiquetas al servicio `portainer` cuando uses Traefik (en el mismo `compose` o en un overlay). Nota: si mantienes `ports: 9443:9443`, la UI seguirá accesible directamente; con Traefik se recomienda eliminar la exposición directa y publicar solo vía proxy.
```yaml
services:
portainer:
image: portainer/portainer-ce:lts
container_name: portainer
restart: always
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- portainer_data:/data
# Quita los puertos directos si usas Traefik
# ports:
# - 9443:9443
labels:
- "traefik.enable=true"
- "traefik.http.routers.portainer.rule=Host(`portainer.tudominio.com`)"
- "traefik.http.routers.portainer.entryPoints=websecure"
- "traefik.http.routers.portainer.tls=true"
- "traefik.http.services.portainer.loadbalancer.server.port=9443"
- "traefik.http.routers.portainer.tls.certresolver=myresolver"
```
## Configuración Traefik (resumen)
Traefik necesita:
- `entryPoints` `web` (80) y `websecure` (443).
- `certResolver` configurado (por ejemplo, `myresolver` con ACME/Let's Encrypt).
Ejemplo mínimo de `traefik.yml` (referencia):
```yaml
entryPoints:
web:
address: ":80"
websecure:
address: ":443"
certificatesResolvers:
myresolver:
acme:
email: tu-email@ejemplo.com
storage: /letsencrypt/acme.json
httpChallenge:
entryPoint: web
```
Volúmenes para Traefik (contenedor):
```yaml
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./letsencrypt:/letsencrypt
```
## Pasos
1. Configura y levanta Traefik con `web` y `websecure`, y un `certResolver`.
2. Aplica las labels a Portainer y evita exponer puertos directos.
3. Apunta el DNS `portainer.tudominio.com` al host.
4. Accede por: `https://portainer.tudominio.com`
## Notas
- Si Portainer corre en 9443 con certificado propio, especifica `loadbalancer.server.port=9443` (como en el ejemplo).
- Para publicar en HTTP interno puedes cambiar a puerto 9000 (HTTP) y ajustar labels acorde (`server.port=9000`).
- Revisa logs de Traefik y Portainer si hay errores de TLS o reglas.