Traefik + Authelia und andere Container

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

wjavixxassuj

Benutzer
Registriert
19. Sep. 2021
Beiträge
101
Reaktionspunkte
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
 
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?
 

Additional post fields

 

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