Configuration - Marketplace

This page describes the configuration of the Marketplace module of the Datachain solution.

Images can be configured via docker *.env files or environment variables.

The images run without root privileges for the application and are compatible with OpenShift: see Running without privileges (OpenShift).

Marketplace module - Image dc/marketplace

Image description

Description

Contains the marketplace module, which makes data available to users.

Size

~510MB

Technical components

Java/Spring Boot/Jetty application

User

The container starts as root (process supervisor), then the application runs as dc (uid 38330, primary group root (gid 0), secondary group datachain (gid 38330)). If a uid is imposed at startup (OpenShift, Docker --user option), the whole container runs under that uid, which must belong to the root group (gid 0). Host directories mounted in the volumes must be writable by uid 38330 or by group 0. See Running without privileges (OpenShift).

Volumes

Path Purpose Required

/logs

Directory in which the server writes its logs

No, but recommended

/java_cert_import

Directory in which to place certificates. See Application certificates.

No. To be used only in very specific deployment cases.

Logs

Several types of logs, located under /logs/datachain/mp

Log Purpose

dc-mp.log

Application logs: mainly used for debugging.

A new file per day, compressed on rollover, and several files per day if the current size exceeds 200MB.

First increment at 0. Maximum total size of all files limited to 10GB. Retention period: 30 days.

access.log

Access logs

management.log

Management logs: can be ignored

URLs

Port URL Purpose

8092

/

Standard listening port of the component: all business operations (viewing, API queries)

9092

/actuator-marketplace/*

Access to Spring actuator information, for example on /actuator-marketplace/prometheus if the module configuration enables metrics:

  • management.endpoints.web.base-path=/actuator-marketplace

  • management.prometheus.metrics.export.enabled=true

Environment variables

See here.

Configuration file

######################################################################################################################
##   DATACHAIN DC-MARKETPLACE CONFIGURATION FILE
#   Fichier de configuration - configuration file
######################################################################################################################

######################################### Data Properties ##########################################

# Whether to enable logging of SQL statements.
# Paramètre gérant l’affichage du SQL de la dataSource JDBC dans les logs.
spring.jpa.show-sql=false

## datasource and pool configuration ##

# JDBC URL of the database.
# Chaîne de connexion JDBC.
# By default, the database name is 'dc_marketplace' and the port is '5432.
# Par défaut, le nom de la base de données est "dc_marketplace" et le port est "5432".
dc.app.marketplace.database.main-datasource.url=jdbc:postgresql://dc-pg:5432/dc_marketplace?prepareThreshold=0&preparedStatementCacheQueries=0

# Login username of the database. Default value 'postgres'
# Nom d'utilisateur de la base de données.
dc.app.marketplace.database.main-datasource.url.username=postgres

# Login password of the database.
# when using docker secret ar another vault, which will mount file with password inside container, you can use
# DC_APP_MARKETPLACE_DATABASE_MAIN___DATASOURCE_PASSWORD_FILE=/path/to/
# Mot de passe de la base de données.
#
dc.app.marketplace.database.main-datasource.url.password=changeIt

## pool configuration ##
## For detailed pool configuration, see :
## Pour la configuration ## Pour la configuration du pool détaillé, voir : détaillés, voir :
### https://github.com/brettwooldridge/HikariCP#configuration-knobs-baby

# This property controls the pool name.
# Cette propriété contrôle le nom du pool.
dc.app.marketplace.database.main-datasource.hikari.poolName=MainDatasourcePool

# This property controls the maximum number of milliseconds that a client (that's you) will wait for a connection from the pool.
# Cette propriété contrôle le nombre maximum de millisecondes pendant lesquelles un client (c'est-à-dire vous) attendra une connexion depuis le pool.
dc.app.marketplace.database.main-datasource.hikari.connectionTimeout=30000

# This property controls the maximum size that the pool is allowed to reach.
# Cette propriété contrôle la taille maximale que le pool est autorisé à atteindre.
dc.app.marketplace.database.main-datasource.hikari.maximumPoolSize=5

# This property controls the minimum number of idle connections that HikariCP tries to maintain in the pool.
# Cette propriété contrôle le nombre minimum de connexions inactives que HikariCP essaie de maintenir dans le pool.
dc.app.marketplace.database.main-datasource.hikari.minimumIdle=5

# This property controls the maximum lifetime of a connection in the pool.
# Cette propriété contrôle la durée de vie maximale d'une connexion dans le pool.
dc.app.marketplace.database.main-datasource.hikari.maxLifetime=600000

# This property controls how frequently HikariCP will attempt to keep a connection alive, in order to prevent it from being timed out by the database or network infrastructure.
# Cette propriété contrôle la fréquence à laquelle HikariCP tentera de maintenir une connexion active, afin d'éviter qu'elle ne soit interrompue par la base de données ou l'infrastructure réseau.
dc.app.marketplace.database.main-datasource.hikari.keepaliveTime=60000

# Disable Autocommit.
# Cette propriété contrôle le type de commit.
dc.app.marketplace.database.main-datasource.hikari.auto-commit=false

###################################
## Expose Database Configuration ##
###################################
### See Main Database Configuration.

dc.app.marketplace.database.expose-datasource.url=jdbc:postgresql://dc-pg:5432/expose?prepareThreshold=0&preparedStatementCacheQueries=0
dc.app.marketplace.database.expose-datasource.username=postgres
dc.app.marketplace.database.expose-datasource.password=changeIt

### See Main Database Configuration -  Pool configuration.
# Pool configuration #
dc.app.marketplace.database.expose-datasource.hikari.connectionTimeout=30000
dc.app.marketplace.database.expose-datasource.hikari.maximumPoolSize=20
dc.app.marketplace.database.expose-datasource.hikari.minimumIdle=20
dc.app.marketplace.database.expose-datasource.hikari.maxLifetime=600000
dc.app.marketplace.database.expose-datasource.hikari.keepaliveTime=60000
dc.app.marketplace.database.expose-datasource.hikari.poolName=ExposeDatasourcePool
dc.app.marketplace.database.expose-datasource.hikari.auto-commit=false

######################################### Server Properties ########################################
###############################
## HTTP server Configuration ##
###############################

# Server HTTP port.
# Port HTTP du serveur.
server.port=8092
# see https://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-features-graceful-shutdown
server.shutdown=graceful

# Session tracking modes. par cookie.
# Modes de suivi de session. par cookie.
server.servlet.session.tracking-modes=COOKIE
server.servlet.session.cookie.name=dcMpSid
server.servlet.session.cookie.http-only=true
server.servlet.session.cookie.same-site=lax

# Redis Session namespace storage.
# Stockage des Sessions dans Redis.
spring.session.redis.namespace=datachain:${dc.app.module.plateform-id}:${dc.app.module.instance-id}:dc_marketplace_sessions

# Secure cookie.
server.servlet.session.cookie.secure=true

# Session timeout: in seconds (s) default unit, in minutes (m), in hours (h).
# Gestion du timeout de session en heure (h) ou minutes (m) ou secondes (s) unité par défaut.
spring.session.timeout=8h

# max-age of cookie : should be same as session timeout.
# durée du cookie de session : devrait être à la même valeur que la session
server.servlet.session.cookie.max-age=-1

# Whether response compression is enabled.
# Indique si la compression des réponses est activée.
server.compression.enabled=true

# Comma-separated list of MIME types that should be compressed.
# Liste séparée par des virgules des types MIME qui doivent être compressés.
server.compression.mime-types=application/json,application/xml,text/html,text/xml,text/plain,text/csv,application/octet-stream

# Minimum "Content-Length" value that is required for compression to be performed.
# Valeur "Content-Length" minimale requise pour que la compression soit effectuée.
server.compression.min-response-size=2KB

## Enable access log.
## Activation des logs d'accès.
server.tomcat.accesslog.enabled=true

## Access log encoding.
## encodage des logs d'accès.
server.tomcat.accesslog.encoding=UTF-8

## Access log retention days.
## nombre de jour de conserbation des access logs.
server.tomcat.accesslog.max-days=31

## Access log directory: should not be modified.
## répertoire des access logs : ne devrait pas être modifier.
server.tomcat.accesslog.directory=${DC_ROOT_LOG_DIRECTORY:/tmp/log}${DC_LOG_DIRECTORY:/datachain/dc_mp}

####################################### Actuator properties ########################################

##############################
## Monitoring avec Actuator ##
##############################

## For detailed configuration, see :
## Pour la configuration détaillés, voir :
## https://docs.spring.io/spring-boot/docs/3.1.5/reference/html/actuator.html
## Spring actuator configuration.
## Configuration de Spring actuator.
management.server.port=9092
management.server.address=127.0.0.1
management.endpoint.shutdown.enabled=false
management.endpoints.web.base-path=/management
management.endpoints.web.exposure.include=health, info, prometheus
management.prometheus.metrics.export.enabled=false
management.health.ldap.enabled=false

## Configuration redis pour le cache des sessions
## Redis configuration for sessions cache
spring.data.redis.host=dc-redis
spring.data.redis.port=6379
spring.data.redis.timeout=60000
spring.data.redis.database=0

###########################################
## Exposure API configuration            ##
## Configuration de l'API d'exposition   ##
###########################################

# Configuration of the maximum number of elements for the exposed API.
# By default at 100000, can be overloaded with potential performance risk.
# Configuration du nombre max d'éléments pour l'api d'exposition
# Par défaut à 100000, peut être surchargé avec risque potentiel sur les performances
dc.app.marketplace.expose.api.max-results-number=10000000

# Configuration of the default number of elements for the exposed API.
# By default at 5000, can be overloaded with potential performance risk.
# Configuration du nombre par default d'éléments pour l'api d'exposition
# Par défaut à 5000, peut être surchargé avec risque potentiel sur les performances
dc.app.marketplace.expose.api.default-results-number=5000

# Configuration of the maximum number of elements for the exposed API Simulation.
# By default at 100000, can be overloaded with potential performance risk.
# Configuration du nombre max d'éléments pour la simulation de l'api d'exposition
# Par défaut à 100000, peut être surchargé avec risque potentiel sur les performances
dc.app.marketplace.expose.api.simulation-max-results-number=500

# Configuration of the maximum number of elements for the ODATA API.
# By default at 100000, can be overloaded with potential performance risk.
# Configuration du nombre max d'éléments pour l'api ODATA
# Par défaut à 100000, peut être surchargé avec risque potentiel sur les performances
dc.app.marketplace.expose.odata.max-results-number=10000000

# Configuration of the default number of elements for the ODATA API.
# By default at 5000, can be overloaded with potential performance risk.
# Configuration du nombre par default d'éléments pour l'api ODATA
# Par défaut à 5000, peut être surchargé avec risque potentiel sur les performances
dc.app.marketplace.expose.odata.default-results-number=5000

# Configuration of the maximum number of elements for the ODATA API Simulation.
# By default at 100000, can be overloaded with potential performance risk.
# Configuration du nombre max d'éléments pour la simulation de l'api ODATA
# Par défaut à 100000, peut être surchargé avec risque potentiel sur les performances
dc.app.marketplace.expose.odata.simulation-max-results-number=500

# When instance is open to external people who won't have access to console, set this parameter to
#true to disable links to other Datachain module
# Lorsque l'instance est publique, sans droit d'accès à la console pour les utilisateurs,
# mettre ce paramètre à true pour désactiver les liens vers les autres modules (et notamment la console).
#dc.app.marketplace.isolate=true

# MANDATORY PARAMETER
# market place public URL
# URL public de module
#dc.app.marketplace.expose.public-url=http://yourPublicUrl

# CSP Http header (security)
# Header HTTP CSP (sécurité)
dc.app.security.csp=default-src *  data: blob: filesystem: about: ws: wss: 'unsafe-inline' 'unsafe-eval';script-src * data: blob: 'unsafe-inline' 'unsafe-eval'; connect-src * data: blob: 'unsafe-inline'; img-src * data: blob: 'unsafe-inline'; frame-src * data: blob: ; style-src * data: blob: 'unsafe-inline';font-src * data: blob: 'unsafe-inline';frame-ancestors * data: blob:;

#################################################
## Console Exchange configuration              ##
## Configuration des échanges avec la console  ##
#################################################

# Plateform code modify if multiple plateforme sharing same redis
# code de la plateforme, à modifier si plusieurs plateformes partagent le même redis
dc.app.module.plateform-id=default

# Module code
# code du module selon la topology
dc.app.module.instance-id=DC_MP

# private console url
# Url privée de la console
#dc.app.module.console.url=http://dc-console:8093

# Authentication token for module exchanges
# token d'authentification pour les appels à la console
# dc.app.module.console.api-key=****

## Event incremental synchronisation with console configuration
## five seconds after start, then every 3 minutes.
## Cron de synchronisation des évènements consoles
## 5 secondes après redémarrage, puis toutes les trois minutes.
dc.app.module.console.sync.events.incremental.cron=-
dc.app.module.console.sync.events.incremental.initial-delay=5s
dc.app.module.console.sync.events.incremental.fixed-delay=3m

## Event full synchronisation with console configuration (unit : seconds)
## Use it if there are problems with incremental event synchronization.
## Cron de synchronisation de tous les évènements consoles en second
## A n'activer qu'une fois par jour maximum si nécessaire, et
## en dehors des heures d'utilisations intenses, non actif.
# dc.app.module.console.sync.events.full.cron=-
# dc.app.module.console.sync.events.full.initial-delay=99999d
# dc.app.module.console.sync.events.full.fixed-delay=99999d

## Logging levels, with some example above
## Niveau de log par défaut, avec exemples ci-dessous
logging.level.ROOT=ERROR
logging.level.com.adb.dc=INFO
logging.level.com.adb.dc.common.web.filter.DcRequestCachingFilter=ERROR

## Trace datachain code
# logging.level.com.adb.dc=DEBUG

## Trace all JDBC request
# logging.level.org.springframework=INFO
# logging.level.org.springframework.data.redis=INFO
# logging.level.org.springframework.transaction=DEBUG
# logging.level.org.springframework.orm.jpa=DEBUG
# logging.level.org.springframework.security=DEBUG

## Trace all JDBC request
# logging.level.org.hibernate.SQL=DEBUG
# logging.level.org.hibernate.orm.jdbc.bind=TRACE

Dernière mise à jour le 2 novembre 2026 à 15:16