Installation & Setup Server

The example server provides the three visible artefacts of the project as containers: this documentation site, the sample insurer (the services) and the sample broker (Installation & Setup Client). Everything sits behind one entry point, one host and one port, so that the documentation can link to the running sample broker and the client reaches the services without any cross-origin configuration.

The sample insurer runs three times, once per example insurer: a running instance is exactly one insurer with its product catalogue and its tariff. This lets a broker be tested against several insurers, as practice demands.

Source: docker-compose.yaml, Dockerfile_Server, Dockerfile_Client and Dockerfile_Docs in the root of the repository; the nginx configuration of the entry point is reference/sample-broker/nginx.conf.

Public example server

An example server runs publicly at https://kapdion.com/omds-ld:

What Address

Documentation

https://kapdion.com/omds-ld/docs/

Sample broker

https://kapdion.com/omds-ld/

Interface Disrupto

https://kapdion.com/omds-ld/insurers/disrupto/api

Interface Anglo-American

https://kapdion.com/omds-ld/insurers/angloamerican/api

Interface Pfefferminzia

https://kapdion.com/omds-ld/insurers/pfefferminzia/api

MCP servers (Streamable HTTP)

https://kapdion.com/omds-ld/insurers/<name>/mcp with disrupto, angloamerican or pfefferminzia (Setup)

Chatbot with the MCP servers

https://chatbot.kapdion.com

The links of the interfaces lead to the product list (listProducts). The business cases are held only in the memory of the instance concerned; a new deployment discards them.

Prerequisites

  • Docker with Docker Compose (Compose V2, command docker compose).

  • Network access while building: Maven and npm dependencies as well as the UI bundle of the documentation are downloaded during the build.

  • Nothing else – neither a JDK nor Node.js nor Maven has to be installed on the server; the images build everything themselves.

Start

docker compose up --build -d      # build the images and start all containers in the background
docker compose logs -f            # follow the logs
docker compose down               # stop and remove all containers

The first build takes a few minutes (Maven build of the sample insurer, Angular build of the sample broker, Antora build of the documentation). The sample insurer keeps its business cases in memory; a restart or rebuild discards them.

Services, Paths and Ports

Service (Compose) Content Reachable at

sample-broker

Sample broker (Angular) with nginx as the entry point

Host port 9081: /omds-ld/ (client), /omds-ld/docs/ (documentation), /omds-ld/insurers/<name>/api/ and /omds-ld/api/ (services)

docs

This documentation (Antora site)

only through the entry point: /omds-ld/docs/

sample-insurer-disrupto

Sample insurer playing Disrupto

/omds-ld/insurers/disrupto/api/ and, as an alias, /omds-ld/api/; directly on host port 9080

sample-insurer-angloamerican

Sample insurer playing Anglo-American

/omds-ld/insurers/angloamerican/api/; directly on host port 9082

sample-insurer-pfefferminzia

Sample insurer playing Pfefferminzia

/omds-ld/insurers/pfefferminzia/api/; directly on host port 9083

The three instances of the sample insurer come from one image; which example insurer an instance plays is set by the environment variable SPRING_PROFILES_ACTIVE (disrupto, angloamerican, pfefferminzia). Inside the container every instance listens on port 9090; from outside they differ by their path at the entry point and by their direct host port.

The path /omds-ld/api/ stays as an alias for Disrupto: for tools, the liveness check of the info page and existing instructions. New clients address the instances through /omds-ld/insurers/<name>/api/; the sample broker knows these paths as the defaults of its insurer list.

A request to http://<host>:9081/ redirects to the start page of the documentation. The sample broker is linked from there.

The direct host ports (9080, 9082, 9083) are meant for tools that address an instance without the entry point, such as validators, self-tests or a sample broker on another host. Every instance allows cross-origin requests to its services. A business case id is only valid at the instance that issued it.

Automatic Deployment

A push to the branch master rebuilds the images and replaces all containers (docker compose up -d --build, Gitea workflow .gitea/workflows/build-deploy.yaml). The runner runs on the example server itself; no further configuration is needed.

Locally Without Containers

For development the sample insurer also runs directly from the repository, one instance per example insurer:

mvn spring-boot:run -pl reference/sample-insurer                                          # Disrupto on :9090
mvn spring-boot:run -pl reference/sample-insurer "-Dspring-boot.run.profiles=angloamerican"   # Anglo-American on :9091
mvn spring-boot:run -pl reference/sample-insurer "-Dspring-boot.run.profiles=pfefferminzia"   # Pfefferminzia on :9092

The services are then available at http://localhost:909x/omds-ld/api; the info page at http://localhost:909x/ names the example insurer of the instance. For most work the Disrupto instance is enough; the development server of the sample broker forwards the three paths /omds-ld/insurers/<name>/api to the ports 9090, 9091 and 9092 (see Installation & Setup Client).