Romexis Client
Der Dienst romexis-client stellt den Linux-Romexis-Client browserbasiert über dasselbe X11-/noVNC-Runtime-Konzept bereit, das auch der Admin-Container verwendet.
Er wird unabhängig von romexis-admin gebaut: Beide Images verwenden die gemeinsame romexis-gui-runtime, während die Client-Anwendungsdateien aus dem dedizierten Image romexis-client-payload stammen.
Image-Abhängigkeiten
romexis-client-payload:<version>
|
v
romexis-gui-runtime:1-<arch>
|
v
romexis-client:<version>-<arch>
Die Trennung verhindert, dass reine Admin-Änderungen einen Client-Rebuild erzwingen, und hält die große Installer-Extraktion von den architekturspezifischen GUI-Abhängigkeiten getrennt.
Runtime-Komponenten
Die gemeinsame GUI-Runtime stellt bereit:
Java 17
OpenJFX
Xvfb
Openbox
x11vnc
noVNC / websockify
GTK / Mesa / OpenGL dependencies
Chilkat
DxService compatibility library
Das finale Client-Image ergänzt das versionsspezifische Romexis-Client-Payload sowie die Client-Start- und Testskripte.
Zugriff
Der Client wird über noVNC bereitgestellt. Der konkrete Host-Port wird über die Compose-Konfiguration gesteuert.
Für Logs:
docker compose logs -f romexis-client
Shell zur Fehleranalyse öffnen:
docker compose run --rm --entrypoint /bin/bash romexis-client
Build und Tags
Veröffentlichte Versions-Tags folgen demselben Schema wie Server und Admin:
romexis-client:<version>-amd64
romexis-client:<version>-arm64
romexis-client:<version>
romexis-client:latest
Zuerst werden die Architektur-Tags erstellt. Die öffentlichen Multi-Architektur-Tags werden erst veröffentlicht, wenn beide Architekturen erfolgreich abgeschlossen wurden.
Laufzeitverhalten
Der Container startet Xvfb, Openbox, idesk, x11vnc und noVNC. Romexis selbst startet nicht automatisch. Öffne den noVNC-Desktop und doppelklicke auf das Symbol Romexis Client. Dadurch belegt eine ungenutzte Client-Sitzung keinen großen Java-Heap, und der Anwendungsstart bleibt für den Bediener sichtbar.
Der Launcher verhindert über eine Sperrdatei doppelte Romexis-Prozesse und schreibt das Client-Protokoll nach:
/tmp/romexis-client.log
Das optionale Debug-Terminal wird über CLIENT_DEBUG_XTERM gesteuert.
Browser- und Runtime-Konfiguration
Die Standardadresse im Browser lautet:
http://localhost:6081/vnc.html?autoconnect=true
| Variable | Standard | Zweck |
|---|---|---|
CLIENT_NOVNC_PORT |
6081 |
Veröffentlichter noVNC-Hostport |
CLIENT_VNC_PASSWORD |
promax |
Passwort des internen VNC-Servers |
CLIENT_RESOLUTION |
1280x900x24 |
Auflösung des virtuellen Desktops |
CLIENT_JAVA_OPTS |
-Xss500k -Xmx16G |
JVM-Optionen des Clients |
CLIENT_LANGUAGE |
de |
Romexis-Sprache |
CLIENT_COUNTRY |
DE |
Land der Java-Locale |
CLIENT_DEBUG_XTERM |
false |
Aktiviert ein zusätzliches Debug-Terminal |
ROMEXIS_AGENT_OPTIONPANE_PATCH |
true |
Aktiviert die Java-17-Swing-Lifecycle-Korrektur |
Compose veröffentlicht nur noVNC. x11vnc lauscht innerhalb des Containers auf
Port 5900, wird standardmäßig aber nicht als Hostport veröffentlicht.
RMI-Auflösung und Identität
Der Client verwendet den öffentlichen SERVER_RMI_HOSTNAME als Server- und
Zertifikatsidentität. Beim Containerstart wird dieser Hostname auf die interne
Adresse des Compose-Dienstes romexis abgebildet. Der Client-Launcher verbindet
sich auch bei übersetzten öffentlichen Hostports mit den festen Containerports
1099 und 2099.
Bei einer Portübersetzung sollte ein DNS-Name statt einer IP-Adresse verwendet
werden. Eine IP-Adresse kann nicht über /etc/hosts auf den internen Dienst
umgebogen werden.
RomexisOptionPaneUI-Patch
Beim Start des Clients wird der gemeinsame RomexisPropertyAgent geladen. Sein
serverspezifischer RxCr2-Ersatz ist deaktiviert, der OptionPane-Patch dagegen
standardmäßig aktiv.
Unter Java 17 kann ein AWT-Property-Change-Event einen Sekundenbruchteil zu früh
ausgeführt werden, bevor die Planmeca-Klasse m_MessageArea initialisiert hat.
Wenn der ursprüngliche Listener danach die Dialoggröße berechnet, ruft er
getPreferredSize() auf dieser null-Referenz auf. Die resultierende
NullPointerException tritt im AWT-Event-Thread auf und kann die gesamte
Anwendung beenden, statt nur das Pop-up zu zeichnen.
RomexisOptionPaneUIPatch transformiert ausschließlich
romexis_laf.RomexisOptionPaneUI$MyPCListener.propertyChange() und ergänzt
unmittelbar vor dem fehlerhaften Aufruf einen Null-Guard. Das ursprüngliche
Romexis-JAR bleibt auf dem Datenträger unverändert. Der Patch sollte nur für
einen kontrollierten Vergleich deaktiviert werden:
ROMEXIS_AGENT_OPTIONPANE_PATCH=false
Persistente Daten und Healthcheck
Die Client-ProgramData liegen getrennt vom Server- und Admin-Zustand:
${ROMEXIS_DATA_ROOT}/docker/client/programdata
-> /ProgramData/Planmeca/Romexis
Der Healthcheck prüft X-Display, laufenden Romexis.jar-Prozess und noVNC-Port.
Da Romexis bedarfsgesteuert startet, kann der Dienst bis zum Doppelklick auf das
Desktop-Symbol im Zustand starting bleiben oder unhealthy werden.
Betrieb und Fehleranalyse
docker compose up -d romexis-client
docker compose logs -f romexis-client
docker compose exec romexis-client tail -f /tmp/romexis-client.log
Wenn kein Desktop erscheint, prüfe die Meldungen von Xvfb, Openbox, x11vnc und
websockify im Containerprotokoll. Beendet sich Romexis nach dem Aktivieren des
Symbols, prüfe /tmp/romexis-client.log und stelle sicher, dass
SERVER_RMI_HOSTNAME auf den internen Dienst romexis aufgelöst wird.
Romexis Docker Wiki
English
Getting Started
- Project Overview
- Architecture
- Quick Start
- Synology Quick Start
- Use with Docker + WSL in Windows
- Compose Runtime
- Configuration
- Container Images
Runtime Services
- Romexis Admin
- Romexis Client
- mRomexis Web App
- Runtime Layout
- Backup and Restore
- Troubleshooting
- Security
Build System
Database
Migration
Development
Source Documents
Deutsch
Erste Schritte
- Projektübersicht
- Architektur
- Schnellstart
- Synology Quick Start
- Nutzung mit Docker + WSL unter Windows
- Compose-Runtime
- Konfiguration
- Container-Images
Runtime-Dienste
- Romexis Admin
- Romexis Client
- mRomexis Web App
- Runtime-Layout
- Sicherung und Wiederherstellung
- Fehlerbehebung
- Sicherheit
Build-System
Datenbank
Migration
Entwicklung
Quelldokumente
Romexis Docker Project Wiki / Romexis-Docker-Projekt-Wiki
English Home · Deutsche Startseite · English source documents · Deutsche Quelldokumente · Security · Sicherheit
Internal operations and development wiki / Internes Betriebs- und Entwicklungswiki