Was ist Authentik?
Authentik (ausgesprochen wie „authentic") ist ein Open-Source Identity Provider (IdP) der Single Sign-On (SSO), Multi-Faktor-Authentifizierung und User-Provisioning für selbst gehostete Infrastrukturen bereitstellt.
Als Alternative zu kommerziellen Lösungen wie Okta, Auth0 oder Azure AD B2C können Sie mit Authentik alle Ihre Apps – Nextcloud, Grafana, GitLab, Portainer, Proxmox, Vaultwarden und mehr – hinter einem zentralen Login zusammenführen.
Unterstützte Protokolle
| Protokoll | Verwendung |
|---|---|
| OIDC/OAuth2 | Moderne Web-Apps (Grafana, Gitea, Proxmox) |
| SAML 2.0 | Enterprise-Apps, Confluence, Jira |
| LDAP | Legacy-Apps, Nextcloud, Photoprism |
| RADIUS | Netzwerkgeräte, VPN |
| SCIM | Automatisches User-Provisioning |
| Proxy | Forward-Auth für Nginx/Traefik |
Voraussetzungen
- Docker und Docker Compose
- Domain mit DNS-Eintrag (für SSL)
- Mindestens 2 GB RAM, 2 vCPU
Installation mit Docker Compose
Erstellen Sie /opt/authentik/docker-compose.yml:
version: '3.4'
services:
postgresql:
image: docker.io/library/postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_PASSWORD: ${PG_PASS:?error}
POSTGRES_USER: authentik
POSTGRES_DB: authentik
volumes:
- database:/var/lib/postgresql/data
redis:
image: docker.io/library/redis:alpine
restart: unless-stopped
command: --save 60 1 --loglevel warning
volumes:
- redis:/data
server:
image: ghcr.io/goauthentik/server:latest
restart: unless-stopped
command: server
environment:
AUTHENTIK_REDIS__HOST: redis
AUTHENTIK_POSTGRESQL__HOST: postgresql
AUTHENTIK_POSTGRESQL__USER: authentik
AUTHENTIK_POSTGRESQL__NAME: authentik
AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS}
AUTHENTIK_SECRET_KEY: ${AUTHENTIK_SECRET_KEY}
AUTHENTIK_ERROR_REPORTING__ENABLED: false
ports:
- "0.0.0.0:9000:9000"
- "0.0.0.0:9443:9443"
depends_on:
- postgresql
- redis
worker:
image: ghcr.io/goauthentik/server:latest
restart: unless-stopped
command: worker
environment:
AUTHENTIK_REDIS__HOST: redis
AUTHENTIK_POSTGRESQL__HOST: postgresql
AUTHENTIK_POSTGRESQL__USER: authentik
AUTHENTIK_POSTGRESQL__NAME: authentik
AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS}
AUTHENTIK_SECRET_KEY: ${AUTHENTIK_SECRET_KEY}
depends_on:
- postgresql
- redis
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- media:/media
- certs:/certs
- templates:/templates
volumes:
database:
redis:
media:
certs:
templates:
Umgebungsvariablen in .env:
# .env Datei erstellen
cat > /opt/authentik/.env << 'EOF'
PG_PASS=einSicheresPasswort123!
AUTHENTIK_SECRET_KEY=$(openssl rand 60 | base64 -w 0)
EOF
Starten:
cd /opt/authentik
docker compose up -d
Admin-Interface: https://<SERVER-IP>:9443/if/flow/initial-setup/
Setzen Sie E-Mail und Passwort für den Administrator.
Ersten OIDC-Provider einrichten (Beispiel: Grafana)
In Authentik
Applications → Providers → Create → OAuth2/OpenID Provider
- Name:
Grafana - Authorization flow:
default-authorization-explicit-consent - Client type: Confidential
- Client ID: automatisch generiert (notieren!)
- Client Secret: automatisch generiert (notieren!)
- Redirect URIs:
https://grafana.ihredomain.de/login/generic_oauth
- Name:
Applications → Create
- Name:
Grafana - Slug:
grafana - Provider: den eben erstellten auswählen
- Launch URL:
https://grafana.ihredomain.de
- Name:
In Grafana (grafana.ini)
[auth.generic_oauth]
enabled = true
name = Authentik
allow_sign_up = true
client_id = <CLIENT_ID>
client_secret = <CLIENT_SECRET>
scopes = openid email profile
auth_url = https://auth.ihredomain.de/application/o/grafana/authorize/
token_url = https://auth.ihredomain.de/application/o/grafana/token/
api_url = https://auth.ihredomain.de/application/o/userinfo/
role_attribute_path = contains(groups[*], 'Grafana Admins') && 'Admin' || 'Viewer'
Grafana-Neustart → Login-Seite zeigt „Mit Authentik anmelden" Button.
Multi-Faktor-Authentifizierung (MFA)
Authentik → Flows & Stages → Create Stage → Authenticator Validation Stage:
- Name:
MFA Validation - Device classes: TOTP, Static, WebAuthn
- Not configured action: Force configure (Benutzer muss MFA einrichten)
Den Stage in den Default-Authentication-Flow einbinden:
Flows → default-authentication-flow → Edit → Stage bindings → Add stage → MFA Validation
Alle Benutzer werden beim nächsten Login zur MFA-Einrichtung aufgefordert.
LDAP-Outpost (für Legacy-Apps)
Apps die kein OIDC sprechen (z. B. ältere Nextcloud-Versionen, Vaultwarden) können sich per LDAP gegen Authentik authentifizieren:
- Outposts → Create → LDAP
- Integrate als LDAP-Server: Port 389 (LDAP) oder 636 (LDAPS)
- In der Ziel-App LDAP konfigurieren:
- LDAP Host:
<AUTHENTIK_SERVER> - Bind DN:
cn=ldapservice,ou=serviceaccounts,dc=ldap,dc=goauthentik,dc=io - Base DN:
dc=ldap,dc=goauthentik,dc=io
- LDAP Host:
Benutzer und Gruppen
Authentik → Directory → Users → Create:
- Attribute: Vorname, Nachname, E-Mail, Username
- Gruppen für Zugriffssteuerung (z. B. „Admins", „Grafana-Users")
Automatische Synchronisierung via SCIM wenn die Ziel-App SCIM unterstützt.
Branding anpassen
Authentik → System → Brands:
- Logo hochladen
- Primärfarbe setzen
- Login-Seite kommt mit Ihrem Corporate Design
FAQ
Wie skaliert Authentik mit vielen Benutzern?
Authentik ist für tausende Benutzer ausgelegt. Worker-Prozesse können horizontal skaliert werden. Für sehr große Deployments empfiehlt sich eine externe PostgreSQL-Instanz.
Was ist der Unterschied zu Keycloak?
Keycloak ist mächtiger und etablierter im Enterprise-Bereich aber komplexer zu administrieren. Authentik ist moderner, einfacher bedienbar und besonders für Self-hosted-Umgebungen optimiert.
Kann Authentik Active Directory ersetzen?
Für kleinere Umgebungen ja. Authentik bietet LDAP, Gruppen und User Management. Für Exchange/Windows-Domänen-Funktionen ist AD jedoch weiterhin nötig.
Fazit
Authentik ist 2025 die beste Open-Source-Wahl für Single Sign-On in selbst gehosteten Umgebungen. Ein zentraler Login für alle Ihre Services verbessert gleichzeitig die Sicherheit (MFA überall) und die Benutzerfreundlichkeit.
Wir implementieren Identity-Management-Lösungen für KMU in Heidelberg, Mannheim und der Rhein-Neckar-Region. Jetzt Sicherheitsberatung anfragen.