vimaccOA for Docker

This chapter describes how to set up and run vimaccOA within a Docker container using a Debian 11 base image, installing vimaccOA packages, and optionally enabling a VNC-accessible GUI. Configuration is handled through environment variables and build arguments, with predefined port mappings.

vimaccOA Docker Image

This example shows a Docker-based runtime setup for vimaccOA, the integrated video management system for WinCC OA. It builds a Debian-based image, installs the vimaccOA packages, and can optionally provide a GUI via VNC. See the section "Quick start" below:

Note:
This setup focuses on the container runtime. The vimaccOA software itself is included.

Quick start

# Copy your vimacc .deb package into the build folder. You can find the vimaccOA-<version>-amd64.deb
 in the WinCC OA installation and also on the web page https://www.winccoa.com/downloads/category/wincc-oa-320.html
# Optionally additional WinCC OA packeges (WinCC OA 3.19 for Debian 11 base image).
mkdir -p build/vimacc/deb
cp /path/to/vimacc.deb build/vimaccOA/deb/

# Build the container image
docker compose build

# Run the container
docker compose up -d
Note:
Ensure the .deb package is located at tools/docker/build/vimaccOA/deb/. Otherwise, the image will not include the vimacc software.

The container starts with the default configuration and exposes all required vimacc ports

Features

  • Built on Debian 11.
  • GUI access via VNC on port 5901.
  • Built-in confd-based templating system.
  • Service configuration driven by environment variables.
  • Predefined, clearly structured port mappings.

Build Arguments

Table 1.
Argument Description
PRODUCT (reserved) Always use vimaccOA
GUI Set to true to include the GUI (VNC on port 5901)
Example:
args:
PRODUCT=vimaccOA
GUI=true

️ Environment Variables

Table 2.
Variable Purpose
VIMACC_HOSTNAME Container hostname & internal controller name
VIMACC_CONFIG_CLIENT_SERVERTYPE One of config, proxy, or slave
VIMACC_CONFIG_CLIENT_SERVER1_HOST Primary config server address
VIMACC_CONFIG_CLIENT_SERVER1_PORT Primary config server port
VIMACC_CONFIG_CLIENT_SERVER2_HOST Secondary config server address (optional)
VIMACC_CONFIG_CLIENT_SERVER2_PORT

Secondary config server port

VIMACC_CONFIG_SERVER_PORT Local config instance port
VIMACC_CONFIG_SLAVE_SERVER_PORT Local config-slave port
IMACC_CONFIG_PROXY_SERVER_PORT Local config-proxy port
VIMACC_REPORTCLIENT_SERVERPORT Reporting client port
VIMACC_INTERFACE_OPERATORPORT Operator interface port
VIMACC_INTERFACE_DATACONNECTIONPORT Data channel port
VIMACC_PLAYBACK_OPERATORPORT Playback operator port
VIMACC_PLAYBACK_DATACONNECTIONPORT Playback data channel
VIMACC_PLAYBACK_PROXY_OPERATORPORT Proxy playback operator
VIMACC_PLAYBACK_PROXY_DATACONNECTIONPORT Proxy playback data channel
VIMACC_INTERFACE_PROXY_OPERATORPORT Proxy operator interface
VIMACC_INTERFACE_PROXY_DATACONNECTIONPORT Proxy data connection
VIMACC_STREAMING_OPTIONS_PAYLOADMTUSIZE Stream MTU (e.g. for VPN)
VIMACC_STREAMING_OPTIONS_DEJITTERDELAY Jitter buffer delay
VIMACC_GUI_VIDEORENDERER Renderer backend (e.g. software)
VIMACC_GUI_AUTOLOGOUT_INACTIVITYSECS Auto logout (idle time)
VIMACC_GUI_SHOWALLLIVESTREAMS Show all live streams in GUI

Port Mapping

ports:
 "5901:5901" # GUI (VNC) 
"4225:4225" # VIMACC_REPORTCLIENT_SERVERPORT 
"9360:9360" # VIMACC_CONFIG_PROXY_SERVER_PORT 
"9365:9365" # VIMACC_CONFIG_SLAVE_SERVER_PORT 
"9370:9370" # VIMACC_CONFIG_SERVER_PORT (shared with SERVER1/2) 
"9371:9371" # VIMACC_PLAYBACK_OPERATORPORT 
"9372:9372" # VIMACC_PLAYBACK_DATACONNECTIONPORT 
"9375:9375" # VIMACC_INTERFACE_OPERATORPORT 
"9376:9376" # VIMACC_INTERFACE_DATACONNECTIONPORT 
"9729:9729" # Internal data port (e.g. database sync) 
"9731:9731" # VIMACC_PLAYBACK_PROXY_OPERATORPORT 
"9732:9732" # VIMACC_PLAYBACK_PROXY_DATACONNECTIONPORT 
"9735:9735" # VIMACC_INTERFACE_PROXY_OPERATORPORT 
"9736:9736" # VIMACC_INTERFACE_PROXY_DATACONNECTIONPORT 

Accessing the Container

To open a shell inside a running container:

docker exec -it -u vimacc vimacc-vms bash

If the container was built with GUI=true, you can also access its graphical user interface (GUI) via VNC:

  • VNC port: 5901.
  • Default resolution: 1024×768 (customizable at build time).
  • Connect to localhost:5901 using a VNC client (e.g., TigerVNC, RealVNC).

Authentication is disabled by default. For production environments, enable authentication to secure the VNC session.

docker exec -it -u vimacc vimacc-vms bash

Main start scripts:

  • /usr/local/bin/start.sh – Initializes confd and vimacc.
  • /usr/local/bin/start_vimacc.sh – Starts vimacc processes.
  • /usr/local/bin/start_vnc.sh – Starts the GUI (if enabled).
  • /usr/local/bin/stop_vimacc.sh – Stops vimacc processes.

Built With

  • Debian 11
  • confd v0.16.0
  • openssl 3.0.8
  • xfce4 (GUI environment, optional)

This project is licensed under the MIT License.