Skip to main content

Installation

This page brings the complete stack up on one machine: voraus.core, voraus Parameter, voraus 3D Visu, and voraus Robot UI, each as a container.

Create the Compose File​

Create an empty directory and save the following file in it as docker-compose.yml. It is the reference configuration with every widget enabled. The comments say what to adjust, and Configuration lists the environment variables of voraus-robot-ui.

docker-compose.yml
services:
# CodeMeter runtime. All voraus services are licensed through it. It expects the license server
# on the Docker host; if it runs elsewhere, set CODEMETER_LICENSE_SERVER, for example in a .env file.
codemeter:
hostname: codemeter
image: docker.io/wibusystems/codemeter:9.10
environment:
CM_REMOTE_SERVER: ${CODEMETER_LICENSE_SERVER:-host.docker.internal}
extra_hosts:
- host.docker.internal:host-gateway

# voraus Robot Control and Error Handler.
voraus-core:
image: voraus.jfrog.io/docker/voraus-core:2.27.0
hostname: voraus-core
environment:
CODEMETER_HOST: codemeter
depends_on:
codemeter:
condition: service_healthy

# Stores the poses of the Pose Management widget. Optional: to run without it, remove this
# service and its depends_on entry below, and set PARAMETER_SERVER_ENABLED to "false".
voraus-parameter:
image: voraus.jfrog.io/docker/voraus-parameter:2.0.1
hostname: voraus-parameter
volumes:
- ./data:/data
environment:
CODEMETER_HOST: codemeter
depends_on:
codemeter:
condition: service_healthy

# Renders the robot for the 3D Visualization widget. Optional: to run without it, remove this
# service and its depends_on entry below, and set VORAUS_3D_VISU_ENABLED to "false".
voraus-3d-visu:
image: voraus.jfrog.io/docker/voraus-3d-visu:3.1.3
hostname: voraus-3d-visu
ports:
- 8077:80
environment:
CODEMETER_HOST: codemeter
# Hosts voraus 3D Visu may load models from. The robot model comes from voraus.core.
V3DVISU_ALLOWED_HOSTS: voraus-core
# Initial camera view.
V3DVISU_CAMERA__POSITION: "[8.5, 6.3, 4.2]"
V3DVISU_ORBITCONTROLS__INITIAL_TARGET: "[0, 0, 0.5]"
# The address under which the browser opens voraus Robot UI.
V3DVISU_POST_MESSAGE_ALLOWED_ORIGINS: '["http://localhost:3001"]'
depends_on:
codemeter:
condition: service_healthy

voraus-robot-ui:
image: voraus.jfrog.io/docker/voraus-robot-ui:1.3.0
# The UI exits when a service it needs is not reachable at startup, see Troubleshooting.
restart: on-failure
ports:
- 3001:80
environment:
CODEMETER_HOST: codemeter
# voraus Robot Control and Error Handler. With ERROR_HANDLER_ENABLED "false", error resets
# go to voraus Robot Control and OPCUA_ERROR_URL is not needed.
OPCUA_URL: opc.tcp://voraus-core:48401/
OPCUA_ERROR_URL: opc.tcp://voraus-core:48404/
ERROR_HANDLER_ENABLED: "true"
# Pose Management, needs the voraus-parameter service.
PARAMETER_SERVER_ENABLED: "true"
PARAMETER_SERVER_URL: http://voraus-parameter:80
# 3D Visualization, needs the voraus-3d-visu service. Without it, the three URLs below are
# not needed. VORAUS_3D_VISU_SYNC_ENABLED "false" keeps the widget but stops voraus Robot UI
# from adding the robot, the jogging arrows and the pose previews to the scene.
VORAUS_3D_VISU_ENABLED: "true"
VORAUS_3D_VISU_SYNC_ENABLED: "true"
VORAUS_3D_VISU_BROWSER_URL: http://localhost:8077 # as reachable by the browser
VORAUS_3D_VISU_SYNC_URL: http://voraus-3d-visu:80 # as reachable by this container
VORAUS_CORE_URL: http://voraus-core:80 # robot configuration and model for voraus 3D Visu
depends_on:
voraus-core:
condition: service_healthy
voraus-parameter:
condition: service_healthy
voraus-3d-visu:
condition: service_healthy
codemeter:
condition: service_healthy

Connecting voraus.core to your robot is configured on the voraus-core service. See the voraus.core documentation for that. voraus Parameter keeps the poses in ./data next to the Compose file. To back them up, stop the stack and copy that directory.

Start the Stack and Open voraus Robot UI​

docker compose up -d

The first start pulls the images. voraus Robot UI waits until voraus.core, voraus Parameter, and voraus 3D Visu report healthy, so it is the last container to come up. Then open http://localhost:3001. If the page shows No Connection, see Troubleshooting. Otherwise continue with the User Guide.

Adapting the Stack​

The dashboard rearranges its panels to the widgets that are enabled.

  • Without voraus Parameter: Remove the voraus-parameter service and its depends_on entry, and set PARAMETER_SERVER_ENABLED to "false". The Pose Management widget disappears.
  • Without voraus 3D Visu: Remove the voraus-3d-visu service and its depends_on entry, and set VORAUS_3D_VISU_ENABLED to "false". The 3D Visualization widget disappears. To keep the widget but leave the scene to another application, set VORAUS_3D_VISU_SYNC_ENABLED to "false" instead; voraus Robot UI then adds nothing to the scene.

Access from Other Computers​

Two values in the reference file contain localhost: VORAUS_3D_VISU_BROWSER_URL on voraus-robot-ui and V3DVISU_POST_MESSAGE_ALLOWED_ORIGINS on voraus-3d-visu. That works for a browser on the Docker host only. For other computers, replace localhost in both values with the name or address under which they reach the Docker host. All other URLs are used inside the Docker network and stay as they are.

Behind a Reverse Proxy​

A reverse proxy can serve voraus Robot UI and voraus 3D Visu under one host name, each under its own path prefix, for example http://robot-host.example.com/robot-ui and http://robot-host.example.com/3d-visu. Both services need the same two things from the proxy:

  1. Strip the prefix before forwarding, so the service receives / instead of /robot-ui/.
  2. Send the stripped prefix in the X-Forwarded-Prefix header. voraus Robot UI puts it into the base path of the web application, so the page loads its files and opens its WebSocket under the prefix. The proxy has to pass WebSocket connections through.

Then adjust the two browser-facing values from the previous section. VORAUS_3D_VISU_BROWSER_URL is the public address of voraus 3D Visu, http://robot-host.example.com/3d-visu. V3DVISU_POST_MESSAGE_ALLOWED_ORIGINS is the origin of voraus Robot UI, which has no path, http://robot-host.example.com. With TLS at the proxy, both start with https://. The ports 3001 and 8077 can then be removed from the Compose file. The voraus 3D Visu documentation shows a complete Traefik setup for voraus 3D Visu; voraus Robot UI takes the same labels with its own prefix.