---
name: TraefikDynamicConfig
lang: go
domain: infra
version: "1.0.0"
algebraic: product
definition: |
  type TraefikDynamicConfig struct {
      Name          string
      Domain        string
      UpstreamURL   string
      BasicAuthLine string
      EnableGzip    bool
      CertResolver  string
  }
description: "Parametriza la generacion de un traefik-dynamic.yml para el file provider de Traefik (Coolify). Usado por generate_traefik_dynamic."
tags: [traefik, config, infra, deploy, basicauth, tls, coolify]
uses_types: []
file_path: "functions/infra/traefik_dynamic_config.go"
---

## Ejemplo

```go
cfg := TraefikDynamicConfig{
    Name:          "registry-api",
    Domain:        "registry.organic-machine.com",
    UpstreamURL:   "http://registry-api:8420",
    BasicAuthLine: "lucas:$2a$10$hashedpassword",
    EnableGzip:    true,
    CertResolver:  "letsencrypt",
}
```

## Notas

`Name` se usa como prefix para todos los routers, services y middlewares Traefik (ej. `registry-api-auth`, `registry-api-gzip`). `BasicAuthLine` es el output directo de `BcryptHtpasswd` — ya incluye el usuario y el hash con `$` simple (file provider). `CertResolver` vacio equivale a `"letsencrypt"`.
