Clone
6
Reference README.de
Patrick Gniza edited this page 2026-08-22 15:46:50 +02:00

Deutsch | English

Romexis Docker

English | Build-Prozess | Entwicklerdokumentation

Containerisierte Bereitstellung von Planmeca Romexis Server unter Linux mit Docker, Datenbank-Backend-Auswahl über Docker Compose, optionalem Migration Service, browserbasiertem Romexis Admin und separatem mRomexis WebApp Container.


Überblick

Dieses Projekt baut und betreibt Planmeca Romexis Dienste in Docker.

Die benötigten Romexis-Programmdateien werden während des Builds aus dem offiziellen Romexis-Windows-Installer extrahiert. Im Repository werden keine Romexis-Binaries gespeichert.

Der Runtime-Stack ist in klar getrennte Dienste aufgeteilt:

  • Romexis Server
    Hauptdienst mit RMI-Ports, Datenbankzugriff, KeyVault-Vorbereitung und Laufzeitkonfiguration.

  • Datenbank-Backend
    Auswahl über DATABASE_BACKEND und COMPOSE_FILE in der .env. Unterstützte Compose-Backends sind aktuell mssql und firebird.

  • Romexis Migration Service
    Optionaler Web/API-Dienst für Restore- und Migrationsabläufe.

  • Romexis Admin
    Browserbasierter Admin-/RomexisConfig-Container über Xvfb, Openbox, xcompmgr, x11vnc und noVNC.

  • mRomexis WebApp
    Separater Tomcat-Container für die mRomexis-Weboberfläche ab Romexis 6.5.3.


Hauptfunktionen

  • Romexis Server in Docker
  • Microsoft SQL Server und Firebird als Compose-Backends
  • Backend-Auswahl über .env
  • Lokale Build-Skripte für reproduzierbare Entwickler-Builds
  • Multiarch-Images für amd64 und arm64
  • Payload-Image für Installer-Extraktion
  • Wiederverwendbares Base-Runtime-Image
  • Server-Image aus Payload- und Base-Image
  • Migration-Service-Image
  • Romexis-Admin-Image mit Browser/noVNC-Zugriff
  • mRomexis-WebApp-Image
  • Branch-spezifische Image-Suffixe über IMAGE_SUFFIX
  • Java PropertyAgent für serverseitige Runtime-Properties
  • Drone CI/CD mit Multiarch-Manifesten

Runtime-Compose-Struktur

Die Laufzeitumgebung ist in eine Basis-Compose-Datei und backend-spezifische Override-Dateien aufgeteilt:

.env.sample
docker-compose.yml
docker-compose.mssql.yml
docker-compose.firebird.yml
scripts/build-local.sh
scripts/build-local.ps1

Die Basisdatei enthält datenbankunabhängige Dienste wie:

romexis
romexis-admin
romexis-app
proxy

Die Backend-Override-Dateien ergänzen oder überschreiben datenbankspezifische Dienste und Umgebungsvariablen:

docker-compose.mssql.yml
docker-compose.firebird.yml

docker-compose.build.yml wird nicht mehr benötigt. Lokale Image-Builds laufen über scripts/build-local.*.


Backend-Auswahl über .env

Der Stack kann mit einem einheitlichen Befehl gestartet werden, wenn das gewünschte Backend in .env gesetzt ist.

MSSQL

DATABASE_BACKEND=mssql
COMPOSE_PATH_SEPARATOR=:
COMPOSE_FILE=docker-compose.yml:docker-compose.${DATABASE_BACKEND}.yml

Start:

docker compose up -d

Firebird

DATABASE_BACKEND=firebird
COMPOSE_PATH_SEPARATOR=:
COMPOSE_FILE=docker-compose.yml:docker-compose.${DATABASE_BACKEND}.yml

Start:

docker compose up -d

In nativen Windows-Shells kann als Compose-Dateitrenner ; statt : erforderlich sein:

COMPOSE_PATH_SEPARATOR=;
COMPOSE_FILE=docker-compose.yml;docker-compose.${DATABASE_BACKEND}.yml

Die effektive Konfiguration prüfen:

docker compose config

Schnellstart

Runtime-Konfiguration erstellen:

cp .env.sample .env

Mindestens anpassen:

