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.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.Keycloak ist als zentrale Authentifizierungsstelle konfiguriert. Die Realm-Konfiguration, Clients und Benutzer werden über das setup_realm.js Skript definiert.
Die Keycloak Konfigurationen sind in einer eigenen Sektion beschrieben. Diese werden mit dem setup_realm.js Script Konfiguriert.
Die Umgebungsvariablen für das Script sind in einer .env Datei abgelegt.
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/*paperlessPaperlesshttps://docs.mrx8086.com/*noderedNode-REDhttps://automate.mrx8086.com/*testadminTESTADMIN_PASSWORD gelesen oder standardmäßig initial123! gesetzt./AdministratorstestuserTESTUSER_PASSWORD gelesen oder standardmäßig initial123! gesetzt./Usersdev): Für lokale Entwicklung werden selbsignierte SSL-Zertifikate verwendet.staging, production): Hier werden SSL-Zertifikate über Let's Encrypt oder eine ähnliche Zertifizierungsstelle verwaltet.Die folgenden Umgebungsvariablen werden für die Konfiguration des Projekts verwendet:
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 (default initial123!).TESTUSER_PASSWORD: Das Passwort für den Testuser User (default initial123!).[VERSION][ANFORDERUNG][ANFORDERUNG][ANFORDERUNG]setup_realm.js Skriptes wird Node.js benötigtNode.js wird zu einem späteren Zeitpunkt dokumentiert.docker-compose.yml Datei in das Docker Verzeichnis.env Datei in das Docker Verzeichnis und passe diese an.docker-compose up -d im Docker Verzeichnis aus um Keycloak zu starten.setup_realm.jssetup_realm.js Datei in das /scripts/install Verzeichnis.npm install dotenv axios.node /scripts/install/setup_realm.js aus. Dies erstellt den Keycloak-Realm, die Clients und die Testbenutzer.Die 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.