feat(traefik): actualizar stack y añadir dashboard dinámico
- docker-compose.yml y stack.env: ajustes generales del stack - traefik-dashboard.yml: nueva config dinámica para exponer el dashboard vía Traefik con autenticación Authentik - README.md: documentación actualizada Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+3
-3
@@ -37,12 +37,12 @@ Este stack despliega Traefik configurado para:
|
||||
- Repository URL: `<tu-repositorio>`
|
||||
- Repository reference: `main`
|
||||
- Compose path: `Traefik/docker-compose.yml`
|
||||
5. Carga el archivo de variables de entorno: `Traefik/stack.env`
|
||||
5. Copia `Traefik/stack.env` a `Traefik/.env` y carga `Traefik/.env` como archivo de variables de entorno
|
||||
6. Haz clic en **Deploy the stack**
|
||||
|
||||
### Variables de Entorno
|
||||
|
||||
Edita el archivo `stack.env`:
|
||||
Edita el archivo `.env`:
|
||||
|
||||
```env
|
||||
# Imagen de Traefik
|
||||
@@ -297,7 +297,7 @@ sudo tar -xzf traefik-backup-YYYYMMDD.tar.gz -C /
|
||||
Para actualizar Traefik:
|
||||
|
||||
1. En Portainer, ve al stack de Traefik
|
||||
2. Edita el archivo `stack.env` y cambia la versión:
|
||||
2. Edita el archivo `.env` y cambia la versión:
|
||||
```env
|
||||
TRAEFIK_IMAGE=traefik:v3.3
|
||||
```
|
||||
|
||||
@@ -7,10 +7,15 @@ services:
|
||||
- "host.docker.internal:host-gateway"
|
||||
|
||||
command:
|
||||
- "--ping=true"
|
||||
|
||||
# Logs
|
||||
- "--log.level=${TRAEFIK_LOG_LEVEL}"
|
||||
- "--accesslog=true"
|
||||
- "--accesslog.filepath=/var/log/traefik/access.log"
|
||||
- "--accesslog.format=json"
|
||||
|
||||
# Dashboard (por ahora solo interno)
|
||||
# Dashboard
|
||||
- "--api.dashboard=true"
|
||||
- "--api.insecure=false"
|
||||
|
||||
@@ -27,10 +32,22 @@ services:
|
||||
- "--providers.docker.exposedbydefault=false"
|
||||
- "--providers.docker.network=${TRAEFIK_DOCKER_NETWORK}"
|
||||
|
||||
# Permite backend HTTPS con certificado interno/sin SAN de IP
|
||||
- "--serverstransport.insecureskipverify=true"
|
||||
|
||||
# Proveedor de ficheros dinámicos
|
||||
- "--providers.file.directory=/dynamic"
|
||||
- "--providers.file.watch=true"
|
||||
|
||||
# Cloudflare forwardedHeaders desactivado intencionalmente:
|
||||
# con CGNAT el bouncer de CrowdSec vería la IP real del usuario y la banearía
|
||||
# aunque el tráfico llegue por el tunnel. El bouncer ve la IP del contenedor
|
||||
# cloudflared (red Docker privada, en allowlist) y nunca bloquea tráfico CF.
|
||||
|
||||
# Plugin CrowdSec Bouncer (middleware de seguridad L7)
|
||||
- "--experimental.plugins.crowdsec-bouncer.modulename=github.com/maxlerebourg/crowdsec-bouncer-traefik-plugin"
|
||||
- "--experimental.plugins.crowdsec-bouncer.version=v1.6.0"
|
||||
|
||||
# ACME / Let's Encrypt (resolver "letsencrypt")
|
||||
- "--certificatesresolvers.letsencrypt.acme.email=${TRAEFIK_ACME_EMAIL}"
|
||||
- "--certificatesresolvers.letsencrypt.acme.storage=${TRAEFIK_ACME_STORAGE}"
|
||||
@@ -45,11 +62,17 @@ services:
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro,Z
|
||||
- ${TRAEFIK_DYNAMIC_DIR}:/dynamic:Z
|
||||
- ${TRAEFIK_LETSENCRYPT_DIR}:/letsencrypt:Z
|
||||
- ${TRAEFIK_LOG_DIR}:/var/log/traefik:Z
|
||||
|
||||
networks:
|
||||
- proxy
|
||||
|
||||
healthcheck:
|
||||
test: ["CMD", "traefik", "healthcheck", "--ping"]
|
||||
interval: 10s
|
||||
timeout: 5s
|
||||
retries: 5
|
||||
|
||||
networks:
|
||||
proxy:
|
||||
external: true
|
||||
|
||||
|
||||
+3
-3
@@ -1,11 +1,11 @@
|
||||
##### Traefik #####
|
||||
TRAEFIK_IMAGE=traefik:v3.1
|
||||
TRAEFIK_IMAGE=traefik:v3.6.13
|
||||
TRAEFIK_LOG_LEVEL=INFO
|
||||
TRAEFIK_DOCKER_NETWORK=proxy
|
||||
TRAEFIK_ACME_EMAIL=lets.encrypt@example.com
|
||||
TRAEFIK_ACME_EMAIL=admin@example.com
|
||||
TRAEFIK_ACME_STORAGE=/letsencrypt/acme.json
|
||||
TRAEFIK_HTTP_PORT=80
|
||||
TRAEFIK_HTTPS_PORT=443
|
||||
TRAEFIK_DYNAMIC_DIR=/opt/traefik/dynamic
|
||||
TRAEFIK_LETSENCRYPT_DIR=/opt/traefik/letsencrypt
|
||||
|
||||
TRAEFIK_LOG_DIR=/opt/traefik/logs
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
http:
|
||||
routers:
|
||||
traefik-dashboard:
|
||||
rule: Host(`traefik.sherlockhomeless.net`)
|
||||
entryPoints:
|
||||
- websecure
|
||||
tls:
|
||||
certResolver: letsencrypt
|
||||
middlewares:
|
||||
- crowdsec-bouncer@file
|
||||
- ths-authentik@docker
|
||||
service: api@internal
|
||||
Reference in New Issue
Block a user