DATABASE_BACKEND=mssql
COMPOSE_PATH_SEPARATOR=:
COMPOSE_FILE=docker-compose.yml:docker-compose.${DATABASE_BACKEND}.yml

ROMEXIS_VERSION=6.5.3.444.203
IMAGE_SUFFIX=

Stack starten:

docker compose up -d

Logs anzeigen:

docker compose logs -f

Stack stoppen:

docker compose down

Runtime-Dienste

Romexis Server

Der Dienst romexis startet den eigentlichen Romexis-Backend-Prozess.

Er bereitet vor:

  • Romexis-Server-Properties
  • KeyVault- und ProgramData-Pfade
  • Datenbankverbindung
  • Linux-Datenpfade
  • RMI-Host und RMI-Ports
  • optionale Datenbankinitialisierung

Logs:

docker compose logs -f romexis

Installierte Romexis-Version prüfen:

docker exec -it romexis-server cat /opt/romexis/version

Datenbank-Backend

Das aktive Backend wird über COMPOSE_FILE geladen.

Für MSSQL ergänzt die Override-Datei den SQL-Server-Dienst und konfiguriert Romexis für Microsoft SQL Server.

Für Firebird ergänzt die Override-Datei den Firebird-Dienst und konfiguriert Romexis für Firebird.

Prüfen:

docker compose ps
docker compose logs -f
docker compose config

Migration Service

Der Migration Service unterstützt Romexis-Migrationen und Restore-Workflows.

Er stellt bereit:

  • Web UI und REST API für Migrationsjobs
  • Datenbankbackup-Upload
  • temporären SFTP-Zugang pro Migrationsjob
  • serverseitige manifest.json-Erzeugung
  • Datenbank-Restore
  • Datei-Restore
  • Validierung und Bereinigung
  • koordinierten Romexis-Neustart über eine gemeinsame State-Datei

Die Neustartkoordination erfolgt über:

/data/romexis_images/.romexis_restart_state

Romexis Admin

Der Dienst romexis-admin stellt Romexis Admin / RomexisConfig über noVNC bereit.

Beim Containerstart werden die grafischen Runtime-Komponenten gestartet:

Xvfb -> Openbox -> xcompmgr -> x11vnc -> noVNC

RomexisConfig selbst kann erst beim Aufbau einer VNC/noVNC-Verbindung gestartet werden. Dadurch läuft das Admin-Tool nicht dauerhaft im Hintergrund.

Admin UI öffnen:

http://localhost:6080/vnc.html?host=localhost&port=6080&autoconnect=true

Typische Admin-Variablen:

ADMIN_NOVNC_PORT=6080
ADMIN_VNC_PORT=5900
ADMIN_VNC_PASSWORD=promax
ADMIN_RESOLUTION=1280x900x24
ADMIN_JAVA_OPTS=-Xms256m -Xmx1024m

ADMIN_LANGUAGE=de
DEBUG_XTERM=false
ADMIN_VNC_LIFECYCLE=true
ENABLE_PROPERTY_AGENT=true

ADMIN_LANGUAGE unterstützt:

de
en

Der gleiche Sprachwert wird für den Splashscreen und den language= Parameter von RomexisConfig verwendet.

DEBUG_XTERM=true öffnet zusätzlich ein Debug-Terminal in der VNC-Sitzung.

ADMIN_VNC_LIFECYCLE=true bedeutet:

  • erster VNC/noVNC-Client verbindet sich -> RomexisConfig startet
  • letzter VNC/noVNC-Client trennt sich -> RomexisConfig wird beendet
  • während des Starts wird ein lokalisierter Splashscreen angezeigt

mRomexis WebApp

Der Dienst romexis-app stellt die mRomexis Weboberfläche als eigenständige Tomcat-Anwendung bereit.

Wichtig:

mromexis-html.war existiert erst ab Romexis 6.5.3.

Ältere Payload-Versionen enthalten diese WAR-Datei nicht und können daher kein gültiges mRomexis-WebApp-Image bauen.

Die WebApp wird normalerweise über den Proxy-Dienst veröffentlicht. Der Proxy behandelt auch den /proxy?url=... Endpunkt der Anwendung.

