Setup der B2B-Admin-UI in Docker

Funktionalität

Diese UI enthält:

  • Customizing Administration
  • Kommunikationsbeziehungen (AS2)
  • Lock Tabelle
  • Queue Tabelle
  • Systemfehler

Architektur

Dieses Modul kommuniziert mit einer B2B im Tomcat.

Sowohl UI als auch Tomcat müssen über Keycloak abgesichert sein.

Es ist möglich & üblich, genau den gleichen Tomcat zu nutzen, der zusammen mit der B2B-UI eingerichtet wurde. Deshalb wird auf die Konfiguration des Tomcats auf dieser Seite nicht mehr im Detail eingegangen.

Voraussetzungen

  • Docker einsatzbereit
  • Keycloak installiert
  • Remote B2B-Datenbank installiert

Installation

Die Installation verläuft völlig analog zur B2B-UI.

Docker-Compose

Das Setup der hier beschriebenen Umgebung basiert auf einem docker-compose file. Diese Konfiguration definiert einen Container.

Die docker-compose Umgebung besteht letztlich aus einer Verzeichnisstruktur, die die einzelnen im Folgenden beschriebenen Dateien enthält. Die Verzeichnisstruktur stellt sich wie folgt dar:

| base/
  |- admin-ui/
  |  |- keycloak.json
  |- b2b-tomcat/
  |  |- ...
  |- docker-compose.yml
  |- .env
  |- system.json

Diese Dokumentation basiert auf der folgenden docker-compose.yml:

version: '3.7'
services:
  b2b:
    ...
  admin-ui:
    image: ${NEXUS}/admin-ui:2020-11-16
    restart: always
    ports:
      - 1184:8080
    environment:
      - TZ: ${TIME_ZONE}
    volumes:
      - ./admin-ui/keycloak.json:/usr/share/nginx/html/B2B-Admin-UI/assets/config/keycloak.json
      - ./system.json:/usr/share/nginx/html/B2B-Admin-UI/assets/config/system.json
      - ./admin-ui/logs/host.access.log:/var/log/nginx/host.access.log
      - ./admin-ui/logs/host.error.log:/var/log/nginx/host.error.log
    depends_on:
      - b2b

Achten Sie beim image darauf, eine aktuelle Version gemäß unserer Kompatibilitätsübersicht anzugeben.

Die oben aufgeführte docker-compose.yml beinhaltet verschiedene Variablen “${Variable}”. Diese Variablen sind in der Datei .env enthalten.

NEXUS=docker-nob-erf.next-level-apps.com
TIME_ZONE=Europe/Berlin

Bei der b2b-tomcat Konfiguration handelt es sich exakt um die gleiche Konfiguration wie bei der B2B-UI.

./admin-ui/keycloak.json

Diese Datei konfiguriert die Anbindung der B2B-Admin-UI-Instanz an den keycloak. Folgende Konfiguration wurde für diese Dokumentation verwendet:

{
  "realm": "[realm]",
  "auth-server-url": "http://[dockerhost]:8080/auth",
  "ssl-required": "none",
  "resource": "admin-functional-ui",
  "public-client": true,
  "confidential-port": 0
}

Die Datei sollte direkt aus der Keycloak Admin-UI exportiert werden. In Keycloak muss dafür ein passender Client angelegt werden. Dies wird später genauer beschrieben.

./admin-ui/nginx.conf

Das Image bringt bereits eine Default nginx.conf mit. Es ist nicht nötig, diese zu überschreiben. Die folgende Anleitung ist somit optional.

Diese Datei konfiguriert den Webserver für den Container der B2B-Admin-UI-Instanz. Folgende Konfiguration wurde für diese Dokumentation verwendet:

