Single Sign-On und Zwei-Faktor-Authentifizierung sind für Self-Hoster mit vielen Diensten unverzichtbar. Statt jeden Dienst einzeln mit Auth zu versehen, setzt du einen zentralen Identity Provider (IdP) vor deine Services. Die populärsten Open-Source-Optionen für diesen Anwendungsfall sind Authelia und Authentik — beide kostenlos, aber mit sehr unterschiedlichem Funktionsumfang.
Was ist Authelia?
Authelia ist ein leichtgewichtiger Authentifizierungs- und Autorisierungsserver. Es sitzt als Forward-Auth-Middleware vor deinem Reverse Proxy (Traefik, Nginx, Caddy) und entscheidet, ob eine Anfrage durchgelassen wird.
Authelia ist kein IdP im klassischen Sinne — es bietet kein OpenID Connect oder SAML-Provider. Es authentifiziert Nutzer und gibt ein Session-Cookie aus, das der Reverse Proxy prüft.
# Typische Authelia-Integration mit Traefik
labels:
- "traefik.http.middlewares.authelia.forwardauth.address=http://authelia:9091/api/verify?rd=https://auth.domain.de"
- "traefik.http.middlewares.authelia.forwardauth.trustForwardHeader=true"
- "traefik.http.middlewares.authelia.forwardauth.authResponseHeaders=Remote-User,Remote-Groups,Remote-Name,Remote-Email"
Features von Authelia
- Forward Authentication für Traefik, Nginx, Caddy, HAProxy
- Lokale Benutzerverwaltung (LDAP oder Datei-basiert)
- TOTP (Time-based One-Time Passwords) und WebAuthn/Passkeys
- Push-Benachrichtigungen via Duo
- Per-Domain-Policies (z.B. 2FA nur für Admin-Dienste)
- Redis-basierte Session-Verwaltung für HA-Setup
- PostgreSQL/MySQL als Datenbank-Backend
Was ist Authentik?
Authentik ist ein vollständiger Identity Provider. Es implementiert OpenID Connect (OIDC), SAML 2.0 und LDAP — und ist damit als Ersatz für Okta, Auth0 oder Keycloak einsetzbar. Authentik kann als OIDC-Provider für Dienste dienen, die native SSO-Integration unterstützen (Gitea, Nextcloud, Grafana etc.).
Features von Authentik
- OIDC/OAuth2 Provider: Authentik kann als Authorization Server für eigene Apps dienen
- SAML 2.0: Für Enterprise-Apps (z.B. Confluence, Jira)
- LDAP Provider: Macht Authentik zu einem LDAP-Server
- Flow-Editor: Visueller Editor für Authentifizierungs-Flows (MFA, Social Login, Self-Service)
- Proxy Provider: Ähnlich wie Authelia — Forward Auth für Dienste ohne eigene SSO-Integration
- User-Self-Service: Passwort-Reset, E-Mail-Bestätigung, Profilverwaltung
- Social Login: Google, GitHub, Discord, OIDC-generisch
- Outposts: Externe Proxy-Instanzen für bessere Performance
Technischer Direktvergleich
| Kriterium | Authelia | Authentik |
|---|---|---|
| Protokolle | Forward Auth | OIDC, SAML, LDAP, Forward Auth |
| IdP-Funktion | ❌ | ✅ |
| Ressourcen (Idle) | ~30MB RAM | ~400MB RAM |
| Setup-Komplexität | Einfach | Mittel-Hoch |
| Web-UI | Minimal (Login-Page) | Vollständiges Admin-Panel |
| User Management | Datei oder LDAP | Eingebaut + externe Provider |
| Social Login | ❌ | ✅ |
| Self-Service Portal | ❌ | ✅ |
| Lizenz | Apache 2.0 | MIT (Enterprise: BSL) |
| Docker-Images | ~30MB | ~1.5GB |
Ressourcenverbrauch im Vergleich
Das ist der entscheidende Unterschied für Homelab-Betreiber:
Authelia benötigt im Idle-Betrieb nur ~30-50MB RAM. Mit Redis und einer kleinen SQLite-Datenbank ist das Setup in unter 100MB Gesamtverbrauch möglich — ideal für kleine VPS oder Raspberry Pi.
Authentik benötigt PostgreSQL, Redis, einen Worker-Prozess und den Server selbst. Realistischer Minimum-RAM: ~800MB bis 1.2GB. Das macht Authentik ungeeignet für sehr ressourcenknappe Setups.
Setup-Vergleich
Authelia Docker Compose
version: "3.8"
services:
authelia:
image: authelia/authelia:latest
volumes:
- ./config:/config
environment:
- AUTHELIA_JWT_SECRET_FILE=/config/jwt_secret
- AUTHELIA_SESSION_SECRET_FILE=/config/session_secret
ports:
- "9091:9091"
redis:
image: redis:alpine
volumes:
- redis_data:/data
Authentik Docker Compose (Kurzversion)
version: "3.8"
services:
postgresql:
image: postgres:16-alpine
environment:
POSTGRES_PASSWORD: ${PG_PASS:?database password required}
POSTGRES_USER: authentik
POSTGRES_DB: authentik
redis:
image: redis:alpine
server:
image: ghcr.io/goauthentik/server:2024.12.2
command: server
environment:
AUTHENTIK_REDIS__HOST: redis
AUTHENTIK_POSTGRESQL__HOST: postgresql
AUTHENTIK_POSTGRESQL__PASSWORD: ${PG_PASS}
AUTHENTIK_SECRET_KEY: ${AUTHENTIK_SECRET_KEY}
ports:
- "9000:9000"
worker:
image: ghcr.io/goauthentik/server:2024.12.2
command: worker
environment:
AUTHENTIK_REDIS__HOST: redis
AUTHENTIK_POSTGRESQL__HOST: postgresql
Wann welches Tool?
Authelia ist die richtige Wahl wenn…
- Du einfach nur Services mit Login-Screen schützen willst
- Ressourceneffizienz wichtig ist (kleiner VPS, Homelab)
- Du keine bestehenden Apps mit OIDC integrieren musst
- Du schnell starten willst (Setup in 30 Minuten möglich)
- Alle deine Services über einen Reverse Proxy laufen
Authentik ist die richtige Wahl wenn…
- Du OIDC/SAML-Integration für bestehende Apps benötigst (Gitea, Nextcloud, Grafana)
- Du Social Login (Google, GitHub) anbieten willst
- Du ein Self-Service-Portal für Benutzer brauchst
- Du mehrere Teams/Tenants mit unterschiedlichen Policies verwaltest
- Du Keycloak ersetzen willst ohne Enterprise-Komplexität
Kombinierter Ansatz: Das Beste aus beiden Welten
Viele Self-Hoster nutzen Authentik als zentralen IdP und schalten Authelia (oder Authentik Outposts) als Forward-Auth-Middleware davor. Das gibt ihnen:
- OIDC für Apps mit nativer Integration
- Forward Auth für Legacy-Services ohne SSO-Support
- Zentrales User-Management in Authentik
Fazit
Für einfache Use Cases und kleine Setups ist Authelia die bessere Wahl: weniger Ressourcen, einfacheres Setup, ausreichend für den typischen Reverse-Proxy-Anwendungsfall. Für komplexere Szenarien mit echten OIDC/SAML-Integrationen ist Authentik unverzichtbar — der höhere Ressourcenverbrauch ist der Preis für Enterprise-Features im Self-Hosting.
Wer schon Keycloak kennt: Authentik fühlt sich ähnlich an, aber mit besserer Developer Experience und kleinerem Footprint. Wer gerade erst mit Self-Hosted Auth startet: Authelia zuerst.