Der Proxy schreibt mRomexis-Proxy-Anfragen auf den internen Romexis-Backend-Dienst um, anstatt dem vom Browser gelieferten Host zu vertrauen. Dadurch müssen keine internen IP-Adressen gepflegt werden und der Endpunkt wird nicht zu einem offenen HTTP-Proxy.

Typische Variable:

MROMEXIS_WEB_PORT=8081

mRomexis WebApp öffnen:

http://localhost:8081/

Container Images

Das Projekt verwendet folgende Image-Familien:

gitea.buchhorster.de/planmeca/romexis-payload:<version>

gitea.buchhorster.de/planmeca/romexis-base-jre:11-amd64
gitea.buchhorster.de/planmeca/romexis-base-jre:11-arm64
gitea.buchhorster.de/planmeca/romexis-base-jre:11

gitea.buchhorster.de/planmeca/romexis-server:<version>-amd64
gitea.buchhorster.de/planmeca/romexis-server:<version>-arm64
gitea.buchhorster.de/planmeca/romexis-server:<version>

gitea.buchhorster.de/planmeca/romexis-migration-service:amd64
gitea.buchhorster.de/planmeca/romexis-migration-service:arm64
gitea.buchhorster.de/planmeca/romexis-migration-service:latest

gitea.buchhorster.de/planmeca/romexis-admin:<version>-amd64
gitea.buchhorster.de/planmeca/romexis-admin:<version>-arm64
gitea.buchhorster.de/planmeca/romexis-admin:<version>
gitea.buchhorster.de/planmeca/romexis-admin:latest

gitea.buchhorster.de/planmeca/romexis-mromexis-app:<version>-amd64
gitea.buchhorster.de/planmeca/romexis-mromexis-app:<version>-arm64
gitea.buchhorster.de/planmeca/romexis-mromexis-app:<version>
gitea.buchhorster.de/planmeca/romexis-mromexis-app:latest

Für Feature-Branches wird IMAGE_SUFFIX an den Tag angehängt:

IMAGE_SUFFIX=-feature-romexis-admin

Beispiel:

gitea.buchhorster.de/planmeca/romexis-server:6.5.3.444.203-feature-romexis-admin

Lokale Image-Builds

Lokale Builds laufen über Skripte.

Linux/macOS:

chmod +x scripts/build-local.sh
./scripts/build-local.sh all

Windows PowerShell:

.\scripts\build-local.ps1 -Targets all

Nur ausgewählte Image-Familien bauen:

./scripts/build-local.sh base server
./scripts/build-local.sh admin mromexis
./scripts/build-local.sh migration

Typische lokale .env Werte:

REGISTRY=gitea.buchhorster.de/planmeca
ROMEXIS_VERSION=6.5.3.444.203
IMAGE_SUFFIX=
TARGETARCH=amd64

ROMEXIS_IMAGE=romexis-server
MIGRATION_IMAGE=romexis-migration-service
ADMINISTRATION_IMAGE=romexis-admin
MROMEXIS_WEBAPP_IMAGE=romexis-mromexis-app

Weitere Build-Details stehen in BUILD.de.md.


Persistente Datenverzeichnisse

sconfig

Gemountet nach:

/opt/romexis/sconfig

Enthält persistente Romexis-Serverkonfiguration.

programdata

Gemountet nach:

/programdata/planmeca/romexis

Entspricht dem Windows-Pfad %ProgramData%\Planmeca\Romexis und enthält KeyVault sowie sicherheitsrelevante Dateien.

romexis_images

Gemountet nach:

/data/romexis_images

Speichert Patientenbilder.

romexis_cache

Gemountet nach:

/data/romexis_cache

Speichert Cache-Daten.

romexis_ergodata

Gemountet nach:

/data/romexis_ergodata

Speichert Ergo- und Zusatzdaten.


Datenbankinitialisierung

Beim ersten Start kann der Server-Entrypoint das konfigurierte Datenbank-Backend initialisieren.

Typische Aufgaben beim ersten Start:

  1. Auf das gewählte Datenbank-Backend warten.
  2. Romexis-Datenbank erstellen, falls sie fehlt.
  3. Romexis-Datenbankbenutzer erstellen, falls er fehlt.
  4. Schema- und Update-Skripte importieren, sofern zutreffend.
  5. Linux-Datenpfade in die Datenbank schreiben.
  6. Romexis Server starten.

Initialisierung deaktivieren:

