Skip to content

Installation Guide

This guide provides step-by-step instructions for installing and configuring the DSClient application.

Alternative installation methods

The recommended installation pathway is to use a Docker container.
For other solutions, please reach out to the Chemaxon Professional Services team for further assistance.


Version Compatibility

CompReg/DSClient Version Supported Java Versions
23.9.x >= 11
24.3.x >= 17
25.1.x >= 17
26.2.x >= 21

Supported Java Versions

Version 25.3.0 is the last version of the DSClient which supports Java 17.


Video Walkthrough

Prerequisites

The following items are required before installing the Chemaxon DSClient:

- A configured Chemaxon CompReg instance with access to an admin account and the command-line interface
- Docker installed and running with access to Chemaxon Docker registry - chemaxon.jfrog.io
- PostgreSQL or Oracle database for downstream storage
- A valid Chemaxon license for CompReg and DSClient

System Requirements

Component Minimum Recommended
CPU 2 cores 4+ cores
Memory 4 GB 8+ GB
Disk Space 10 GB 50+ GB

Installation Steps

Step 1: Configure CompReg

Authentication

Access to the Chemaxon Docker registry requires authentication:

1. Pull and deploy a fully-functional CompReg system in Docker with the following compreg.env file

docker login chemaxon.jfrog.io
docker network create compreg-net

docker run -d --name compreg-db \
--network compreg-net \
-p 5433:5432 \
-v compreg-db-data:/var/lib/postgresql/data \
-e POSTGRES_DB=regsys \
-e POSTGRES_USER=regsys \
-e POSTGRES_PASSWORD=OnlineDemo2 \
postgres:15

docker run -d --name compregDemo \
--network compreg-net \
--env-file compreg.env \
-p 8080:8080 \
chemaxon.jfrog.io/cxn-docker-release/registration:25.2.4-2602171141

compreg.env
# Database Configuration
RegDBType=PostgreSQL
RegDBDriver=org.postgresql.Driver
RegDBUrl=jdbc:postgresql://compreg-db:5432/reg
RegDBUser=regsys
RegDBPass=OnlineDemo
RegDBMaxActive=30
RegDBValidationQuery=SELECT 1

# Downstream Publishing
RegDownstreamMode=Database
RegDownstreamPublishEnabled=true
RegDownstreamFusedImageFormat=mol:V3
compreg.env
# Database Configuration
RegDBType=PostgreSQL
RegDBDriver=org.postgresql.Driver
RegDBUrl=jdbc:postgresql://compreg-db:5432/reg
RegDBUser=regsys
RegDBPass=OnlineDemo
RegDBMaxActive=30
RegDBValidationQuery=SELECT 1

# Downstream Publishing via ActiveMQ
RegDownstreamMode=ActiveMQ
RegDownstreamPublishEnabled=true
RegDownstreamFusedImageFormat=mol:V3
RegDownstreamJmsPersistent=true
RegDownstreamJmsBrokerURL=tcp://activemq:61616
RegDownstreamJmsDestinationName=REGISTRATION.DS

ActiveMQ (JMS) Message Broker

