.. _deploy:

Deploy
=======

*ogamma* Visual Logger for OPC can be deployed either as a Docker container, or as a Windows application, or as a Linux (Ubuntu 18.04) application. Also it is possible to install it as Azure Iot Edge Module.

.. tip:: After deployment, web based configuration GUI will be available at the address `http://localhost:4880 <http://localhost:4880>`__. To login, use default user name ``admin`` and password ``password``. If you are using *ogamma* Visual Logger for OPC in production, reset password immedately using menu ``Account/Change Password``.

.. note:: Web GUI of the *ogamma* Visual Logger for OPC is optimized and tested for screen resolution 1920x1080 in full size mode, in Google Chrome and Microsoft Edge. GUI layout might be disrupted in other combinations of browse and screen resolution. If this becomes blocking issue for you, please report it at https://github.com/onewayautomation/ogamma-logger/issues.

.. _setup-using-docker:

Setup using Docker
------------------

The easiest and guaranteed to work in minutes way to start using *ogamma* Visual Logger for OPC is running it as a Docker container. If you never tried to use Docker before, we encourage you to try to install and use this powerful technology. You can find instructions about how to install it at its `home page <https://www.docker.com/products/docker-desktop>`__.

Following below console commands assume that you use bash terminal in Linux hosts, and `PowerShell <https://docs.microsoft.com/en-ca/powershell/>`__ in Windows hosts. If you don't want to use PowerShell in Windows, it is possible to use regular windows command console too, but in this case some commands will need to be modified. For example, instead of using PowerShell variable for current folder ``${pwd}``,  absolute path value should be used.

Pulling docker image of *ogamma* Visual Logger for OPC and running it.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Linux image of *ogamma* Visual Logger for OPC is hosted at `Docker Hub <https://hub.docker.com/r/ogamma/logger>`__ and can be pulled by command:

.. code-block:: console

  docker pull ogamma/logger

.. note:: For Raspberry Pi the container image name is ``ogamma/logger-pi64``.


Then you can start the container by command:

.. code-block:: console

  docker run --name ogamma-logger --hostname ogamma-logger -v ${pwd}/data:/home/ogamma/logger/data -e OVL_USER_ID='admin' -e OVL_USER_PASSWORD='password' -p 4880:4880 ogamma/logger

.. warning:: In production setup define custom values for default login credentials using environment variables ``OVL_USER_ID`` and ``OVL_USER_PASSWORD``!

Using docker-compose.
^^^^^^^^^^^^^^^^^^^^^ 

*ogamma* Visual Logger for OPC can run as stand-alone application without other dependencies, if SQLite type databases are used to store configuration settings and to store time-series data. But very often PostgreSQL is used as a configuiration database, and time-series data can be stored in other databases, like TimescaleDB, InfluxDB or Apache Kafka. While these third-party dependencies can be installed and run independently, you can also use docker-compose files from product's `GitHub repository <https://github.com/onewayautomation/ogamma-logger>`__, to install them and run in just a few minutes.

.. warning:: Note that docker-compose files are not intended for production use as is. At least default user credentials must be modified to more secure values.

Easiest way to get all example docker-compose files is to clone the repository to local folder by running command:

.. code-block:: console

  git clone https://github.com/onewayautomation/ogamma-logger

.. tip:: If you don't have ``git`` installed, you can download it `here <https://git-scm.com/downloads>`__.

As a result, repository files will be pulled into sub-folder ``ogamma-logger``. In sub-folder ``docker`` of this folder you will find multiple files with extension ``.yml``. Each of them intended to start specific application in its own Docker container. You can start desired set of containers by passing names of these files in docker-compose command.

For example, if you want to use TimescaleDB to store time-series data, and also use Grafana to visualize data, you can start them together with *ogamma* Visual Logger for OPC by running following below command from working directory ``./ogamma-logger/docker``

.. code-block:: console

  docker-compose -f docker-compose.yml -f portainer.yml -f timescaledb.yml -f grafana.yml up -d

Short description of used files follows below.

* ``docker-compose.yml`` describes container service for *ogamma* Visual Logger for OPC,
* ``portainer.yml`` starts `Portainer <https://www.portainer.io/portainer-ce/>`__, web based configuration and management tool for docker containers. With it, you can easily see list of running containers, stop, start and restart them, upgrade or re-create them, view usage statistics, logs, connect to them via terminal, and lot of other features are available.
* ``timescaledb.yml`` starts instance of TimescaleDB database server, where you can create a database to store time-series data, and also it can used as regular PostgreSQL database to store configuration data.

* ``grafana.yml`` - starts instance of Grafana version 8.0.3.


As a result, Docker images will be downloaded from Docker Hub, containers from those images will start, and components of *ogamma* Visual Logger for OPC and database with web based management tool will be available at the following below URLs:

* `http://localhost:4880 <http://localhost:4880>`__ : *ogamma* Visual Logger for OPC configuration GUI, where you can setup connections to OPC UA servers and define what variables to collect data for. 
  Default credentials are ``admin`` / ``password``.

  .. raw:: html
    
    <br/>

* `http://localhost:9000 <http://localhost:9000>`__ : Portainer GUI.

  .. raw:: html
    
    <br/>

* ``localhost:5432`` - PostgreSQL database with TimescaleDB extension;
  
  Default credentials are: ``ogamma/ogamma``.

  .. raw:: html
    
    <br/>

* `http://localhost:4888 <http://localhost:4888>`__: PgAdmin web GUI, using which you can analyze historical data utilizing standard SQL queries.

  Default credentials are ``admin@ogamma.io/admin``.

  .. raw:: html
    
    <br/>

* `http://localhost:3000 <http://localhost:3000>`__: Grafana web GUI, using which you can visualize data from OPC UA Servers;

  .. raw:: html
    
    <br/>

To stop all containers, use the command:

.. code-block:: console

  docker-compose -f docker-compose.yml -f portainer.yml -f timescaledb.yml -f grafana.yml down

In case if you want to use other database to store time-series data, add respective yml file.

.. tip:: If you choose to use PostgreSQL to store configuration settings, you can keep the file ``timescaledb.yml`` in the command arguments and use its corresponding service to store configuration database.


* ``confluent.yml`` - Apache Kafka distribution from `Confluent <https://www.confluent.io/>`__, bundled with bunch of other services, as described at `Confluent Platform Quick Start page <https://docs.confluent.io/current/quickstart/ce-docker-quickstart.html>`__.

  Once services start, Confluent Control Center will be available at http://localhost:9021

  .. raw:: html
    
    <br/>

* ``influxdb.yml`` - InfluxDB version 1.8.6, will be available at ``localhost:8084``, and management web application for InfluxDB 1.x, will be available at `http://localhost:8085 <http://localhost:8085>`__. For details on how to use it refer to project home page at https://timeseriesadmin.github.io/. No credentials are required to access the page.

  .. raw:: html
    
    <br/>

* ``influxdb2.x.yml`` - InfluxDB version 2.0.7, web GUI will be available from the host machine at `http://localhost:8086 <http://localhost:8086>`__. To configure connection from *ogamma* Visual Logger for OPC which is running within Docker container to this instance of the Influx DB set Host field to ``influxdb2x`` and ``Port`` to ``8086``.

  You will need to initialize InfluxDB using its web interface at port 8086.
  
   .. note:: InfluxDB 2 web GUI also provides tools to run queries, build dashboards with graphs, configure monitoring of data for specified conditions and generating alerts, etc. Refer to its documentation for more details at https://v2.docs.influxdata.com/v2.0/.

* ``mssql.yml`` - Micsofot SQL database server.

* ``mysql.yml`` - MySQL database server.

* ``mqtt.yml`` - MQTT Broker Eclipse Mosquitto.