ROMEXIS_INIT_DB=0

Ausführliche SQL-Ausgabe aktivieren:

DB_CREATE_VERBOSE=true

KeyVault und ProgramData

Romexis erwartet einen Windows-ähnlichen ProgramData-Pfad. Der Entrypoint setzt:

ProgramData=/programdata

Der KeyVault-Pfad wird in romexis_server.properties geschrieben.

Fehlende Schlüsseldateien werden bei Bedarf aus den im Image enthaltenen Defaults initialisiert.


RomexisConfig und Admin-Konfiguration

Der Server-Container führt RomexisConfig beim Start nicht aus.

Administrative Konfiguration erfolgt über den separaten romexis-admin Container. Dadurch bleibt der Server-Container auf den Backend-Prozess fokussiert und wird nicht mit einem grafischen Konfigurationstool vermischt.


Erweiterte Konfiguration

Datenbank-Backend

Die Backend-Auswahl erfolgt auf Compose-Ebene:

DATABASE_BACKEND=mssql
COMPOSE_FILE=docker-compose.yml:docker-compose.${DATABASE_BACKEND}.yml

Die backend-spezifische Compose-Override-Datei setzt anschließend die passenden Romexis-Datenbankvariablen.

RMI Host und Ports

SERVER_RMI_HOSTNAME=192.168.65.177
SERVER_RMI_LOW_PORT=1100
SERVER_RMI_HIGH_PORT=1120

SERVER_RMI_HOSTNAME muss für Romexis-Clients erreichbar sein.

PropertyAgent

Der Java PropertyAgent kann Romexis RxProperties über Umgebungsvariablen setzen.

Syntax:

PROPERTY_AGENT_SET_<RXPROPERTY_NAME>=<Wert>

Beispiel:

PROPERTY_AGENT_SET_KEY_B_KEYVAULT_PWD_LOCATION_SERVER_PROPERTIES=true

Der Server verwendet den Agenten hauptsächlich für Runtime-Properties. Admin aktiviert ihn standardmäßig, und Admin sowie Client verwenden seinen Java-17-RomexisOptionPaneUI-Null-Guard gegen die Swing-Lifecycle- NullPointerException, die durch ein frühes PropertyChange-Event vor der Initialisierung von m_MessageArea entsteht.


Troubleshooting

Effektive Compose-Konfiguration prüfen

docker compose config

Alle Dienste prüfen

docker compose ps
docker compose logs -f

Romexis Server prüfen

docker compose logs -f romexis

Admin Container prüfen

docker compose logs -f romexis-admin

Shell im Admin-Service öffnen

docker compose run --rm --entrypoint /bin/bash romexis-admin

Aufgelöste Romexis-Version prüfen

docker exec -it romexis-server cat /opt/romexis/version

Keystore-Alias-Probleme

Falls Romexis einen fehlenden Server-Zertifikat-Alias meldet:

docker exec -it romexis-server /opt/fix-keystore-alias.sh

Bekannte Einschränkungen

  • Romexis-Binaries sind nicht Bestandteil dieses Repositorys.
  • Das mRomexis-WebApp-Image erfordert Romexis 6.5.3 oder neuer.
  • Romexis Admin wird über eine browserbasierte VNC-Sitzung bereitgestellt, nicht als native Desktop-Anwendung.
  • Multiarch-Images werden gebaut und veröffentlicht; die funktionale Validierung hängt von Plattform und verfügbaren Romexis-Komponenten ab.
  • Vor produktivem Einsatz sind Backups, Lizenzprüfung und umgebungsspezifische Tests erforderlich.

Lizenz

Romexis

Planmeca Romexis ist proprietäre Software.

Dieses Repository enthält keine Romexis-Programmdateien. Der offizielle Installer wird während des Builds anhand von romexis-payload/romexis-versions.env heruntergeladen.

Chilkat

Dieses Projekt nutzt die von Romexis benötigte Chilkat-Bibliothek. Sie wird während des Builds passend zur Zielarchitektur heruntergeladen.


Haftungsausschluss

Dieses Projekt steht in keiner Verbindung zu Planmeca Oy.

Die Nutzung erfolgt auf eigene Verantwortung.

Vor dem produktiven Einsatz werden vollständige Backups und Tests dringend empfohlen.