# Problem configuring htpasswd on traefik via docker-compose

**URL:** <https://community.traefik.io/t/problem-configuring-htpasswd-on-traefik-via-docker-compose/25407>\
**Category:** Traefik v3 (latest)\
**Tags:** docker, middleware\
**Created:** [December 4, 2024, 1:20pm UTC](https://community.traefik.io/t/problem-configuring-htpasswd-on-traefik-via-docker-compose/25407 "2024-12-04T13:20:54Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![rabinauget](https://sea2.discourse-cdn.com/flex020/user_avatar/community.traefik.io/rabinauget/32/9645_2.png) [@rabinauget](https://community.traefik.io/u/rabinauget)\
**Post date:** [December 4, 2024, 1:20pm UTC](https://community.traefik.io/t/problem-configuring-htpasswd-on-traefik-via-docker-compose/25407/1 "2024-12-04T13:20:54Z")

</div>

Hello all,

I'm new and just learning to use traefik.

Here's my docker-compose I'm currently using and it works fine via the url [http://192.168.100.1:8080](http://192.168.100.1:8080), and when I access this link, I'm redirected to [http://192.168.100.1:8080/dashbord/#/](http://192.168.100.1:8080/dashbord/#/) to get the dashbord:

```auto
services:
  traefik:
    image: "traefik:v2.11"
    container_name: "traefik"
    command:
      - "--api.insecure=true"
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80" # Ajout de l'entrypoint HTTP
      - "--entrypoints.websecure.address=:443" # EntryPoint HTTPS pour SSL
      - "--certificatesresolvers.letsencryptresolver.acme.tlschallenge=true"
      - "--certificatesresolvers.letsencryptresolver.acme.email=auget@gmail.com"
      - "--certificatesresolvers.letsencryptresolver.acme.storage=/letsencrypt/acme.json"
      - "--entrypoints.web.http.redirections.entryPoint.to=websecure" # Redirection HTTP vers HTTPS
      - "--entrypoints.web.http.redirections.entryPoint.scheme=https" # Schéma HTTPS pour la redirection
    ports:
      - "80:80" # Expose le port HTTP pour redirection vers HTTPS
      - "443:443" # Expose le port HTTPS pour SSL
      - "8080:8080" # Port pour l'API Traefik
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock:ro"
      - "./letsencrypt:/letsencrypt"
    networks:
      - traefik-net

networks:
  traefik-net:
    external: true

```

But as my dashboard is too accessible without security, I want to secure it with .htpasswd via this docker-compose file. But now, my dashboard isn't accessible via [http://192.168.100.1:8080](http://192.168.100.1:8080)

```auto
services:
  traefik:
    image: traefik:v3.1
    container_name: "traefik-labs"
    command:
      - "--api.insecure=false"
      - "--api.dashboard=true"
      - "--providers.docker=true"
      - "--log.level=DEBUG"
      - "--log.filepath=/var/log/traefik.log"
      - "--accesslog=true"
      - "--accesslog.filepath=/var/log/traefik-access.log"
      - "--providers.docker.network=traefik-net"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.websecure.address=:443"
      - "--certificatesresolvers.letsencryptresolver.acme.tlschallenge=true"
      - "--certificatesresolvers.letsencryptresolver.acme.email=auget@gmail.com"
      - "--certificatesresolvers.letsencryptresolver.acme.storage=/letsencrypt/acme.json"
      #- "--entryPoints.traefik.address=:8080"
    ports:
      - "80:80"
      - "443:443"
      - "8080:8080"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock:ro"
      - "./letsencrypt:/letsencrypt"
      - "./.htpasswd:/etc/traefik/.htpasswd"
    networks:
      - traefik-net
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.dashboard.rule=PathPrefix(`/`)"
      - "traefik.http.routers.dashboard.service=dashboard@internal"
      - "traefik.http.routers.dashboard.middlewares=secure-dashboard"
      - "traefik.http.middlewares.secure-dashboard.basicauth.usersfile=/etc/traefik/.htpasswd"

networks:
  traefik-net:
    external: true

```

Thank you in advance for your help.

---

<div class="post-metadata">

**Author:** ![bluepuma77](https://avatars.discourse-cdn.com/v4/letter/b/a9adbd/32.png) [@bluepuma77](https://community.traefik.io/u/bluepuma77)\
**Post date:** [December 4, 2024, 2:43pm UTC](https://community.traefik.io/t/problem-configuring-htpasswd-on-traefik-via-docker-compose/25407/2 "2024-12-04T14:43:13Z")

</div>

Read the [doc](https://doc.traefik.io/traefik/operations/dashboard/#secure-mode) and check [simple Traefik example](https://github.com/bluepuma77/traefik-best-practice/tree/main/docker-traefik-dashboard-letsencrypt).

---

<div class="post-metadata">

**Author:** ![rabinauget](https://sea2.discourse-cdn.com/flex020/user_avatar/community.traefik.io/rabinauget/32/9645_2.png) [@rabinauget](https://community.traefik.io/u/rabinauget)\
**Post date:** [December 4, 2024, 6:31pm UTC](https://community.traefik.io/t/problem-configuring-htpasswd-on-traefik-via-docker-compose/25407/3 "2024-12-04T18:31:45Z")

</div>

Thank you @bluepuma77 ,

After a few adjustments following the docs you suggested, it's working properly.

```auto
services:
  traefik:
    image: traefik:v3.1
    container_name: "traefik-labs"
    command:
      - "--api.dashboard=true"
      - "--providers.docker=true"
      - "--log.level=DEBUG"
      - "--log.filepath=/var/log/traefik.log"
      - "--accesslog=true"
      - "--accesslog.filepath=/var/log/traefik-access.log"
      - "--providers.docker.network=traefik-net"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.web.http.redirections.entrypoint.to=websecure"
      - "--entryPoints.web.http.redirections.entrypoint.scheme=https"
      - "--entrypoints.websecure.address=:443"
      - "--entrypoints.websecure.asDefault=true"
      - "--entrypoints.websecure.http.tls.certresolver=letsencryptresolver"
      - "--certificatesresolvers.letsencryptresolver.acme.tlschallenge=true"
      - "--certificatesresolvers.letsencryptresolver.acme.email=auget@gmail.com"
      - "--certificatesresolvers.letsencryptresolver.acme.storage=/letsencrypt/acme.json"
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock:ro"
      - "./letsencrypt:/letsencrypt"
      - "./.htpasswd:/etc/traefik/.htpasswd"
    networks:
      - traefik-net
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.dashboard.rule=Host(`traefik.example.com`)"
      - "traefik.http.routers.dashboard.service=api@internal"
      - "traefik.http.routers.dashboard.tls=true"
      - "traefik.http.routers.dashboard.tls.certresolver=letsencryptresolver"
      - "traefik.http.routers.dashboard.middlewares=secure-dashboard"
      - "traefik.http.middlewares.secure-dashboard.basicauth.usersfile=/etc/traefik/.htpasswd"

networks:
  traefik-net:
    external: true

```

I'll keep this post open until tomorrow morning, in case you have any comments.

---

<div class="post-metadata">

**Author:** ![bluepuma77](https://avatars.discourse-cdn.com/v4/letter/b/a9adbd/32.png) [@bluepuma77](https://community.traefik.io/u/bluepuma77)\
**Post date:** [December 5, 2024, 6:47am UTC](https://community.traefik.io/t/problem-configuring-htpasswd-on-traefik-via-docker-compose/25407/4 "2024-12-05T06:47:41Z")

</div>

You could set the `certResolver` globally on `entrypoint`.

And you don’t need `tls=true` if you set `tls.certresolver=`
