Traefik + Authelia und andere Container

wjavixxassuj

Benutzer
Mitglied seit
19. Sep 2021
Beiträge
101
Punkte für Reaktionen
10
Punkte
68
Hallo Zusammen,

da einige meiner Docker Dienste aus dem Internet öffentlich erreichbar sind, möchte ich gerne eine Sicherheitsstufe einbauen. Bei meiner Recherche bin ich auf Authelia gestoßen, was mir sehr gefällt. Leider habe ich etwas Schwierigkeiten Traefik und Authelia zum Laufen zu bekommen, sodass auch entsprechend die Anmeldewebseite für bypass, one_factor oder two_factor erscheint.

Folgendes Problem:
Authelia ist im Reverse Proxy der Diskstation unter auth.domain1.de hinterlegt. Gebe ich das im Browser ein, öffnet sich die Seite und ich kann mich mit meinen Credentials anmelden. Mit den Labels usw. bekomme ich es aber nicht hin, dass bspw. Homepage, Vaultwarden oder andere Dienste genau dieselbe Seite zum anmelden angezeigt bekommen.

In der configuration.yml habe ich folgende Paramenter gesetzt für Authelia
YAML:
access_control:
  default_policy: deny
  rules:
    # Rules applied to everyone
    - domain: public.domain1.de
      policy: bypass
    - domain: homepage.domain1.de
      policy: one_factor
    - domain: vaultwarden.domain1.de
      policy: two_factor

Im Internet gibt es viele Beispiele für Traefik und da werden eine ganze Reihe an Traefik Labels hinterlegt. Vielleicht könnt ihr mir aus Erfahrung heraus sagen, was bei mir fehlt?

Das Erscheint wenn ich auth.domain1.de aufrufe.
1705325050827.png -> 1705325018315.png

Traefik schreibt übrigens im Log folgendes
time="2024-01-15T13:17:23Z" level=error msg="service \"authelia-authelia\" error: port is missing" providerName=docker container=authelia-authelia-5d25c9091dca7bb8d6ece4d49a132b26e864612b5d81212ced86ad3e6448bed2


YAML:
version: '3'

services:
  authelia:
    image: authelia/authelia
    container_name: authelia
    volumes:
      - /volume2/docker/authelia/config:/config
    network_mode: "host"    
    labels:
      - 'traefik.enable=true'
      - 'traefik.http.routers.authelia.rule=Host(`auth.domain1.de`)'
      - 'traefik.http.routers.authelia.entrypoints=https'
      - 'traefik.http.routers.authelia.tls=true'
      - 'traefik.http.middlewares.authelia.forwardauth.address=http://authelia:9091/api/verify?rd=https://auth.domain1.de'
      - 'traefik.http.middlewares.authelia.forwardauth.trustForwardHeader=true'
      - 'traefik.http.middlewares.authelia.forwardauth.authResponseHeaders=Remote-User,Remote-Groups,Remote-Name,Remote-Email'
    expose:
      - 9091    
    restart: unless-stopped
    environment:
      - TZ=Europe/Berlin
    healthcheck:
      disable: true

YAML:
version: '3'

services:
  reverse-proxy:
    image: traefik:v2.10
    container_name: traefik
    command: --api.insecure=true --providers.docker
    ports:
      - "20500:80"
      - "21500:8080"
    expose:
    - 80
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    networks:
      - docker

networks:
 docker:
  name: docker
  external: true

YAML:
version: "3.3"

services:
  homepage:
    image: ghcr.io/gethomepage/homepage:latest
    container_name: homepage
    environment:
      PUID: 1026
      PGID: 100
    ports:
      - 8123:3000
    volumes:
      - /volume2/docker/homepage:/app/config
      - /var/run/docker.sock:/var/run/docker.sock:ro
    restart: unless-stopped
    labels:
      - "com.centurylinklabs.watchtower.enable=true"
      - "traefik.http.routers.homepage.rule=Host(`homepage.domain1.de`)"  
    networks:
      - docker

networks:
 docker:
  name: docker
  external: true
 

haydibe

Benutzer
Sehr erfahren
Mitglied seit
12. Apr 2016
Beiträge
1.481
Punkte für Reaktionen
364
Punkte
103
Du musst deinem Reverse Proxy sagen, wenn er Authelia als Middleware für Services verwenden soll.....

Am Beispiel von Hompage würde es so aussehen:
Code:
      - 'traefik.http.routers.homepage.middlewares=authelia@docker'

Wenn man sich die geteilte Konfiguration ansieht, dann gibt es weitere Auffälligkeiten:
  • für Traefik ist kein https port gepublished? Wie soll https traefik dort ankommen?
    • Sicher, dass ein Authentifizierungsworkflow ohne https mit Authenlia überhaupt funktioniert?
  • Authelia ist nicht in einem Container Netzwerk, und kann es Dank network_mode: host auch nicht sein.
    • Dieser Network Mode besagt die Abwesenheit von Isolation vom Host-Netzwerknamespace. Kann Traefik überhaupt traffic dorthin reverse-proxien?
 


 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat