Zum Inhalt

lldap

Leichtgewichtiger LDAP-Server als Benutzer- und Gruppenverzeichnis. Einzige Identitätsquelle für Authelia. GitHub

URL ldap.homelab-external.robinwerner.net (Web-UI, Port 17170)
LDAP ldap://lldap:3890 — nur containerintern
Base DN dc=homelab-external,dc=robinwerner,dc=net
Speicher PostgreSQL (identity-postgres, Datenbank lldap)
Image lldap/lldap:*-alpine-rootless, läuft als 1000:1000

Die Web-UI liegt hinter Authelia und ist der Gruppe hetzner-admin vorbehalten. Der LDAP-Port selbst ist nicht veröffentlicht — er ist nur im Docker-Netz internal erreichbar.

Gruppen

Gruppe Zweck
homelab-admin Verwaltung der Homelab-Dienste (vorgesehen)
homelab-user Zugriff auf Homelab-Dienste (vorgesehen)
vpn-users VPN-Zugang
hetzner-admin Headplane und die lldap-Web-UI
hetzner-user Uptime Kuma und Healthchecks

Die beiden homelab-*-Gruppen sind bereits angelegt, greifen aber erst, wenn die Dienste auf dem NUC angebunden werden — der Ausbauschritt steht in RFC-003.

Benutzer

Angelegt über das Bootstrap-Verzeichnis (user-configs/*.json):

Benutzer Gruppen
robin lldap_admin, alle Homelab- und Hetzner-Gruppen
lars homelab-user, vpn-users
authelia lldap_strict_readonly — Dienstkonto für den LDAP-Bind

Das Authelia-Dienstkonto hat bewusst nur Lesezugriff: Es muss Benutzer und Gruppen auflösen können, sonst nichts.

Bootstrap

Beim Start liest lldap USER_CONFIGS_DIR und GROUP_CONFIGS_DIR und legt fehlende Objekte an. DO_CLEANUP=false — dort nicht aufgeführte Benutzer bleiben unangetastet.

Der Bootstrap setzt Passwörter bei jedem Lauf zurück

Und zwar für jeden Benutzer mit einem password_file-Eintrag. Ein in der Web-UI geändertes Passwort wird beim nächsten Containerstart stillschweigend überschrieben.

Wer ein Passwort dauerhaft ändern will, muss es in der Secret-Datei unter /opt/homelab-data/secrets/lldap/ ändern — oder den password_file-Eintrag aus der JSON entfernen, sobald das Konto eingerichtet ist.

Betrieb

cd /opt/homelab-repo/hetzner
docker compose logs -f lldap
docker compose restart lldap        # löst den Bootstrap erneut aus

# Healthcheck von Hand
docker exec lldap /app/lldap healthcheck

Secrets

Variable Zweck
LLDAP_JWT_SECRET Signatur der Web-UI-Sitzungen
LLDAP_KEY_SEED Ableitung der Verschlüsselungsschlüssel
LLDAP_ADMIN_PASSWORD Passwort des eingebauten admin-Kontos
IDENTITY_DB_PASSWORD PostgreSQL-Verbindung

Dazu die Initial-Passwörter der Bootstrap-Benutzer als Dateien unter /run/secrets/ (gemountet aus /opt/homelab-data/secrets/lldap/).

LLDAP_KEY_SEED nicht nachträglich ändern

Aus dem Seed werden die Schlüssel abgeleitet. Ein Wechsel entwertet die gespeicherten Passwort-Hashes — alle Benutzer müssten neu angelegt werden.