- Veröffentlicht am
Authentik als SSO und Security Gateway
- Autoren

- Name
- MajorTwip
- @MajorTwip
Ausgangslage
Neben dieser Website laufen bei mir diverse weitere Dienste. Portainer zum Docker-Management, IPAM, Grafana etc werden nur durch mich genutzt und können somit problemlos hinter einem VPN geschützt werden. In Immich und Paperless will ich aber Dinge freigeben können, diese werden aber aktiv entwickelt und ich hoffe diese sind entsprechend sicher. Wieder anderen vertraue ich weniger, und ausgerechnet im Stammbaum-Tool sind ja doch auch besonders schützenswerte Daten. Somit soll das hinter eine 2FA.
Komponenten
Als Reverse Proxy nutze isch schön länger Traefik. Dieses wiederum kann mittel ForwardAuth an Authentik gebunden werden. All dies läuft auf Docker, wenn auch nicht auf dem selben.
Einrichten von Authentik
Grundsätzlich nutze ich die offizielle Doku von Authentik Allerdings mit wenigen Anpassungen am docker compose:
services:
server:
labels:
# Labels to make authentik availlable via traefik
- traefik.enable=true
- traefik.http.routers.idp.entrypoints=https
- 'traefik.http.routers.idp.rule=Host("<fqdn from authentik>")'
- traefik.http.routers.idp.tls=true
volumes:
# Saving data to lacal filesystem
- /docker/authentik/media:/media
- /docker/authentik/custom-templates:/templates
env_file:
# has to be modified like this to be used in Portainer
- stack.env
ports:
# Removed fixed ports, given that the access will be done via traefik
- "9000"
- "9443"
Konfiguration des Outposts
Hierbei möchte ich gerne die Lorbeeren demjenigen übergeben, welchem sie gebühren. Im Tutorial von simplehomelab.com ziemlich weit unten findet sich das Kapitel "Authentik Configuration" welches mit einem Haufen Screenshots alles erklärt.
Einrichtung von Traefik
Oh es wird kompliziert. Nicht die Konfiguration von Traefik, sonder mein Setup. Ich nutzte zwei verschiedene Traefik-Instanzen. Eine auf dem primären Dockerhost welche über die Labels der Container konfiguriert wird und Zertifikate meiner eigenen Certificate Authority liefert. Eine Internet-Seitige welche Zertifikate von LetsEncrypt liefert und nur die von Aussen erreichbaren Dienste durchroutet. Dies konfiguriere ich mittels File Provider. Diese äussere Instanz ist ganz simpel nach der Doku von Authentik eingerichtet, gemäss dem Tab "Standalone", nur halt ohne Port, respektive dem Port 443.
