Installation
This page brings the complete stack up on one machine: voraus.core, the parameter server, the 3D visualization and voraus Robot UI, each as a container.
1. 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.
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
# 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:1.0.0
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 the visualization 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.1.1
# 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
# Robot Control and Error Handler. With ERROR_HANDLER_ENABLED "false", error resets go to
# 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 the visualization
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. The parameter server keeps the poses in ./data next to the Compose file. To
back them up, stop the stack and copy that directory.
2. Start the stack and open the user interface
docker compose up -d
The first start pulls the images. voraus Robot UI waits until voraus.core, the parameter server and the visualization 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 the parameter server. Remove the
voraus-parameterservice and itsdepends_onentry, and setPARAMETER_SERVER_ENABLEDto"false". The Pose Management widget disappears. - Without the 3D visualization. Remove the
voraus-3d-visuservice and itsdepends_onentry, and setVORAUS_3D_VISU_ENABLEDto"false". The 3D Visualization widget disappears. To keep the widget but leave the scene to another application, setVORAUS_3D_VISU_SYNC_ENABLEDto"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 the user interface and the 3D visualization 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:
- Strip the prefix before forwarding, so the service receives
/instead of/robot-ui/. - Send the stripped prefix in the
X-Forwarded-Prefixheader. 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 the visualization, http://robot-host.example.com/3d-visu.
V3DVISU_POST_MESSAGE_ALLOWED_ORIGINS is the origin of the user interface, 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 the visualization; voraus Robot UI takes the same labels with
its own prefix.