Keycloak installieren: Dein sicherer Hafen für Identity & Access Management
Du bist es leid, dich durch ein Labyrinth aus Passwörtern zu schlängeln? Dein System sieht aus, als hätte ein kleiner T-Rex dort ein Picknick veranstaltet? Dann ist Keycloak genau das Richtige für dich. Diese Open-Source-Lösung ist wie ein gut organisiertes Büro für deine Benutzerverwaltung (Identity and Access Management, IAM) – sicher, effizient und leicht zu handhaben. In diesem Guide zeigen wir dir, wie du Keycloak mit Docker einrichtest, damit du dich auf das Wesentliche konzentrieren kannst.
Vorbereitung ist alles: Was du brauchst
- Ein Server oder lokaler Computer mit Internetzugang: Um die Docker-Images herunterzuladen.
- Grundkenntnisse in Linux: Du solltest dich mit der Kommandozeile auskennen (z.B. Ubuntu/Debian).
- Docker und Docker Compose: Diese beiden Werkzeuge sind das Herzstück unserer Installation.
Docker Compose installieren – Der Schlüssel zum Erfolg
Docker Compose ist wie ein Dirigent für deine Docker-Container. Es ermöglicht dir, mehrere Container (wie Keycloak und die MySQL-Datenbank) gleichzeitig zu verwalten. Ab Ubuntu 20.04 empfiehlt sich die Installation per Apt-Plugin:
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Repository hinzufügen
echo \
"deb [arch=\"$(dpkg --print-architecture)\" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Überprüfe die Installation:
docker compose version
Die Keycloak-Umgebung vorbereiten
Wir erstellen zuerst eine Ordnerstruktur für unsere Keycloak-Datenbanken. Das sorgt für persistente Daten, auch wenn die Container neu gestartet werden.
mkdir -p ~/keycloak-databases/data-sql
cd ~/keycloak-databases
touch data-sql/mysqld.conf docker-compose.yml .env
chmod 777 data-sql/
MySQL konfigurieren – Die solide Basis für Keycloak
MySQL ist die relationale Datenbank, in der Keycloak alle Benutzerdaten speichert. Wir erstellen eine Konfigurationsdatei für MySQL.
Erstelle die Datei data-sql/mysqld.conf mit folgendem Inhalt:
[mysqld]
bind-address = 0.0.0.0
port = 3306
datadir=/var/lib/mysql
socket=/var/run/mysqld/mysqld.sock
[mysqld_safe]
log-error=/var/log/mysql/error.log
pid-file=/var/run/mysqld/mysqld.pid
user=mysql
Dann die docker-compose.yml Datei:
version: '3.8'
services:
mysqldb:
image: mysql:8.0
command: --default-authentication-plugin=mysql_native_password
restart: always
env_file: .env
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} # Root-Passwort für MySQL
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER_KEYCLOAK}
MYSQL_PASSWORD: ${MYSQL_PASSWORD_KEYCLOAK} # Keycloak-Benutzerpasswort
mem_limit: 500m
ports:
- "33066:3306"
volumes:
- data-sql:/var/lib/mysql
volumes:
data-sql:
networks:
default:
Und schließlich die .env Datei (passe die Werte an deine Sicherheitsanforderungen an):
MYSQL_ROOT_PASSWORD=EinSehrSicheresRootPasswort!
MYSQL_DATABASE=keycloak-db
MYSQL_USER_KEYCLOAK=keycloak-user
MYSQL_PASSWORD_KEYCLOAK=EinSehrSicheresKeycloakPasswort!
Keycloak Container starten – Das Herzstück der Benutzerverwaltung
Jetzt starten wir den Keycloak-Container. Wir nutzen das aktuelle, Quarkus-basierte Image von RedHat (Quay.io).
docker run -d --name keycloak \
-p 8080:8080 \
-e KC_DB=mysql \
-e KC_DB_URL=jdbc:mysql://<deine-mysql-ip>:33066/keycloak-db \
-e KC_DB_USERNAME=keycloak-user \
-e KC_DB_PASSWORD=EinSehrSicheresKeycloakPasswort! \
-e KEYCLOAK_ADMIN=admin \
-e KEYCLOAK_ADMIN_PASSWORD=SicheresAdminPasswort! \
quay.io/keycloak/keycloak:latest start-dev
(Hinweis: Ersetze <deine-mysql-ip> durch die tatsächliche IP des Docker-Hosts.)
Keycloak Testen und erste Schritte
Überprüfe, ob der Keycloak-Server läuft, indem du im Browser http://localhost:8080/ aufrufst und auf “Administration Console” klickst. Du solltest die Anmeldeseite sehen.
Melde dich mit den in den Umgebungsvariablen vergebenen Admin-Zugangsdaten an und erstelle deinen ersten Realm und Benutzer.
Wichtige Hinweise – Sicherheit geht vor!
- Produktionsumgebung: Das
start-devCommand ist nur für Testumgebungen gedacht! Für den produktiven Einsatz musst du TLS (HTTPS) aktivieren und das Kommandostartverwenden. - Firewall: Stelle sicher, dass deine Firewall den Datenbank-Port (33066) von außen blockiert. Nur Keycloak sollte darauf zugreifen können.
- Backups: Richte automatisierte Backups für das Verzeichnis
/var/lib/mysqlein, um Datenverlust zu vermeiden.
Fazit
Mit Docker und Keycloak hast du ein mächtiges Werkzeug, um Single Sign-On (SSO) und deine Benutzerverwaltung sicher und effizient zu gestalten. Viel Erfolg bei der Integration in deine Anwendungen!