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.