worker_processes        1;
pid /tmp/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include                     mime.types;
    default_type                application/octet-stream;
    error_log                   host.error.log;
    sendfile                    on;
    keepalive_timeout           65;
    server {
        listen                  8080;
        server_name             localhost;
        client_max_body_size    100M;
        absolute_redirect       off;
        access_log              host.access.log;
        location /B2B-Admin-UI/ {
            alias       /usr/share/nginx/html/B2B-Admin-UI/;
            try_files   $uri$args $uri$args/ /B2B-Admin-UI/index.html;
        }
        location /B2B-Admin-UI/api/ {
                proxy_pass          http://b2b:8080/b2bbp-engine/api/;
                proxy_http_version  1.1;
                proxy_set_header    Upgrade $http_upgrade;
                proxy_set_header    Connection "upgrade";
                proxy_set_header    Host $host;
                proxy_set_header    X-Real-IP $remote_addr;
                proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header    X-Forwarded-Proto $scheme;
                proxy_cache_bypass  $http_upgrade;
        }
		location /B2B-Admin-UI/api/revisionmanager/ {
			    proxy_pass          http://revision:8080/revisionmanager/;
			    proxy_http_version  1.1;
			    proxy_set_header    Upgrade $http_upgrade;
			    proxy_set_header    Connection "upgrade";
				proxy_set_header    Host $host;
				proxy_set_header    X-Real-IP $remote_addr;
				proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
				proxy_set_header    X-Forwarded-Proto $scheme;
		        proxy_cache_bypass  $http_upgrade;
        }
        location /B2B-Admin-UI/api/b2b-user-messages/system-messages {
	            proxy_pass          http://notification:8080/system-messages;
	            proxy_http_version  1.1;
	            proxy_set_header    Upgrade $http_upgrade;
	            proxy_set_header    Connection "upgrade";
	            proxy_set_header    Host $host;
	            proxy_set_header    X-Real-IP $remote_addr;
	            proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
	            proxy_set_header    X-Forwarded-Proto $scheme;
	            proxy_cache_bypass  $http_upgrade;
        }
        location /B2B-Admin-UI/portalConfig/ {
            proxy_pass              http://portal-ui:8080/B2B-Portal-UI/assets/config/portal-config.json;
        }
        error_page      500 502 503 504  /50x.html;
        location = /50x.html {
            root        html/B2B-Admin-UI;
        }
    }
}

Bitte folgen Sie unseren Konventionen für Servicenamen (aus denen sich dann die Hostnamen ergeben).

In diesem Beispiel wurden auch die Zugänge zu den optionalen Features Portal-UI, RevisionInfo & SystemMessages konfiguriert.

./system.json

Die Datei system.json kann als globale Konfiguration genutzt werden. Nach Möglichkeit sollte die gleiche Datei für alle Frontends verwendet werden.

In ihr können der angezeigte Systemname sowie die angezeigte Hintergrundfarbe festgelegt werden.

Ferner kann durch sie das Feature UserMessages aktiviert werden.

{ 
  "systemName": "B2B Dokusystem", 
  "backgroundColor": "#008ECC", 
  "activateUserMessages": true 
} 

Logging

Das access_log und das error_log werden in der nginx.conf definiert.

Damit das Log nicht mit einem weggeworfenen Container verloren geht, kann man das Log auch von außen in den Container mounten. Hierfür sind die Log-Files in den docker-compose/volumes mit anzugeben. Für diese Lösung müssen die Dateien vorher bereits auf dem Docker-Host angelegt und mit geeigneten Berechtigungen versehen sein.

Start docker container (Admin-UI, B2B)

Mit dem folgenden Kommando können die Container im Docker gestartet werden:

:opt/docker/b2b/> docker-compose up -d

Mit folgendem Kommando können die Container im Docker gestoppt werden:

:opt/docker/b2b/> docker-compose stop

Keycloak Konfiguration

Keycloak Client Configuration

Für die Admin-UI muss ein Keycloak Client angelegt werden.

Öffnen des Formulars zum Erstellen eines neuen Clients

Die ClientId kann von Ihnen selbst gewählt werden, z.B. b2b-admin-ui.

Die RootURL entspricht der externen Adresse des Frontends.

Das Client Protocol bleibt auf openid-connect gestellt.

Es ist der Standardflow zu nutzen (standardmäßig aktiv).

Der Access Type ist public.

Als Login-Theme kann das nli Thema gewählt werden.

Keycloak Rollen & Attribute

Die Konfiguration der benötigten Rollen und Attribute wird hier beschrieben.

View Me   Edit Me