* ``opcplc.yml`` - OPC UA simulation server (https://github.com/Azure-Samples/iot-edge-opc-plc). To connect to it from instance of the *ogamma* Visual Logger for OPC running as a Docker container you can use OPC UA enpoint URL ``opc.tcp//opcplc:50000``.

  .. note:: From the host machine it will not be available using ``opcplc`` as host name though, which might cause problems if you want to connect to it using OPC UA client running in your host PC. Refer to the Docker documentation on how to make it accessible from the host machine using host name.

.. raw:: html
   
  <br/>

* ``ovl-2.yml`` - example of running second instance of the *ogamma* Visual Logger for OPC.

.. raw:: html
   
  <br/>

Running all supported databases and demo OPC UA Server in Docker
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

To start all suported databases and demo OPC UA Server in containers, run this command:

.. code-block:: console

  docker-compose -f docker-compose.yml -f portainer.yml -f timescaledb.yml -f grafana.yml -f confluent.yml -f influxdb.yml -f influxdb2.x.yml -f mssql.yml -f mysql.yml -f mqtt.yml -f opcplc.yml up -d

To stop all containers run this command:

.. code-block:: console

  docker-compose -f docker-compose.yml -f portainer.yml -f timescaledb.yml -f grafana.yml -f confluent.yml -f influxdb.yml -f influxdb2.x.yml -f mssql.yml -f mysql.yml -f mqtt.yml -f opcplc.yml down


.. note:: You can also stop or start any one container independently, by passing corresponding .yml file name.

Breaking change in Docker container version 4.2.0
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

In versions pioir to version 4.2.0 the Visual Logger Docker container was running under the ``root`` user. Starting with version 4.2.0 it runs under user ``ogamma``. As a result, data files of the older version volume that had a root user as an owner, not accessible in the new version anymore.

To fix this permission issue, within the container, run this command under the ``root`` user: ``chown -R ogamma:ogamma /home/ogamma/logger``.
 
For that, you can pull the Git repository ``https://github.com/onewayautomation/ogamma-logger`` and use the helper configuration file ``docker-compose-migrate-to-4.2.0.yml``, as descried here:   
https://github.com/onewayautomation/ogamma-logger#breaking-change-in-docker-container-version-420


Setup in Windows using the installer
-----------------------------------------

Starting with version 4.2.0, *ogamma* Visual Logger for OPC can be installed as Windows Service using this executable distribution file: https://onewayautomation.com/opcua-binaries/ogamma-logger-windows-installer-4.2.1.exe

It will install required pre-requisites, set basic configuration options, install *ogamma* Visual Logger for OPC as Windows service ``One-Way Automation Visual Logger``, and start this service. Optionally you can also install the service ``One-Way Automation HA Node Manager``, used to run the *ogamma* Visual Logger for OPC instance as a node of the High Available Cluster. For more technical details please contact support@onewayautomation.com.

The application runtime files are installed under the folder ``C:\Program Files\opcfy\ovl``. Default application data files location is ``C:\ProgramData\opcfy\ovl``.

.. tip::  If you would like to migrate from older installations (or Portable Setup), all you need is to set the data folder location to the folder where the older version of the application was installed. Alternatively, you can copy/move folder ``data`` from the old installation folder to the new location ``C:\ProgramData\opcfy\ovl``. 

.. tip:: The installer uses ``nssm`` to run the application as a service. If there is a need to view or change after installation some configuration options for the *ogamma* Visual Logger for OPC's main service such as environment variables, run the command:

  ```
  "C:\Program Files\opcfy\ovl\nssm.exe" edit "One-Way Automation Visual Logger"
  ```
 
  To edit settings of the High availability service, run the command: 

  ```
  "C:\Program Files\opcfy\ovl\nssm.exe" edit "One-Way Automation HA Node Manager"
  ```

Portable Setup in Windows
------------------------------

1. Download portable distribution package
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

  * Download zip file from https://onewayautomation.com/opcua-binaries/ogamma-logger-windows-4.2.2.zip

  * Unzip.

2. Install required prerequisites
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

a). Install Visual C++ 2019 redistributables (64 bit version)
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

  Can be installed using installation file ``vc-redist.x64.exe`` included into the distribution package.
  
  Latest downloads are available at https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170#latest-supported-redistributable-version

