Deutsch | English
Romexis Client
The romexis-client service provides browser-based access to the Linux Romexis Client through the same X11/noVNC runtime concept used by the Admin container.
It is built independently from romexis-admin: both images share romexis-gui-runtime, while the Client application files come from the dedicated romexis-client-payload image.
Image Dependencies
romexis-client-payload:<version>
|
v
romexis-gui-runtime:1-<arch>
|
v
romexis-client:<version>-<arch>
The separation prevents Admin-only changes from forcing a Client rebuild and keeps the large installer extraction independent from architecture-specific GUI dependencies.
Runtime Components
The shared GUI runtime provides:
Java 17
OpenJFX
Xvfb
Openbox
x11vnc
noVNC / websockify
GTK / Mesa / OpenGL dependencies
Chilkat
DxService compatibility library
The final Client image adds the version-specific Romexis Client payload and the Client startup/test scripts.
Access
The Client is exposed through noVNC. The concrete host port is controlled by the Compose configuration.
For logs:
docker compose logs -f romexis-client
Open a shell for troubleshooting:
docker compose run --rm --entrypoint /bin/bash romexis-client
Build and Tags
Published version tags follow the same pattern as Server and Admin:
romexis-client:<version>-amd64
romexis-client:<version>-arm64
romexis-client:<version>
romexis-client:latest
The architecture tags are created first. The public multi-architecture tags are published only after both architectures completed successfully.
Runtime Behavior
The container starts Xvfb, Openbox, idesk, x11vnc and noVNC. Romexis itself is not started automatically. Open the noVNC desktop and double-click the Romexis Client icon. This keeps an unused Client session from consuming a large Java heap and makes application startup visible to the operator.
The launcher uses a lock file to prevent duplicate Romexis processes and writes the Client log to:
/tmp/romexis-client.log
The optional debug terminal is controlled by CLIENT_DEBUG_XTERM.
Browser and Runtime Configuration
The default browser URL is:
http://localhost:6081/vnc.html?autoconnect=true
| Variable | Default | Purpose |
|---|---|---|
CLIENT_NOVNC_PORT |
6081 |
Published noVNC host port |
CLIENT_VNC_PASSWORD |
promax |
Password for the internal VNC server |
CLIENT_RESOLUTION |
1280x900x24 |
Virtual desktop resolution |
CLIENT_JAVA_OPTS |
-Xss500k -Xmx16G |
Client JVM options |
CLIENT_LANGUAGE |
de |
Romexis language |
CLIENT_COUNTRY |
DE |
Java locale country |
CLIENT_DEBUG_XTERM |
false |
Enables an additional debug terminal |
ROMEXIS_AGENT_OPTIONPANE_PATCH |
true |
Enables the Java 17 Swing lifecycle fix |
Compose publishes noVNC only. x11vnc listens on port 5900 inside the
container but is not exposed as a host port by default.
RMI Resolution and Identity
The Client uses the public SERVER_RMI_HOSTNAME as the server and certificate
identity. During container startup, that hostname is mapped to the internal
address of the Compose service romexis. The Client launcher connects to the
fixed container ports 1099 and 2099, even when the corresponding public host
ports are translated.
Use a DNS hostname rather than an IP address when port translation is required.
An IP address cannot be remapped to the internal service through /etc/hosts.
RomexisOptionPaneUI Patch
The shared RomexisPropertyAgent is loaded when the Client starts. Its
server-specific RxCr2 replacement is disabled, while the OptionPane patch is
enabled by default.
Under Java 17, an AWT property-change event can run a fraction too early,
before the Planmeca class has initialized m_MessageArea. When the original
listener subsequently calculates the dialog size, it calls
getPreferredSize() on this null reference. The resulting
NullPointerException occurs on the AWT event thread and can terminate the
complete application instead of merely drawing the popup.
RomexisOptionPaneUIPatch transforms only
romexis_laf.RomexisOptionPaneUI$MyPCListener.propertyChange() and inserts a
null guard immediately before the failing call. The original Romexis JAR stays
unchanged on disk. Disable the patch only for a controlled comparison:
ROMEXIS_AGENT_OPTIONPANE_PATCH=false
Persistent Data and Healthcheck
Client ProgramData is stored separately from Server and Admin state:
${ROMEXIS_DATA_ROOT}/docker/client/programdata
-> /ProgramData/Planmeca/Romexis
The healthcheck validates the X display, the running Romexis.jar process and
the noVNC port. Because Romexis starts on demand, the service can remain in
starting or become unhealthy until the desktop icon has been used.
Operations and Troubleshooting
docker compose up -d romexis-client
docker compose logs -f romexis-client
docker compose exec romexis-client tail -f /tmp/romexis-client.log
If no desktop appears, check the Xvfb, Openbox, x11vnc and websockify messages in
the container log. If Romexis exits after the icon is activated, inspect
/tmp/romexis-client.log and confirm that SERVER_RMI_HOSTNAME resolves to the
internal romexis service.
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