From afb95f437512264b48dbdd6c023ce44eb01fc84a Mon Sep 17 00:00:00 2001 From: groales Date: Mon, 1 Dec 2025 11:46:42 +0100 Subject: [PATCH] =?UTF-8?q?Habilitar=20autenticaci=C3=B3n=20b=C3=A1sica=20?= =?UTF-8?q?en=20dashboard:=20middleware=20auth-basic@file=20+=20documentac?= =?UTF-8?q?i=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 28 ++++++++++++++++------------ docker-compose.yaml | 5 ++--- dynamic/README.md | 23 +++++++++++++++++++++++ dynamic/middlewares.yml | 10 +++++----- 4 files changed, 46 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 7e469ea..23e0109 100644 --- a/README.md +++ b/README.md @@ -78,23 +78,27 @@ docker compose up -d Este stack expone el dashboard por dominio usando TLS y el servicio interno `api@internal`. -Para proteger con autenticación básica (opcional): +**Autenticación básica habilitada:** El dashboard está protegido mediante el middleware `auth-basic@file` definido en `dynamic/middlewares.yml`. -```yaml -labels: - - "traefik.http.routers.traefik.middlewares=traefik-auth" - - "traefik.http.middlewares.traefik-auth.basicauth.users=admin:$$apr1$$" -``` +### Configurar contraseña -Generar hash (htpasswd): +1. Genera el hash bcrypt: ```bash -# Linux/macOS -htpasswd -nb admin 'TuPassword' - -# PowerShell con OpenSSL (alternativa) -# openssl passwd -apr1 TuPassword +docker run --rm httpd:alpine htpasswd -nbB admin tu_password_segura ``` +2. Edita `dynamic/middlewares.yml` línea 35 y reemplaza el hash de ejemplo: +```yaml +auth-basic: + basicAuth: + users: + - "admin:$2y$05$tu_hash_generado_aqui" +``` + +3. Guarda el archivo. Traefik recargará automáticamente en ~10 segundos (no requiere reinicio). + +**Usuario por defecto:** `admin` (cambia el hash según tu contraseña) + ## Exponer Servicios Detrás de Traefik Conecta tus servicios a la red `proxy` y añade labels. Ejemplo: Portainer diff --git a/docker-compose.yaml b/docker-compose.yaml index 1b21791..e25f28f 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -24,9 +24,8 @@ services: - "traefik.http.routers.traefik.tls=true" - "traefik.http.routers.traefik.tls.certresolver=letsencrypt" - "traefik.http.routers.traefik.service=api@internal" - # Opcional: Autenticación básica - # - "traefik.http.routers.traefik.middlewares=traefik-auth" - # - "traefik.http.middlewares.traefik-auth.basicauth.users=admin:$$apr1$$..." + # Autenticación básica (usa middleware del archivo dynamic/middlewares.yml) + - "traefik.http.routers.traefik.middlewares=auth-basic@file" networks: proxy: diff --git a/dynamic/README.md b/dynamic/README.md index 77f1e53..cf67bd1 100644 --- a/dynamic/README.md +++ b/dynamic/README.md @@ -6,6 +6,29 @@ Este directorio contiene configuración que Traefik recarga automáticamente sin - **middlewares.yml**: Middlewares reutilizables (headers seguridad, rate limit, auth, etc.) +## Autenticación Básica + +El middleware `auth-basic` está **habilitado por defecto** para proteger el dashboard de Traefik. + +### Configurar tu contraseña + +1. Genera hash bcrypt: +```bash +docker run --rm httpd:alpine htpasswd -nbB admin tu_password +``` + +2. Copia el hash completo (después de `admin:`) + +3. Edita `middlewares.yml` línea 35: +```yaml +auth-basic: + basicAuth: + users: + - "admin:$2y$05$HASH_GENERADO_AQUI" +``` + +4. Guarda → recarga automática en ~10 segundos + ## Uso ### Aplicar middleware a un servicio diff --git a/dynamic/middlewares.yml b/dynamic/middlewares.yml index d2bddd4..007d95d 100644 --- a/dynamic/middlewares.yml +++ b/dynamic/middlewares.yml @@ -29,11 +29,11 @@ http: - "10.0.0.0/8" - "192.168.0.0/16" - # Autenticación básica (genera hash con: htpasswd -nb usuario password) - # auth-basic: - # basicAuth: - # users: - # - "admin:$apr1$..." + # Autenticación básica (genera hash con: docker run --rm httpd:alpine htpasswd -nbB admin tu_password) + auth-basic: + basicAuth: + users: + - "admin:$2y$05$example_hash_CHANGE_THIS" # CAMBIA ESTE HASH # Redirect www a root redirect-www: