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: