Keycloak spielt eine zentrale Rolle als Authentifizierungsstelle. Es stellt die Single-Sign-On (SSO) Funktionalität für alle Dienste der zentralen Plattform bereit und sichert somit den Zugriff auf die verschiedenen Anwendungen.
graph TB
subgraph Eingangssysteme
Email[E-Mail]
WhatsApp[WhatsApp]
Post[Physische Post]
Teams[Teams/Webex]
end
subgraph Zentrale_Plattform
NC[Nextcloud - Dokumentenverwaltung]
PL[Paperless - Dokumentenmanagement]
NR[Node-RED - Prozessautomatisierung]
KC[Keycloak - SSO]
OUI[OpenWebUI - KI-Korrespondenz]
KI[Kimai - Zeiterfassung]
end
subgraph Monitoring_Analytics
ELK[ELK Stack - Logging & Analyse]
end
subgraph Geschäftsprozesse
TP[Task-Priorisierung]
subgraph Finanzen
RE[Rechnungserstellung]
ZA[Zahlungsabwicklung]
BA[Banken-API]
end
subgraph Verwaltung
KV[Kundenverwaltung]
ZE[Zeiterfassung]
DO[Dokumentenarchiv]
end
end
Email --> NC
WhatsApp --> NC
Post --> PL
Teams --> NC
NC --> NR
PL --> NR
NR --> TP
KI --> TP
TP --> RE
TP --> ZA
TP --> KV
TP --> ZE
TP --> DO
ZA <--> BA
KC -.->|Authentifizierung| NC
KC -.->|Authentifizierung| PL
KC -.->|Authentifizierung| NR
KC -.->|Authentifizierung| OUI
KC -.->|Authentifizierung| KI
NR --> ELK
OUI --> NR
classDef container fill:#e1f5fe,stroke:#01579b
classDef process fill:#e8f5e9,stroke:#2e7d32
classDef auth fill:#fff3e0,stroke:#ef6c00
classDef monitoring fill:#fce4ec,stroke:#c2185b
class NC,PL,NR,KI container
class TP,RE,ZA,KV,ZE,DO process
class KC auth
class ELK monitoring
Die Systemarchitektur ist in vier Hauptbereiche gegliedert:
Eingangssysteme:
Zentrale Plattform:
Geschäftsprozesse:
Monitoring & Analytics:
[VERSION][VERSION][VERSION][VERSION][VERSION][VERSION][VERSION]Die Entwicklungsumgebung nutzt die Domain mrx8086.com mit verschiedenen Subdomains für die einzelnen Services. Diese werden lokal über die Windows-Hosts-Datei (C:\Windows\System32\drivers\etc\hosts) aufgelöst.
# Development Environment Host Entries
127.0.0.1 mrx8086.com
127.0.0.1 proxy.mrx8086.com # NGINX Proxy Manager
172.23.171.133 auth.mrx8086.com # Keycloak
127.0.0.1 cloud.mrx8086.com # Nextcloud
127.0.0.1 docs.mrx8086.com # Paperless
127.0.0.1 time.mrx8086.com # Kimai
127.0.0.1 automate.mrx8086.com # n8n
| Subdomain | Service | Beschreibung |
|---|---|---|
| proxy.mrx8086.com | NGINX Proxy Manager | Reverse Proxy und SSL-Management (lokal in der Development Umgebung) |
| auth.mrx8086.com | Keycloak | Zentrale Authentifizierung |
| cloud.mrx8086.com | Nextcloud | Dokumentenverwaltung |
| docs.mrx8086.com | Paperless | Dokumentenmanagement |
| time.mrx8086.com | Kimai | Zeiterfassung |
| automate.mrx8086.com | n8n | Workflow-Automatisierung |
setup_realm.jsDieses Skript wird verwendet, um den Keycloak-Realm, die zugehörigen Clients und Testbenutzer automatisiert zu erstellen. Es verwendet eine .env-Datei zur Konfiguration.
Die Konfigurationen für das setup_realm.js Script werden in einer .env Datei gespeichert. Die benötigten Umgebungsvariablen sind unten aufgelistet:
KEYCLOAK_URL: Die URL zum Keycloak Server (z.B. https://auth.mrx8086.com)KEYCLOAK_ADMIN_USER: Der Benutzername des Keycloak Administrators (z.B. admin).KEYCLOAK_ADMIN_PASSWORD: Das Passwort des Keycloak Administrators.NEXTCLOUD_CLIENT_ID: Die Client ID für Nextcloud. (z.B. nextcloud)PAPERLESS_CLIENT_ID: Die Client ID für Paperless (z.B. paperless).NODERED_CLIENT_ID: Die Client ID für Node-RED (z.B. nodered).TESTADMIN_PASSWORD: Das Passwort für den Testadmin User.TESTUSER_PASSWORD: Das Passwort für den Testuser User.TESTSERVICEUSER_PASSWORD: Das Passwort für den Testserviceuser User.KEYCLOAK_NEXTCLOUD_CLIENT_SECRET: Das Client Secret für Nextcloud.Für jeden Service existiert eine dedizierte NGINX-Konfiguration. In der Development Umgebung wird der NGINX Proxy Manager verwendet. Für Staging und Production werden die entsprechenden NGINX Konfigurationsdateien in /config/nginx abgelegt.
/config/nginx/sites-available/ zu finden./config/nginx/ssl/mrx8086.com/ abgelegt.Es werden zwei .env-Dateien verwendet:
Eine im docker/ Verzeichnis für die Docker-Konfiguration und eine im scripts/setup/keycloak/ für das setup_realm.js-Skript.
docker/.env:
KEYCLOAK_ADMIN_PASSWORD: Das Passwort für den Keycloak Admin-Benutzer.KC_DB_USERNAME: Der Benutzername für die Keycloak-Datenbank.KC_DB_PASSWORD: Das Passwort für die Keycloak-Datenbank.scripts/setup/keycloak/.env:
KEYCLOAK_URL: Die URL zum Keycloak-Server (z.B. https://auth.mrx8086.com).KEYCLOAK_ADMIN_USER: Der Benutzername des Keycloak-Administrators (z.B. admin).KEYCLOAK_ADMIN_PASSWORD: Das Passwort des Keycloak-Administrators (generiert durch das Skript).NEXTCLOUD_CLIENT_ID: Die Client-ID für Nextcloud (z.B. nextcloud).PAPERLESS_CLIENT_ID: Die Client-ID für Paperless (z.B. paperless).NODERED_CLIENT_ID: Die Client-ID für Node-RED (z.B. nodered).TESTADMIN_PASSWORD: Das Passwort für den Testadmin User.TESTUSER_PASSWORD: Das Passwort für den Testuser User.TESTSERVICEUSER_PASSWORD: Das Passwort für den Testserviceuser User.KEYCLOAK_NEXTCLOUD_CLIENT_SECRET: Das Client Secret für Nextcloud.Die Passwörter in der .env Datei im scripts/setup/keycloak werden vom setup_environment.sh Skript generiert.
Keycloak ist als zentrale Authentifizierungsstelle konfiguriert. Die Realm-Konfiguration, Clients und Benutzer werden über das setup_realm.js Skript definiert, die Konfiguration wird über die .env Datei im /scripts/setup/keycloak Verzeichnis angepasst.
office-automationOffice AutomationexternalfalsetruefalsetruefalsetruefalseRS256ES256nonecross-platformnot specifiedpreferred0falseemail, profile, roles, web-originsaddress, phone, offline_access, microprofile-jwtDie folgenden Clients werden über das Skript konfiguriert:
nextcloudNextcloudhttps://cloud.mrx8086.com/apps/sociallogin/custom_oidc/keycloak, https://cloud.mrx8086.com/apps/user_oidc/codepaperlessPaperlesshttps://docs.mrx8086.com/*noderedNode-REDhttps://automate.mrx8086.com/*testadminTESTADMIN_PASSWORD gelesen oder standardmäßig initial123! gesetzt./nextcloud-admins, /nextcloud-userstestuserTESTUSER_PASSWORD gelesen oder standardmäßig initial123! gesetzt./nextcloud-users, /nextcloud-youpitestserviceuserTESTSERVICEUSER_PASSWORD gelesen oder standardmäßig initial123! gesetzt./nextcloud-servicedev): Für lokale Entwicklung werden selbsignierte SSL-Zertifikate verwendet.staging, production): Hier werden SSL-Zertifikate über Let's Encrypt oder eine ähnliche Zertifizierungsstelle verwaltet.[VERSION][ANFORDERUNG][ANFORDERUNG][ANFORDERUNG]setup_realm.js Skriptes wird Node.js benötigtNode.js wird zu einem späteren Zeitpunkt dokumentiert..env Dateien erstellt werden. Hierzu wird das setup_environment.sh verwendet. Dieses Skript sollte nicht in der Produktionsumgebung verwendet werden..env Dateien.setup_realm.js Skriptes wird Node.js und npm benötigtdotenv und axios können mit npm install dotenv axios installiert werden..env Dateien werden im /docker und im /scripts/setup/keycloak Verzeichnis abgelegt.setup_environment.sh Skript aus, um die .env Dateien, die Passwörter zu generieren und die Credentials zu verschlüsseln.docker-compose.yml Datei in das docker/ Verzeichnis..env Datei in das docker/ Verzeichnis.docker-compose up -d im docker/ Verzeichnis aus um Keycloak zu starten.setup_realm.js/scripts/setup/keycloak Verzeichnis.npm install dotenv axios.node setup_realm.js aus. Dies erstellt den Keycloak-Realm, die Clients und die Testbenutzer.
/scripts/setup/keycloak VerzeichnisDie Authentifizierung der Benutzer für alle Dienste wird über Keycloak abgewickelt. Details zu den Authentifizierungsabläufen werden in einem späteren Schritt dokumentiert.
Details zur Wartung und dem Monitoring werden in späteren Schritten dokumentiert.