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.