An ActiveMQ broker is required for JMS messaging and an example ActiveMQ broker can be run using Docker on the same Docker network as the CompReg/DSClient with the following settings:

  • Port 61616 — OpenWire protocol (JMS communication between CompReg, DSClient, and the broker)
  • Port 8161 — Web management console (http://localhost:8161, default credentials: admin / admin)

  docker run -d --name activemq \
  --network compreg-net \
  -p 61616:61616 \
  -p 8161:8161 \
  -v ./activemq.xml:/opt/apache-activemq/conf/activemq.xml \
  apache/activemq-classic:latest

activemq.xml
...
<destinations>
  <queue physicalName="REGISTRATION.DS"/>
</destinations>

In this example, RegDownstreamJmsBrokerURL refers to container's IP address.
A full activemq.xml configuration is available here

  1. Finalize the installation using the built-in wizard running on the docker instance http://{compregDemo external IP}:8080

  1. Modify the CompReg environment configuration to include:
    compreg.env
    # Downstream Publishing
    RegDownstreamMode=Database
    RegDownstreamPublishEnabled=true
    RegDownstreamFusedImageFormat=mol:V3
    
  2. Restart the CompReg instance
  1. Modify the CompReg environment configuration to include:
    compreg.env
    # Downstream Publishing via ActiveMQ
    RegDownstreamMode=ActiveMQ
    RegDownstreamPublishEnabled=true
    RegDownstreamFusedImageFormat=mol:V3
    RegDownstreamJmsPersistent=true
    RegDownstreamJmsBrokerURL=tcp://{ActiveMQ Broker IP}:61616
    RegDownstreamJmsDestinationName=REGISTRATION.DS
    
  2. Restart the CompReg instance

Step 2: Create Client Credentials in CompReg

1. Create DSClient User in CompReg

1. Access CompReg web UI at `http://{compregDemo external IP}:8080`
2. Navigate to **Administration** → **Users**
3. Create a new user — `DSUser`
4. Assign role in Groups: `REGISTRY_ADMINISTRATOR` or `SUPER`

1. Connect to the CompReg container and create authentication credentials:

# Connect to CompReg container
docker exec -it compregDemo bash

# Create client secret
/home/cxnapp/install/RegistryCxn/bin/RegistryCxn add-secret \
  -client DSClient \
  -secret YourClientSecret

!!! info "Authentication"
    This configuration ensures that the DSClient will work with all popular authentication types supported by CompReg.
    This data is stored in the ``clients`` table in CompReg database.

Step 3: Prepare Downstream Database

Create the downstream database schema to be used with the DSClient.
DSClient will automatically create the required tables on first startup.

Testing

A docker-based Postgres server with suitable preconfigured ds database can be created for testing using

docker run -d --name dsclient-db  \
--network compreg-net \
-p 5432:5432 \
-v downstream-db-data:/var/lib/postgresql/data \
-e POSTGRES_DB=ds \
-e POSTGRES_USER=DSDBUser \
-e POSTGRES_PASSWORD=YourDSDBPassword \
postgres:15
-- Connect as superuser
CREATE DATABASE ds;
CREATE USER dsdbuser WITH PASSWORD 'YourDSDBPassword';
GRANT ALL PRIVILEGES ON DATABASE ds TO dsdbuser;
-- Connect as DBA
CREATE USER dsdbuser IDENTIFIED BY YourDSDBPassword;
GRANT CONNECT, RESOURCE TO dsdbuser;
GRANT UNLIMITED TABLESPACE TO dsdbuser;

SQLite is a file-based database that requires no server setup. Ensure the target directory exists and is writable:

# Create the data directory
mkdir -p /var/data

# Set appropriate permissions
chmod 755 /var/data

Persistent data

A volume must be mounted in Docker in order for the SQLite database to be persistent.


Step 4: Configure DSClient

Create the dsclient.env configuration file for the DSClient.

Supported Databases Configuration Options

dsclient.env
# License options
CHEMAXON_LICENSE_SERVER_KEY=lk_123456789............
CHEMAXON_LICENSE_SERVER_URL=https://license.chemaxon.com
# DSClient Home
REGISTRYCXN_DSCLIENT_HOME=/usr/local/tomcat

# Downstream Database Configuration
RegDSDBType=PostgreSQL
RegDSDBDriver=org.postgresql.Driver
RegDSDBUrl=jdbc:postgresql://dsclient-db:5432/ds
RegDSDBUser=DSDBUser
RegDSDBPass=YourDSDBPassword
RegDSDBMaxActive=30
RegDSDBValidationQuery=SELECT 1
dsclient.env
# License options
CHEMAXON_LICENSE_SERVER_KEY=lk_123456789............
CHEMAXON_LICENSE_SERVER_URL=https://license.chemaxon.com
# DSClient Home
REGISTRYCXN_DSCLIENT_HOME=/usr/local/tomcat

# Downstream Database Configuration
RegDSDBType=Oracle
RegDSDBDriver=oracle.jdbc.OracleDriver
RegDSDBUrl=jdbc:oracle:thin:@//dsclient-db:1521/ORCL
RegDSDBUser=DSDBUser
RegDSDBPass=YourDSDBPassword
RegDSDBMaxActive=30
RegDSDBValidationQuery=SELECT 1 FROM DUAL
dsclient.env
# License options
CHEMAXON_LICENSE_SERVER_KEY=lk_123456789............
CHEMAXON_LICENSE_SERVER_URL=https://license.chemaxon.com
# DSClient Home
REGISTRYCXN_DSCLIENT_HOME=/usr/local/tomcat

# Downstream Database Configuration
RegDSDBType=SQLite
RegDSDBDriver=org.sqlite.JDBC
RegDSDBUrl=jdbc:sqlite:/var/data/downstream.db
RegDSDBUser=
RegDSDBPass=
RegDSDBMaxActive=1
RegDSDBValidationQuery=SELECT 1

Communication Type Options

HTTP polling is the recommended communication method for new installations.

dsclient.env
RegDSClientCommunicationType=HTTP
RegDsClientHttpCompregHost=http://compregDemo:8080
RegDsClientHttpCompregClientId=DSClient
RegDsClientHttpCompregClientSecret=YourClientSecret
RegDsClientHttpCompregUser=DSUser
RegDsClientHttpPaginationLimit=100
RegDsClientHttpPollingFrequencySeconds=10

ActiveMQ can be used for push-based message delivery.

RegDSClientCommunicationType=QUEUE
RegDsClientJmsBrokerURL=tcp://activemq:61616
RegDsClientJmsDestinationName=REGISTRATION.DS

Step 5: Start DSClient

docker run -d \
  --name dsclient \
  --network compreg-net \
  --env-file dsclient.env \
  chemaxon.jfrog.io/cxn-professional-services-docker-release/registration_dsclient:26.2.1

Legacy License File

A local legacy license file can be used by mounting it in the appropriate user folder within the DSClient container.
Additional licensing information is available here

# Addition volume mount for legacy license file
-v "$(pwd)/license.cxl:/home/cxnapp/.chemaxon/license.cxl" \

Step 6: Verify Installation

Check the DSClient logs for successful startup:

docker logs -f dsclient

Expected Output

You should see one of the following messages:

  • No message to process - DSClient is running but no new registrations
  • Successfully finished job - DSClient successfully processed messages

Docker Compose Example

For a complete deployment, use Docker Compose:

docker-compose.yml
version: '3.8'

services:
  compreg-db:
    image: postgres:15
    environment:
      POSTGRES_DB: reg
      POSTGRES_USER: regsys
      POSTGRES_PASSWORD: RegDBPassword
    volumes:
      - compreg-data:/var/lib/postgresql/data

  downstream-db:
    image: postgres:15
    environment:
      POSTGRES_DB: ds
      POSTGRES_USER: dsdbuser
      POSTGRES_PASSWORD: DSDBPassword
    volumes:
      - downstream-data:/var/lib/postgresql/data

  compreg:
    image: chemaxon.jfrog.io/cxn-docker-release/registration:25.3.1-2511111222

    depends_on:
      - compreg-db
    environment:
      RegDBType: PostgreSQL
      RegDBDriver: org.postgresql.Driver
      RegDBUrl: jdbc:postgresql://compreg-db:5432/reg
      RegDBUser: regsys
      RegDBPass: RegDBPassword
      RegDBMaxActive: 30
      RegDBValidationQuery: SELECT 1
      RegDownstreamMode: Database
      RegDownstreamPublishEnabled: "true"
      RegDownstreamFusedImageFormat: mol:V3
      CHEMAXON_LICENSE_URL: http://license-server/license.cxl
    ports:
      - "8080:8080"

  dsclient:
    image: chemaxon.jfrog.io/cxn-professional-services-docker-release/registration_dsclient:26.2.1
    depends_on:
      - compreg
      - downstream-db
    environment:
      CHEMAXON_LICENSE_SERVER_KEY: ${CHEMAXON_LICENSE_SERVER_KEY}
      CHEMAXON_LICENSE_SERVER_URL: ${CHEMAXON_LICENSE_SERVER_URL}
      REGISTRYCXN_DSCLIENT_HOME: /usr/local/tomcat
      RegDSDBType: PostgreSQL
      RegDSDBDriver: org.postgresql.Driver
      RegDSDBUrl: jdbc:postgresql://downstream-db:5432/ds
      RegDSDBUser: dsdbuser
      RegDSDBPass: DSDBPassword
      RegDSDBMaxActive: 30
      RegDSDBValidationQuery: SELECT 1
      RegDSClientCommunicationType: HTTP
      RegDsClientHttpCompregHost: http://compreg:8080
      RegDsClientHttpCompregClientId: DSClient
      RegDsClientHttpCompregClientSecret: YourClientSecret
      RegDsClientHttpCompregUser: DSUser
      RegDsClientHttpPaginationLimit: 100
      RegDsClientHttpPollingFrequencySeconds: 10

volumes:
  compreg-data:
  downstream-data:

Legacy License File

A local legacy license file can be used by mounting it in the appropriate user folder within the DSClient container.
Additional licensing information is available here

# Addition volume mount for legacy license file
  - ./license.cxl:/home/cxnapp/.chemaxon/license.cxl

Start all services:

docker-compose up -d