b). Install Microsoft ODBC Driver 17 for SQL Server.
""""""""""""""""""""""""""""""""""""""""""""""""""""

If not installed already, install ``Microsoft ODBC Driver 17 for SQL Server`` from file ``msodbcsql.msi`` included into distribution package.

.. note:: This driver must be installed even if you are not using MS SQL Server as a time-series database.

c). Install / Configure database to store time-series data.
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

.. note:: This step can be skipped if you plan to read real time and historical data from OPC UA servers directly, without storing values in database, or plan to store historical data in the SQLite database, which does not require installation.

For information on supported databases and how to install/configure them, refer to the section :ref:`tsdb`.

3. Start *ogamma* Visual Logger for OPC.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. warning:: Before starting *ogamma* Visual Logger for OPC first time in production setup, define custom values for default login credentials using environment variables ``OVL_USER_ID`` and ``OVL_USER_PASSWORD``! Otherwise, default credentials will be set to ``admin`` / ``password``. After the very first login, the applicatoin will require changing of the credentilas from these  default values.

Open Windows command line console, navigate to the folder where *ogamma* Visual Logger for OPC files are unzipped, and start the application **ogamma-logger.exe**.

At the very first start, it might run some initialization steps in the database (for example, if PostgreSQL is used, it will create required tables in the PostgreSQL database). Before connecting to the frist OPC UA server (after adding it from GUI and attempt to browse), it will also generate OPC UA Application Instance Certificate, which might take some time.

The application has built-in web server to support web based GUI to configure it, and it will listen to the http port of that configuration endpoint (by default, port 4880). Windows operating system might pop-up dialog window asking for permission to listen on the port, you will need to allow it. 

.. tip:: Configuration GUI will be aavailable to access from web browser at address ``http://localhost:4880``, default user name and password are ``admin`` and ``password``.

4. Running *ogamma* Visual Logger for OPC as a Windows service.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

  For applicatoin versions 4.2.0 or later, to install the applicatoin as a Windows service, use Windows Installer as described in the previous section.

  For the older versions, you can use the Service Manager available to download and use for free `here <https://nssm.cc/download>`__.

5. Install Grafana
^^^^^^^^^^^^^^^^^^

.. note:: This step can be skipped if you do not want visualize data.

To install Grafana, follow instructions at `Download Grafana web page <https://grafana.com/grafana/download?platform=windows>`__


Setup in Ubuntu 2022.04
---------------------------------------

Distribution package for Ubuntu 2022.04 is available at https://onewayautomation.com/opcua-binaries/ogamma-logger-ubuntu2204-4.2.2.zip

To download and install it from terminal:

* Open terminal (keyboard shortcupt ``Ctrl+Alt+t`` can be used).

* Update package lists:

  .. code-block:: console

    sudo apt update


* Install tools wget and unzip:

  .. code-block:: console

    sudo apt install wget unzip


* Download distribution package:

  .. code-block:: console

    wget https://onewayautomation.com/opcua-binaries/ogamma-logger-ubuntu2204-4.2.2.zip

* Unzip it:

  .. code-block:: console  

    unzip ogamma-logger-ubuntu2204-4.2.2.zip -d ogamma-logger

* Navigate to the folder where it is extracted to:

  .. code-block:: console

    cd ogamma-logger


* Install MS SQL ODBC libraries:

  .. code-block:: console

    sudo ./install-odbc-driver.sh

  .. note:: This is required even if you do not plan to store data in MS SQL Server.

* Adjust environment variable ``LB_LIBRARY_PATH`` to find shared libraries for Python:

  .. code-block:: console

    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PWD/python/lib:$PWD/python:$PWD/python/lib/lib-dynload:/lib/x86_64-linux-gnu:/lib:/usr/lib

* Run *ogamma* Visual Logger for OPC:

  .. code-block:: console
    
    ./ogamma-logger

.. warning:: Before starting the application ogamma-logger first time in production setup, define custom values for default login credentials using environment variables ``OVL_USER_ID`` and ``OVL_USER_PASSWORD``!

  If application does not start, then check error messages in console. If required, adjust settings in the configuration file ``./data/config.json`` and start application again.

.. note:: In default basic configuration file ``./data/config.json`` field ``configDb`` is set to use built-in SQLite database.

* *ogamma* Visual Logger for OPC Configuration GUI will be accessiblie at address `http://localhost:4880 <http://localhost:4880>`__ Configuration GUI will be aavailable to access from web browser at address ``http://localhost:4880``.


Setup in RedHat Enterprise Linux
----------------------------------

Distribution package for Redhat is available at https://onewayautomation.com/opcua-binaries/ogamma-logger-rhel-2.1.15.zip.

To download and install it from terminal:

* Open terminal (keyboard shortcupt ``Ctrl+Alt+T`` can be used).

* Download distribution package:

  .. code-block:: console

    wget https://onewayautomation.com/opcua-binaries/ogamma-logger-rhel-2.1.15.zip

* Unzip it:

  .. code-block:: console  

    unzip ogamma-logger-rhel-2.1.15.zip -d ~/ovl

* Navigate to the folder where it is extracted to:

  .. code-block:: console

    cd ~/ovl

* Install MS SQL ODBC libraries:

  .. code-block:: console

    sudo ./install-unix-odbc-11.sh

  .. note:: This is required even if you do not plan to store data in MS SQL Server.


* Enable configuration endpoint port 4880 and run *ogamma* Visual Logger for OPC:

  .. code-block:: console
    
    firewall-cmd --zone=public --permanent --add-port 4880/tcp
    firewall-cmd --reload

    run-ovl.sh

.. warning:: Before starting the application ogamma-logger first time in production setup, define custom values for default login credentials using environment variables ``OVL_USER_ID`` and ``OVL_USER_PASSWORD``!

  If application does not start, then check error messages in console. If required, adjust settings in the configuration file ``./data/config.json`` and start application again.

.. note:: In default basic configuration file ``./data/config.json`` field ``configDb`` is set to use built-in SQLite database.

* *ogamma* Visual Logger for OPC Configuration GUI will be accessiblie at address `http://localhost:4880 <http://localhost:4880>`__ Configuration GUI will be aavailable to access from web browser at address ``http://localhost:4880``.

Setup in 64-bit Raspberry Pi.
--------------------------------

To downlaod the distribution package and start it, open terminal and run commands:

.. code-block:: console

  echo "Set the working directory"
	ovl-folder=$PWD
	wget https://onewayautomation.com/opcua-binaries/ogamma-logger-pi-64-4.1.2.zip
	unzip ogamma-logger-pi-64-4.1.2.zip -d $ovl-folder/ogamma-logger
	cd $ovl-folder/ogamma-logger
	export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PWD/python:$PWD/python/lib:$PWD/usr/local/lib
	./ogamma-logger

If you would like to access configuration GUI remotely from the Internet using Macchina Remote Agent (https://macchina.io/remote.html), run commands:

To download executable binary file and example configuration file, run:

.. code-block:: console

	wget https://onewayautomation.com/opcua-binaries/WebTunnelAgent
  wget https://onewayautomation.com/opcua-binaries/macchina.properties

Then edit the configuration file ``macchina.properties``.

And start the application:

.. code-block:: console

	./WebTunnelAgent -c macchina.properties

Then login at the Macchina portal at https://remote.macchina.io/ to access the configuration GUI remotely.

Setup in Raspberry 32-bit Pi.
------------------------------

Prepare Micro SD card with 32 bit debian-bullseye OS.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

* Using Raspberry Pi Imager, write the image to the SD card.
* Insert SD card into the Raspberry Pi device and start it.
* Configure OS: set up country, language, WiFi connection, interface preferences (SSH, VNC), etc.
* Install OS upgrades.

Install Docker and Docker Compose
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. code-block:: console

  curl -fsSL https://get.docker.com -o get-docker.sh
  sudo sh get-docker.sh
  sudo usermod -aG docker pi
  sudo apt-get install -y docker-compose
  sudo systemctl start docker
  sudo systemctl status docker

If Docker service fails to start, rebooting of the device should help:

.. code-block:: console

  sudo reboot

Get docker compose files for *ogamma* Visual Logger for OPC and start it:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

.. code-block:: console

  git clone https://github.com/onewayautomation/ogamma-logger.git
  cd ogamma-logger/docker
  docker-compose -f docker-compose-pi32.yml up -d

Optionally, you can also install Portainer service to manage containers:

.. code-block:: console

  docker-compose -f portainer.yml up -d

Install as Azure IoT Edge module.
----------------------------------

To install the *ogamma* Visual Logger for OPC as Azure IoT Edge module, refer to the section :ref:`iotedge`.

Installing older versions.
--------------------------

If you need help with installing older versions, please contact support.

Upgrading from older versions.
------------------------------

.. note:: Starting from version 2.2.0 valid ``Annual Maintenance and Upgrades License`` is required. Before upgrading of the application please check if your existing license allows to run the new version to which you are considering to upgrade to. If release date of the new version is no later than the date displayed in the ``First Activation Date`` field of the ``License Information`` dialog window plus one year, then no separate AMU License is required. In the newer versions the license status dialog window has separate field ``Expirsation Date`` in the ``Annual Maintenance and Upgrades License`` group.
  
  To purhcase the AMU License, contacting :ref:`support`.

  For details about this license please refer this section: :ref:`amul`

  For information about how to install the AMU License please refer section :ref:`uploadamul`.
  

Upgrading older Windows installations to version 4.2.0 or later.
------------------------------------------------------------------

Starting from version 4.2.0 it is possible to use the Windows installer, which configures the application to run as a Windows service. If you use this installer, select current installation folder (working directory where the ``./data`` subfolder is located) in the step ``Application Data Folder``. Note that the data folder is different than the folder where runtime executable files are located, which is selected at the ``Choose Install Location`` step.


Steps before upgrade.
^^^^^^^^^^^^^^^^^^^^^

* Before upgrading to the new version, stop existing application and create backup of your application data folder (usually sub-folder ./data) and backup of configuration database to avoid any data loss.

* If as a time-series database either InfluxDB or Confluent/Apache Kafka or MQTT Broker is configured, where either measurement and tags or topic name / key name are used, to make sure that the same values for those fields are used after upgrade as before upgrade, before starting upgrade process, in the ``Logged Variables`` table review current values for those columns, and remember what are the current values for some rows. Later, after upgrade, verify that the same measurement/topic name and tags/keys are used as before the upgrade.

 Also, review and remember configuration settings for the time-series database.

  .. tip:: As a precaution, to eliminate writing into the time-series database records with un-desired measurement/topic name, or tags/key name, before starting of the upgrade you can change configuration of the time-series database to use host name which does not exist.

* In version 2.1.0, for the Local Storage new database engine is used. Data migration from older version of the Local Storage to the newer version is not implemented. Therefore, before starting the upgrade, make sure that the Local Storage does not have data for significant time range. If connection with the destination time-series database is normal, then the Local Storage should have still not forwarded data for very short time (around 1 second or so) and this should nto be an issue.

Upgrading Docker container.
^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. note:: In this section it is assumed that docker-compose files from Github project https://github.com/onewayautomation/ogamma-logger used.

* Open terminal and navigate to the sub-folder ``ogamma-logger``
* Stop ogamma-logger container:
  
  .. code-block:: console

    docker-compose -f docker-compose.yml down
  
* Open file ``docker-compose.yml`` in text editor, and modify line which defines what image to use (``image: 'ogamma/logger:1.2.5'``, or ``image: 'ogamma/logger:latest'``) to use the latest version of the *ogamma* Visual Logger for OPC (as of today, it is version 4.2.2): ``image: 'ogamma/logger:4.2.2'``.

* Start the container:

  .. code-block:: console 

    docker-compose -f docker-compose.yml up -d

* Process to the section ``Steps after upgrade``.

Upgrading Windows and Ubuntu installations.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

* Install *ogamma* Visual Logger for OPC into new location, but do not start it.
* Stop existing instance;
* Copy folder ``./data`` from older installation to the new installation location;
* Start new instance. If required, it will upgrade config files and configuration database.

Steps after upgrade.
^^^^^^^^^^^^^^^^^^^^

* If as a time-series database either InfluxDB or Confluent/Apache Kafka or MQTT Broker is configured, in the ``Logged Variables`` table check values in the column ``Measurement`` (for InfluxDB), or ``Topic Name`` (for Confluent/Apache Kafka and MQTT), and verify that they have the same values as before the upgrade. Also, check values in the column ``Tags`` (for InfluxdB), or in the column ``Key Name`` for Confluent/Apache Kafka, and verify that the same values as before the upgrade.

  If values are not as expected, revise settings in the time-series database configuration dialog window. Note that starting from version 2.0.2, options ``measurement``, ``topicTemplate``, ``tags``, ``keyTemplate`` applied only if corresponding `` ... Generion Mode`` field is set to ``Use JSON template ...``.  

* Verify that data is being written to the time-series database. This can be done either by reading values back from the database using corresponding tools for that database, or by viewing historical data graphs in Grafana.

  Also, open dialog window ``Tools/Statictics`` and verify that the field ``TSDB Status`` has value ``connected``, and values in the fields of groups ``Collected values`` and ``Stored values`` are increasing.

Versions the upgrade is supported from.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Upgrading from any previous version to the newer version is supported. Downgrading is not implemented.

