Traefik HTTP Basic Auth для панели управления не работает

Вопрос или проблема

В конце концов, после большого количества времени, потраченного на настройку, у меня закончились идеи. То, что должно быть довольно простым, становится довольно сложным. Надеюсь, кто-то другой сможет помочь мне найти решение.

Я пытаюсь запустить контейнер с Traefik. Вместо того чтобы помещать всю конфигурацию в файл docker-compose контейнера (docker-compose.yml), как делают многие, я размещаю конфигурацию в специальном файле (traefik.yml), так как это более гибко для меня.

У меня есть следующий файл docker-compose.yml для Traefik:

version: "3.8"

services:
  traefik:
    image: traefik:latest
    hostname: traefik
    container_name: traefik
    restart: unless-stopped
    command:
      - "--configFile=/traefik.yml"
    networks:
      - traefik_gw_bridge
    ports:
      - 80:80
      - 443:443
      - 8080:8080
    volumes:
      - ./traefik.yml:/traefik.yml
      - logs:/logs
      - letsencrypt:/letsencrypt
      - /var/run/docker.sock:/var/run/docker.sock:ro
    healthcheck:
      test: ["CMD", "traefik", "healthcheck", "--ping"]
      interval: 10s
      timeout: 6s
      retries: 2
      start_period: 5s

networks:
  traefik_gw_bridge:
    driver: bridge
    external: true

volumes:
  letsencrypt:
  logs:

И это параметры конфигурации, которые я использую в traefik.yml:

api:
  dashboard: true     
  insecure: false    

ping:
  entryPoint: web      

providers:
  docker:
    endpoint: "unix:///var/run/docker.sock"
    exposedByDefault: false 

entryPoints:
  web:
    address: ":80"   
  websecure:
    address: ":443"   
  traefik:
    address: ":8080" 

http:
  routers:
    dashboard:
      rule: "Host(`traefikdash.mydomain.com`)" 
      entryPoints:
        - traefik
      service: api@internal
      middlewares:
        - auth

  middlewares:
    auth:
      basicAuth:
        users:
          - "admin:$apr1$Nzj4xQwY$QiXQ/eYHzKTFS.Lx.6XG71"

log:                              
  filePath: "/logs/traefik.log"
  format: json
  level: DEBUG

accessLog:                        
  filePath: "/logs/access.log"
  bufferingSize: 150

certificatesResolvers:
  le:    
    acme:
      email: "[email protected]"    
      storage: "/letsencrypt/acme.json"  
      httpChallenge:
        entryPoint: "web" 

Логически, в следующей части файла конфигурации я пытаюсь определить маршрутизатор для настройки базовой аутентификации с именем пользователя и паролем для панели управления:

http:
  routers:
    dashboard:
      rule: "Host(`traefikdash.mydomain.com`)"  # Замените `yourdomain.com` на ваш домен
      entryPoints:
        - traefik
      service: api@internal
      middlewares:
        - auth

  middlewares:
    auth:
      basicAuth:
        users:
          - "admin:$apr1$Nzj4xQwY$QiXQ/eYHzKTFS.Lx.6XG71"

Мне не удается получить желаемый результат. Когда я обращаюсь к traefikdash.mydomain.com или traefikdash.mydomain.com:8080 или traefikdash.mydomain.com:8080/dashboard / traefikdash.mydomain.com/dashboard, я просто получаю следующие ответы от Traefik и моего браузера:

  • HTTP 404 Страница не найдена
  • Ошибка соединения отказано

После того, как я попробовал различные типы конфигураций, я просто не могу найти много информации о том, как реализовать HTTP базовую аутентификацию для доступа к панели управления Traefik.

Ответ или решение

Проблема, с которой вы столкнулись, может быть вызвана несколькими факторами в конфигурации Traefik и доступе к Dashboard. Давайте разберем ваш docker-compose.yml и traefik.yml, а затем предложим некоторые изменения и рекомендации.

Анализ конфигурации

  1. Правило роутера: Ваше правило для роутера dashboard настроено на Host(traefikdash.mydomain.com), что значит, что вы должны получать доступ к Dashboard именно по этому адресу. Убедитесь, что DNS правильно настроен и указывает на ваш сервер, где запущен Traefik.

  2. Проблемы с портами: Вы используете traefik как отдельную точку входа с address: ":8080", но указали, что ваш dashboard должен быть доступен по тому же порту. Чтобы избежать путаницы, убедитесь, что вы используете traefikdash.mydomain.com с портом 8080, но также проверьте, что у вас в сети нет других сервисов, использующих этот порт.

  3. Доступность Dashboard: Попробуйте получить доступ к Dashboard, используя путь /dashboard, т.е. traefikdash.mydomain.com/dashboard. Эта URL должна сработать, если роутер правильно сконфигурирован.

  4. Ошибка 404: Если вы получаете ошибку 404, это может значить, что Traefik не видит роутер с заданным правилом. Проверьте логи Traefik на предмет ошибок, которые могут указать на проблемы с конфигурацией. Логи находятся в /logs/traefik.log.

Рекомендации по конфигурации

Обновите traefik.yml следующим образом:

api:
  dashboard: true     
  insecure: false    

ping:
  entryPoint: web      

providers:
  docker:
    endpoint: "unix:///var/run/docker.sock"
    exposedByDefault: false 

entryPoints:
  web:
    address: ":80"   
  websecure:
    address: ":443"   
  traefik:
    address: ":8080" 

http:
  routers:
    dashboard:
      rule: "Host(`traefikdash.mydomain.com`)" 
      entryPoints:
        - traefik
      service: api@internal
      middlewares:
        - auth

  middlewares:
    auth:
      basicAuth:
        users:
          - "admin:$apr1$Nzj4xQwY$QiXQ/eYHzKTFS.Lx.6XG71"

log:                              
  filePath: "/logs/traefik.log"
  format: json
  level: DEBUG

accessLog:                        
  filePath: "/logs/access.log"
  bufferingSize: 150

certificatesResolvers:
  le:    
    acme:
      email: "[email protected]"    
      storage: "/letsencrypt/acme.json"  
      httpChallenge:
        entryPoint: "web" 

Проверьте следующее:

  1. DNS-имя: Убедитесь, что ваше DNS-имя traefikdash.mydomain.com указывает на правильный IP-адрес вашего сервера.
  2. Порты: Откройте порты 80, 443 и 8080 на вашем сервере (например, с помощью ufw или iptables).
  3. Логи: Просмотр логов поможет диагностировать проблемы. Обратите внимание на любые ошибки, которые могут возникнуть при доступе к маршруту.
  4. Перезапустите контейнер: После внесения изменений в traefik.yml необходимо перезапустить контейнер Traefik, чтобы новые конфигурации вступили в силу: docker-compose down и docker-compose up -d.

Заключение

Следуя этим рекомендациям и проверяя конфигурацию, вы должны смочь устранить проблему с доступом к Dashboard Traefik с использованием базовой аутентификации. Если проблема продолжает повторяться, вернитесь к логам и проверьте, не осталось ли каких-либо проблем с конфигурацией или доступом.

Оцените материал
Добавить комментарий

Капча загружается...