Configuration et paramétrage technique

Les applications sont paramétrables via les fichiers *.env de docker ou des variables d’environnement. Ci-dessous l’essentiel du paramétrage pour les différents modules.

Pour en savoir plus, merci de télécharger le fichier de configuration auto-documenté associé au module concerné.

A propos des variables d’environnements

Les nouvelles images (console et marketplace actuellement) n’ont pas de variables d’environnements définies pour les variables sensibles.

TOUTE valeur d’un variable de configuration peut être insérée dans un docker secret (par exemple pour les mots de passe) en utilisant le nom de variable d’origine et en lui appliquant les règles suivantes :

  • tous les caractères alphanumériques sont en MAJUSCULE

  • remplacement des _ (tiret bas) par 2 tirets bas

  • remplacement des - (tiret) par 3 tirets bas

  • remplacement des . (point) par 1 tiret bas

  • ajout de _FILE à la fin du nom de variable

Exemple :

com.adb.dc.data-source.env_value=monsecret est transformé en :

  • un fichier secret qui contient la valeur "monsecret" par exemple dans /var/run/secret/env_value_file

  • une variable d’environnement COM_ADB_DC_DATA___SOURCE_ENV__VALUE_FILE=/var/run/secret/env_value_file

Images Console

Image dc/console

Variables d’environnement

Voir ici.

Fichier de configuration

######################################################################################################################
#   DATACHAIN DC-CONSOLE CONFIGURATION
#   Fichier de configuration - configuration file
######################################################################################################################

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

# Whether to enable logging of SQL statements. Should be put as true ONLY for DEBUGGING
# Paramètre gérant l'affichage du SQL de la dataSource JDBC dans les logs : a utiliser à des fins de debug UNIQUEMENT.
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_console' and the port is '5432'.
# Par défaut, le nom de la base de données est "dc_console" et le port est "5432".
dc.app.console.database.main-datasource.url=jdbc:postgresql://dc-pg:5432/dc_console?prepareThreshold=0&preparedStatementCacheQueries=0

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

# Login password of the database.
# Mot de passe de la base de données.
dc.app.console.database.main-datasource.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.console.database.main-datasource.hikari.poolName=MainDatasourcePool

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

# 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.console.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.console.database.main-datasource.hikari.maximumPoolSize=10

# 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.console.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.console.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.console.database.main-datasource.hikari.keepaliveTime=60000

######################################### Server Properties ########################################
###############################
## HTTP server Configuration ##
###############################
## Server HTTP port.
## Port HTTP du serveur.
server.port=8093
## 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=dcConsoleSid
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:sessions:dc_console

# Secure cookie. SHould be true when https, false if http.
# Cookie securisé : devrait être positionné à true pour site sécurisé, false si http.
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_console}

####################################### 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=9093
management.server.address=127.0.0.1
management.endpoints.shutdown.enabled=false
management.endpoints.web.base-path=/management
management.endpoints.web.exposure.include=health, info, prometheus
management.endpoints.web.export.prometheus.enabled=false
management.health.ldap.enabled=false

## Configuration redis pour le cache des sessions, ainsi ques les échanges entre modules
## Redis configuration for sessions cache, and inter module async exchange
spring.data.redis.host=dc-redis
spring.data.redis.port=6379
spring.data.redis.timeout=60000
spring.data.redis.database=0

########################################################################################################################
## USER PROVISIONING / PROVISIONNEMENT DES UTILISATEURS
## console user and groups database can be provisioned from LDAP directory (ex : openldap, active directory, ...).
## two of them can be configured.
## for better console performance, full and incremental provisioning can be configured
## Les utilisateurs ou groupes peuvent être provisionné depuis un annuaire LDAP (ex : openldap, active directory, ...)
########################################################################################################################
# First Ldap sync activation
# Activation synchonisation LDAP auprès d'un premier annuaire
dc.app.console.provisioning.ldap.first.active=false

## When using users/groups LDAP provisioning, cron expression for full provisioning: use '-' char for disabling-
## Example : every sunday at 1h30 AM : 0 30 1 * * SUN
## SI le provisionnement LDAP des utilisateurs/groupes, expression cron pour une provisionnement global : utiliser le caractère '-' pour désactiver ce cron-
## Exemple : tous les dimanches à 01h30 : 0 30 1 * * SUN
dc.app.console.provisioning.ldap.first.cron=-

## When using users/groups LDAP provisioning, cron expression for incremental provisioning: use '-' char for disabling-
## Example : every twenty minutes, beginning 30 seconds after minute : 30 0/20 * * * *
## Expression cron pour le provisionnement incrémental : utiliser le caractère '-' pour désactiver ce cron-
## Exemple : toutes les 20 minutes, à partir de la 30 seconde après la minute : 30 0/20 * * * *
dc.app.console.provisioning.ldap.first.partial-cron=-

## LDAP Server URL
## URL du SERVEUR LDAP
# dc.app.console.provisioning.ldap.first.urls=ldap://localhost:389

## Is User authentication enabled ?
## Authentification utilisateur active ?
# dc.app.console.provisioning.ldap.first.anonymous-read-only=false

## If authenticated, user login
## Si authentification login utilisateur ?
# dc.app.console.provisioning.ldap.first.username=cn=admin,dc=datachain,dc=fr

## If authenticated, user password
## Si authentification mot de passe utilisateur ?
# dc.app.console.provisioning.ldap.first.password=changeIt

## LDAP Root Distinguish Name
## Racine de l'annuaire LDAP
# dc.app.console.provisioning.ldap.first.root-dn=dc=datachain,dc=fr

## User search relative dn
## Dn relatif des utilisateurs à la racine de l'annuaire LDAP
# dc.app.console.provisioning.ldap.first.user.relative-dn=ou=users

## Ldap User search expression
## Expression de recherche des utilisateurs dans l'annuaire
# dc.app.console.provisioning.ldap.first.user.search-expression=(&(objectClass=inetOrgPerson)(objectClass=organizationalPerson))

## Ldap attribute to use for user description
## Attribut ldap qui représente la description de l'utilisateur
# dc.app.console.provisioning.ldap.first.user.description-attribute=description

## Ldap attribute to use for user surname
## Attribut ldap qui représente le nom de l'utilisateur
# dc.app.console.provisioning.ldap.first.user.surname-attribute=sn

## Ldap attribute to use for user mail
## Attribut ldap qui représente le mail de l'utilisateur
# dc.app.console.provisioning.ldap.first.user.email-attribute=mail

## Ldap attribute to use for user givenname
## Attribut ldap qui représente le prénom de l'utilisateur
# dc.app.console.provisioning.ldap.first.user.givenname-attribute=givenname

## Ldap attribute to use for user auth2 login
## Attribut ldap qui représente le login Oauth de l'utilisateur
# dc.app.console.provisioning.ldap.first.user.oauth-login-attribute=uid

## Ldap attribute to use for user kerberos login (when kerberos is activated)
## Attribut ldap qui représente le login kerberos de l'utilisateur (dans le cas de l'activation de kerberos)
# dc.app.console.provisioning.ldap.first.user.kerberos-login-attribute=uid

## Ldap attribute to use for user uid (UNIQUE)
## Attribut ldap qui représente l'identifiant UNIQUE de l'utilisateur
# dc.app.console.provisioning.ldap.first.user.identifier-attribute=uid

## Default email when no user email (email is required)
## email par défaut en l'absence d'email (l'email est obligatoire)
# dc.app.console.provisioning.ldap.first.user.default-email=none@nomail.com

## User of console have an UUID : this uuid can be generated (GENERATE) or ldap entryUUID can be use (ATTRIBUTE)
## Un utilisateur de la console a une UUID : cet UUID peut-être généré (GENERATE) ou récupérer depuis l'entrée utilisateur
## Values/Valeurs : GENERATE ou/or ATTRIBUTE
# dc.app.console.provisioning.ldap.first.user.uuid-mode=GENERATE

## When uuid-mode is ATTRIBUTE, ldap entry uuid
## Attribut LDAP qui représente l'uuid de l'utilisateur, utilisé si uuid-mode est ATTRIBUTE
# dc.app.console.provisioning.ldap.first.user.uuid-attribute=entryUUID

## Operational attribute for sync modification detection
## Attribut opérationnel pour la détection de modification de l'entrée
# dc.app.console.provisioning.ldap.first.user.modify-timestamp-attribute=modifyTimestamp

## Operational attribute for sync modification detection
## Attribut opérationnel pour la détection de modification de l'entrée
# dc.app.console.provisioning.ldap.first.user.create-timestamp-attribute=createTimestamp

## Activate group sync ?
## Activation de la synchronisation des groupes ?
# dc.app.console.provisioning.ldap.first.group.sync=true

## Group search relative dn
## Dn relatif des groupes à la racine de l'annuaire LDAP
# dc.app.console.provisioning.ldap.first.group.relative-dn=ou=groups

## Ldap Group search expression
## Expression de recherche des groupes dans l'annuaire
# dc.app.console.provisioning.ldap.first.group.search-expression=(&(objectClass=groupOfUniqueNames))

## Ldap attribute to use for group name
## Attribut ldap qui représente le nom du groupe
# dc.app.console.provisioning.ldap.first.group.name-attribute=cn

## Ldap attribute to use for group description
## Attribut ldap qui représente la description du groupe
# dc.app.console.provisioning.ldap.first.group.description-attribute=description

## Ldap attribute to use for group unique identifier
## Attribut ldap qui représente l'identifiant unique du groupe
# dc.app.console.provisioning.ldap.first.group.identifier-attribute=cn

## Ldap attribute to use for user in group (this attribute can have multiple values which are user dn)
## Attribut ldap qui représente l'attribut d'un membre du groupe (attributs multivalué représentant le dn d'un utilisateur)
# dc.app.console.provisioning.ldap.first.group.member-attribute=uniqueMember

## Group of console have an UUID : this uuid can be generated (GENERATE) or ldap entryUUID can be use (ATTRIBUTE)
## Un groupe de la console a une UUID : cet UUID peut-être généré (GENERATE) ou récupérer depuis l'entrée LDAP
## Values/Valeurs : GENERATE ou/or ATTRIBUTE
# dc.app.console.provisioning.ldap.first.group.uuid-attribute=GENERATE

## When uuid-mode is ATTRIBUTE, ldap entry uuid
## Attribut LDAP qui représente l'uuid du groupe, utilisé si uuid-mode est ATTRIBUTE
# dc.app.console.provisioning.ldap.first.group.uuid-attribute=entryUUID

## Operational attribute for sync modification detection
## Attribut opérationnel pour la détection de modification de l'entrée
# dc.app.console.provisioning.ldap.first.group.modify-timestamp-attribute=modifyTimestamp

## Operational attribute for sync modification detection
## Attribut opérationnel pour la détection de modification de l'entrée
# dc.app.console.provisioning.ldap.first.group.create-timestamp-attribute=createTimestamp

## Second Ldap sync activation
## Activation synchonisation LDAP auprès d'un premier annuaire
dc.app.console.provisioning.ldap.second.active=false

## For second ldap parameter documentation, see first ldap documentation
## Pour la documentation des autres paramètres, voir la documentation ci dessus du premier annuaire.
# dc.app.console.provisioning.ldap.second.cron=-
# dc.app.console.provisioning.ldap.second.partial-cron=-
# dc.app.console.provisioning.ldap.second.urls=ldap://localhost:389
# dc.app.console.provisioning.ldap.second.anonymous-read-only=false
# dc.app.console.provisioning.ldap.second.username=cn=admin,dc=datachain,dc=fr
# dc.app.console.provisioning.ldap.second.password=changeIt
# dc.app.console.provisioning.ldap.second.root-dn=dc=datachain,dc=fr
# dc.app.console.provisioning.ldap.second.user.relative-dn=ou=users
# dc.app.console.provisioning.ldap.second.user.search-expression=(&(objectClass=inetOrgPerson)(objectClass=organizationalPerson))
# dc.app.console.provisioning.ldap.second.user.description-attribute=description
# dc.app.console.provisioning.ldap.second.user.surname-attribute=sn
# dc.app.console.provisioning.ldap.second.user.email-attribute=mail
# dc.app.console.provisioning.ldap.second.user.givenname-attribute=givenname
# dc.app.console.provisioning.ldap.second.user.oauth-login-attribute=uid
# dc.app.console.provisioning.ldap.second.user.kerberos-login-attribute=uid
# dc.app.console.provisioning.ldap.second.user.identifier-attribute=uid
# dc.app.console.provisioning.ldap.second.user.default-email=none@nomail.com
# dc.app.console.provisioning.ldap.second.user.uuid-mode=GENERATE
# dc.app.console.provisioning.ldap.second.user.uuid-attribute=entryUUID
# dc.app.console.provisioning.ldap.second.user.modify-timestamp-attribute=modifyTimestamp
# dc.app.console.provisioning.ldap.second.user.create-timestamp-attribute=createTimestamp
# dc.app.console.provisioning.ldap.second.group.sync=true
# dc.app.console.provisioning.ldap.second.group.relative-dn=ou=groups
# dc.app.console.provisioning.ldap.second.group.search-expression=(&(objectClass=groupOfUniqueNames))
# dc.app.console.provisioning.ldap.second.group.name-attribute=cn
# dc.app.console.provisioning.ldap.second.group.description-attribute=description
# dc.app.console.provisioning.ldap.second.group.identifier-attribute=cn
# dc.app.console.provisioning.ldap.second.group.member-attribute=uniqueMember
# dc.app.console.provisioning.ldap.second.group.uuid-mode=GENERATE
# dc.app.console.provisioning.ldap.second.group.uuid-attribute=entryUUID
# dc.app.console.provisioning.ldap.second.group.modify-timestamp-attribute=modifyTimestamp
# dc.app.console.provisioning.ldap.second.group.create-timestamp-attribute=createTimestamp


######################################### Keyclock user synchonisation ##########################################

## Keycloak synchronization activation (for user creation and user password reset)
## Activation de la synchronisation vers keycloak (création des utilisateurs et reset des mots de passes)
dc.app.console.provisioning.keycloak.active-sync-to-keycloak=false

## When keycloak user sync is activates, keycloak parameters
## paramétrage keycloak si la synchronisation keycloak est activée
## Keycloak 'internal url'
## 'Url interne' keycloak
dc.app.console.keycloak.url=http://dc-keycloak:8080/auth

## Realm
## Royaume
dc.app.console.keycloak.realm=dc-realm

## Client id
## Identifiant du client
dc.app.console.keycloak.sync-client-id=dc_backend_keycloak

## Client secret
## Secret du client
dc.app.console.keycloak.sync-client-secret=6bcf085a-44c8-40b1-9c0c-9381c9749a8c

## Proxy
## Proxy
dc.app.console.keycloak.proxy=

## User default langage
dc.app.console.preferences.user-default-langage=BROWSER

## Token generation feature activation
## Activation de la fonctionnalité de génération de token
dc.app.console.preferences.enable-global-token-generation=true

######################################### Mail server configuration ##########################################

## Configuration parameters for the SMTP mail server
## Parametres de configuration pour le serveur de mail SMTP
dc.app.console.mail.smtp-server.host=smtp.nohost.com
dc.app.console.mail.smtp-server.port=587
dc.app.console.mail.smtp-server.auth=true
dc.app.console.mail.smtp-server.user=user@host.com
dc.app.console.mail.smtp-server.password=pwd123
dc.app.console.mail.smtp-server.sender=default.sender@host.com
dc.app.console.mail.smtp-server.ssl-trust=*
dc.app.console.mail.smtp-server.ssl-enable=false
dc.app.console.mail.smtp-server.ssl-protocols=TLSv1.2
dc.app.console.mail.smtp-server.starttls-enable=false
dc.app.console.mail.smtp-server.starttls-required=false
dc.app.console.mail.smtp-server.auth-mechanisms=LOGIN

## When smtp is not available, delay to retry to send waiting emails in milliseconds (ten minutes)
## Si le serveur SM>TP est indisponibles, délai entre deux essais d'émission des emails en attentes en milliseconds (10 minutes)
dc.app.console.mail.fixed-delay=600000

#######################################
## Datachain DOC server URL          ##
## URL de la documentation Datachain ##
#######################################
dc.app.doc.server.url=https://docs.adobisdc.fr

## Logging levels, whith some example above
## Niveau de log par defaut, avec exemples ci-dessous
logging.level.ROOT=INFO

## 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


######################################### Console configuration ##########################################


## api key token used by others modules.
## if key is modified, each client module must have a dc.app.module.console.api-key property defined
## Clé d'api de la console, utilisée par les autres modules pour leurs appels. Si la clées est modifiée,
## alors chaque module client doit avoir sa clé dc.app.module.console.api-key définies avec cette propriété.
#dc.app.console.api-key=***

## Json file describing deployed plateform modules
## Chemin du fichier des descriptions des modules déployés sur la plateforme
dc.app.console.deploy.topology-deploy-file-location=/config/topology.json

## Example of file
## Ficher d'exemple

## {
##   "products": [
##     {
##       "code": "DATACHAIN_CONSOLE",
##       "label": "Datachain Console",
##       "internalUrl": "http://dc-console:8093",
##       "publicUrl": "https://console.datachain.public-url",
##       "type": "DC_CONSOLE"
##     },
##     {
##       "code": "DC_MP",
##       "label": "Datachain Marketplace for Efficient Sharing",
##       "internalUrl": "http://dc-marketplace:8092",
##       "publicUrl": "https://marketplace.datachain.public-url",
##       "type": "DC_MARKETPLACE"
##     },
##     {
##       "code": "DATACHAIN_CORE",
##       "label": "Datachain Core Platform",
##       "description": "Datachain Core plateforme",
##       "internalUrl": "http://dc-core:8089",
##       "publicUrl": "https://dc-core.datachain.public-url",
##       "linkedProducts": [
##         "DC_MP"
##       ],
##       "type": "DC_CORE"
##     }
##   ]
## }

##########################################################
# Features global activation                             #
# Activation des fonctionnalités de la Console Datachain #
##########################################################

# Users Create/update/delete via user interface (can be disabled when ldap provisioning is activated)
# Création/modification/delete d'utilisateur via ihm (peut-être désactivé en cas de provisionnement ldap)
dc.app.console.features.users-management=true

# Users roles Create/update/delete via user interface
# Création/modification/delete des rôles utilisateurs via ihm
dc.app.console.features.users-roles-management=true

# Can users create token for themself
# Autorisation pour les utilisateurs de créer un token pour eux même
dc.app.console.features.users-tokens=true

# Can admin create token for users
# Autorisation pour les admins de créer un token
dc.app.console.features.users-tokens-management=true

# Groups Create/update/delete via user interface (can be disabled when ldap provisioning is activated)
# Création/modification/delete de groupe via ihm (peut-être désactivé en cas de provisionnement ldap)
dc.app.console.features.groups-management=true

# Groups roles Create/update/delete via user interface
# Création/modification/delete des rôles des groupes via ihm
dc.app.console.features.groups-roles-management=true

# 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:;

# First user creation without password
# Configuration de la creation du premier utilisateur de la console
dc.app.console.first-user.init=false
# dc.app.console.first-user.login=admin
# dc.app.console.first-user.password=changeIt
# dc.app.console.first-user.email=admin@unknown-domain.com
# dc.app.console.first-user.firstname=Admin
# dc.app.console.first-user.lastname=Datachain

Fichier de description de la topologie de déploiement

{
  "products": [
    {
      "code": "DATACHAIN_CONSOLE",
      "label": "Datachain Console",
      "internalUrl": "http://console:8093",
      "publicUrl": "___ VOTRE URL PUBLIC CONSOLE ___",
      "type": "DC_CONSOLE"
    },
    {
      "code": "DC_MP_1",
      "label": "Datachain Marketplace for Efficient Sharing",
      "internalUrl": "http://dc-marketplace:8092",
      "publicUrl": "___ VOTRE URL PUBLIC MARKET PLACE ___",
      "type": "DC_MARKETPLACE"
    },
    {
      "code": "DATACHAIN_CORE_1",
      "label": "Datachain Core Platform",
      "description": "Datachain Core",
      "internalUrl": "http://dc_backend:8089",
      "publicUrl": "___ VOTRE URL PUBLIC DC-CORE ___",
      "linkedProducts": [
        "DC_MP_1"
      ],
      "type": "DC_CORE"
    }
  ]
}

Images Datachain Core

Module Web - Image dc/web_ui

Variables d’environnement

Variable Valeur par défaut Description

KEYCLOAK_CONFIG

{"url": "http://localhost:8080/auth","realm": "dc-realm","clientId": "datachain","userManagementRole" : "realm-admin"}

Configuration keycloak pour les redirection de l’interface vers le serveur d’authentification. Cette configuration DOIT être surchargée avec votre configuration réseau.

Par exemple, si keycloak est sur l’url sso.monorganisation.com, alors la configuration sera :

KEYCLOAK_CONFIG={"url": "https:sso.monorganisation.com/auth","realm": "dc-realm","clientId": "dc_front", "backendClientId": "dc_backend", "userRole" : "dc_user", "projectRole" : "dc_project", "adminRole" : "dc_admin", "memberRole" : "dc_member"}

PROXY_PASS_BACKEND

dc-backend:8089

Url interne du backend : cette variable ne devrait pas être modifiée, hormis en cas de changement de nom dns du backend, d’un point de vue réseau docker

PROXY_PASS_BACKEND_LOG

dc-backend:9000

Url interne du backend pour les logs : cette variable ne devrait pas être modifiée, hormis en cas de changement de nom dns du backend, d’un point de vue réseau docker

PROXY_PASS_SPARK_LOG1

dc-spark1:9000

Url interne de spark pour les logs : cette variable ne devrait pas être modifiée, hormis en cas de changement de nom dns du spark1, d’un point de vue réseau docker

PUBLIC_IP_PORT_443

localhost:443

Utilisée uniquement dans le cas de déploiement sans reverse proxy, ce qui est très rarement le cas dans une infrastructure de production

DOC_VERSION

Correspond à la version du serveur - ne devrait pas être modifiée, sauf cas particulier communiqué par Adobis

DOC_SERVER_URL

https://docs.adobisdc.fr

Url public du serveur de documentation Adobis

CONTENT_SECURITY_POLICY

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:;

Configuration de l’entête de sécurité CSP http

Module Backend - Image dc/backend

Variables d’environnement

Variable Valeur par défaut Description

DC_PG_PASSWORD_FILE

Nom du fichier de type "docker secret" qui permet de surcharger spring.datasource.password

DC_PG_EXPOSE_PASSWORD_FILE

Nom du fichier de type "docker secret" qui permet de surcharger spring.expose-datasource.password

DC_PG_JOB_PASSWORD_FILE

Nom du fichier de type "docker secret" qui permet de surcharger spring.job-datasource.password. Si non surchargé, mais qu’il y a la valeur DC_PG_PASSWORD_FILE, alors DC_PG_PASSWORD_FILE sera utilisé

SPARK_SECURITY_USER_PASSWORD_FILE

Nom du fichier de type "docker secret" qui permet de surcharger dc.app.api.spark.security.user.password (identique sur backend et spark)

KEYCLOAK_INTERNAL_CLIENT_SECRET_FILE

Nom du fichier de type "docker secret" qui permet de surcharger dc.keycloak.internal-client-secret

Fichier de configuration

################################################
##   DATACHAIN Backend CONFIGURATION FILE    ##
################################################
# DataChain Backend configuration file example.
# Exemple de fichier de configuration du backend DataChain.
######################################### Data Properties ##########################################
####################################################
## Main Database Configuration                    ##
## Configuration de la base de données principale ##
####################################################
## For detailed configuration, see :
## Pour la configuration détaillés, voir :
### https://docs.spring.io/spring-boot/docs/2.3.12.RELEASE/reference/html/production-ready-features.html
# database ip or dns address. Default value 'localhost
# Adresse ip ou dns de la base de données. Valeur par défaut 'localhost'
dc.app.db.host=localhost
# JDBC URL of the database.
# Chaîne de connexion JDBC.
# By default, the database name is 'adobis' and the port is '5432.
# Par défaut, le nom de la base de données est "adobis" et le port est "5432".
spring.datasource.url=jdbc:postgresql://${dc.app.db.host}:5432/adobis?prepareThreshold=0&preparedStatementCacheQueries=0
# Login username of the database. Default value 'postgres'
# Nom d'utilisateur de la base de données.
spring.datasource.username=postgres
# Login password of the database.
# Mot de passe de la base de données.
spring.datasource.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 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.
spring.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.
spring.datasource.hikari.maximumPoolSize=20
# 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.
spring.datasource.hikari.minimumIdle=20
# 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.
spring.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.
spring.datasource.hikari.keepaliveTime=60000
# This property controls the pool name.
# Cette propriété contrôle le nom du pool.
spring.datasource.hikari.poolName=MainDatasourcePool
# 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
# Register OpenEntityManagerInViewInterceptor. Binds a JPA EntityManager to the thread for the entire processing of the request.
# Enregistrez OpenEntityManagerInViewInterceptor. Lie un EntityManager JPA au thread pour l'ensemble du traitement de la demande.
spring.jpa.open-in-view=false
## Hibernate configuration ##
## For detailed Hibernate configuration, see :
## Pour la configuration ## Pour la configuration détaillés, voir : détaillés, voir :
### https://docs.jboss.org/hibernate/orm/5.4/userguide/html_single/Hibernate_User_Guide.html
# Defines the query timeout, in milliseconds.
# Définit le délai d'expiration de la requête, en millisecondes.
spring.jpa.properties.javax.persistence.query.timeout=30000
# If enabled, Hibernate will collect statistics useful for performance tuning.
# Si activé, Hibernate collectera des statistiques utiles pour le réglage des performances.
spring.jpa.properties.hibernate.generate_statistics=false
# Disable/Enable the second level cache
# Désactiver/Activer le cache de second niveau
spring.jpa.properties.hibernate.cache.use_second_level_cache=false
# Controls the maximum number of statements Hibernate will batch together before asking the driver to execute the batch. Zero or a negative number disables this feature.
# Contrôle le nombre maximum d'instructions qu'Hibernate regroupera avant de demander au pilote d'exécuter le lot. Zéro ou un nombre négatif désactive cette fonction.
spring.jpa.properties.hibernate.jdbc.batch_size=2000
# Forces Hibernate to order inserts to allow for more batching to be used.
# Force Hibernate à commander des insertions pour permettre l'utilisation de plus de lots.
spring.jpa.properties.hibernate.order_inserts=true
# Forces Hibernate to order SQL updates by the entity type and the primary key value of the items being updated.
#Force Hibernate à trier les mises à jour SQL par le type d'entité et la valeur de la clé primaire des éléments mis à jour.
spring.jpa.properties.hibernate.order_updates=true
# Defines the Hibernate-specific FlushMode to use.
# Définit le FlushMode spécifique à Hibernate à utiliser
spring.jpa.properties.org.hibernate.flushMode=COMMIT
# Should versioned entities be included in batching?
# Les entités versionnées doivent-elles être incluses dans le traitement par lot ?
spring.jpa.properties.hibernate.jdbc.batch_versioned_data=true
# Should we not use contextual LOB creation ?
# Ne devrions-nous pas utiliser la création contextuelle de LOB ?
spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true
#########################################################################
###################################
## Expose Database Configuration ##
###################################
### See Main Database Configuration.
### Configuration de la base de données principale.
# Standard configuration #
spring.expose-datasource.dbtype=pgSql
spring.expose-datasource.host=localhost
spring.expose-datasource.port=5432
spring.expose-datasource.database=expose
spring.expose-datasource.schema=public
spring.expose-datasource.username=postgres
spring.expose-datasource.password=changeIt
spring.expose-datasource.url=jdbc:postgresql://${spring.expose-datasource.host}:${spring.expose-datasource.port}/${spring.expose-datasource.database}
### See Main Database Configuration -  Pool configuration.
### Configuration de la base de données principale -  Pool configuration.
# Pool configuration #
spring.expose-datasource.hikari.connectionTimeout=30000
spring.expose-datasource.hikari.maximumPoolSize=20
spring.expose-datasource.hikari.minimumIdle=20
spring.expose-datasource.hikari.maxLifetime=600000
spring.expose-datasource.hikari.keepaliveTime=60000
spring.expose-datasource.hikari.poolName=ExposeDatasourcePool
###################################
## Job Database Configuration ##
###################################
### See Main Database Configuration.
### Configuration de la base de données principale.
# Standard configuration #
spring.job-datasource.host=${dc.app.db.host}
spring.job-datasource.port=5432
spring.job-datasource.database=adobis
spring.job-datasource.schema=job
spring.job-datasource.username=${spring.datasource.username}
spring.job-datasource.password=${spring.datasource.password}
spring.job-datasource.url=jdbc:postgresql://${spring.job-datasource.host}:${spring.job-datasource.port}/${spring.job-datasource.database}
### See Main Database Configuration -  Pool configuration.
### Configuration de la base de données principale -  Pool configuration.
# Pool configuration #
spring.job-datasource.hikari.connectionTimeout=30000
spring.job-datasource.hikari.maximumPoolSize=10
spring.job-datasource.hikari.minimumIdle=10
spring.job-datasource.hikari.maxLifetime=600000
spring.job-datasource.hikari.keepaliveTime=60000
spring.job-datasource.hikari.poolName=JobDatasourcePool
######################################### Server Properties ########################################
###############################
## HTTP server Configuration ##
###############################
## For detailed configuration, see :
## Pour la configuration détaillés, voir :
### https://docs.spring.io/spring-boot/docs/2.3.12.RELEASE/reference/html/production-ready-features.html
# Server HTTP port.
# Port HTTP du serveur.
server.port=8089
## 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=dcCoreSid
server.servlet.session.cookie.http-only=true
server.servlet.session.cookie.same-site=lax

# Secure cookie. SHould be true when https, false if http.
# Cookie securisé : devrait être positionné à true pour site sécurisé, false si http.
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.
server.servlet.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=${server.servlet.session.timeout}

# Context path of the application.
# Chemin de contexte de l'application.
server.servlet.context-path=/
# 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
# Time that the connection can be idle before it is closed.
# Temps pendant lequel la connexion peut être inactive avant d'être fermée.
server.jetty.connection-idle-timeout=10000s
server.jetty.accesslog.enabled=true
server.jetty.accesslog.custom-format=%{client}a - %u %t "%r" %s %O (%{ms}T ms)
server.jetty.accesslog.filename=${DC_ROOT_LOG_DIRECTORY:/tmp/log}${DC_LOG_DIRECTORY:/datachain/dc_core_backend}/access_yyyy_MM_dd.log
server.jetty.accesslog.file-date-format=yyyy_MM_dd
server.jetty.accesslog.retention-period=30

### Web properties ###
# Max file size.
# Taille maximale du fichier.
spring.servlet.multipart.max-file-size=10000MB
# Max request size.
# Taille maximale de la requête.
spring.servlet.multipart.max-request-size=10000MB
# Maximum size of data buffers used in file upload..
# Taille maximale des tampons de données utilisés dans le téléchargement de fichiers.
dc.app.http.upload.chunk-size=32768
####################################### Actuator properties ########################################
##############################
## Monitoring avec Actuator ##
##############################
## For detailed configuration, see :
## Pour la configuration détaillés, voir :
## https://docs.spring.io/spring-boot/docs/2.3.12.RELEASE/reference/html/production-ready-features.html
## Spring actuator configuration.
## Configuration de Spring actuator.
management.endpoint.shutdown.enabled=false
management.server.port=9089
management.endpoints.web.base-path=/actuator
management.server.address=127.0.0.1
management.endpoints.web.exposure.include=health,prometheus
management.metrics.export.prometheus.enabled=false
management.health.ldap.enabled=false
######################################### Core properties ##########################################
## For detailed configuration, see :
## Pour la configuration détaillés, voir :
## https://docs.spring.io/spring-boot/docs/2.3.12.RELEASE/reference/html/production-ready-features.html
# Expose management beans to the JMX domain.
# Exposer les beans de gestion au domaine JMX
spring.jmx.enabled=false
######################################### Log properties ###########################################
###############################
## Log & Trace Configuration ##
###############################
# Trace
# data profiling activation switch (calculation and log of service execution time).
# Interrupteur d’activation du profilage des données (calcul et log du temps d’exécution des services).
dc.app.log.aspect.enable=false
# Http traceability activation switch
# Interrupteur d’activation de la traçabilité http
logbook.filter.enabled=false
# Http traceability level
# Niveau de traçabilité http
logbook.write.level=INFO
# Exclude certain URLs
# Exclure certaines URL
logbook.exclude=/oauth/token/**
####################################### Security properties ########################################
############################
## keycloak configuration ##
############################
## For detailed configuration, see :
## Pour la configuration détaillés, voir :
## https://www.keycloak.org/docs/20.0.3/securing_apps/#_spring_boot_adapter
# Network configuration
# The URL for the Keycloak authentication server.
# L'URL du serveur proxy utilisé pour se connecter à Keycloak.
keycloak.auth-server-url=http://localhost:8080/auth
# The URL of the proxy server used to connect to Keycloak.
# L'URL du serveur proxy utilisé pour se connecter à Keycloak.
keycloak.proxy-url=
# The realm to use for authentication and authorization.
# Le royaume à utiliser pour l'authentification et l'autorisation.
keycloak.realm=dc-realm
# The name of the client resource that represents the application.
# Le nom de la ressource client qui représente l'application.
keycloak.resource=dc_backend
# This property specifies that the application only accepts bearer tokens for authentication.
# Cette propriété spécifie que l'application n'accepte que les jetons porteurs pour l'authentification.
keycloak.bearer-only=true
# This property specifies that the application should use resource-level roles instead of realm-level roles.
# Cette propriété spécifie que l'application doit utiliser des rôles au niveau des ressources plutôt que des rôles au niveau du royaume.
keycloak.use-resource-role-mappings=true
# This property specifies that the application should use resource-level roles instead of realm-level roles.
# Cette propriété spécifie que l'application doit utiliser des rôles au niveau des ressources plutôt que des rôles au niveau du royaume.
keycloak.cors=true

# keycloak roles
# The name of the role assigned to standard users.
# Le nom du rôle attribué aux utilisateurs standards.
dc.keycloak.user-role-name=dc_user
# The name of the role assigned to instances administrators.
# Le nom du rôle attribué aux administrateurs d'instances.
dc.keycloak.admin-role-name=DC_ADMIN
# The name of the role assigned to project creators.
# Le nom du rôle attribué aux créateurs de projet.
dc.keycloak.project-role-name=DC_PROJECT
# The name of the role assigned to project members.
# Le nom du rôle attribué aux membres du projet.
dc.keycloak.member-role-name=DC_MEMBER
# keycloak clients
# The ID of the client used by the front-end application.
# L'ID du client utilisé par l'application font.
dc.keycloak.front-client-id=dc_front
# The ID of the client used by the exposition application.
# L'ID du client utilisé par l'exposition.
dc.keycloak.exposition-client-id=dc_exposition
# for internal communication (spark notif)
# The ID of the client used by the back-end application for internal communication.
# L'ID du client utilisé par l'application back-end pour la communication interne.
dc.keycloak.internal-client-id=dc_backend_keycloak
# The secret key used by the internal client for authentication.
# La clé secrète utilisée par le client interne pour l'authentification.
dc.keycloak.internal-client-secret=6bcf085a-44c8-40b1-9c0c-9381c9749a8c
# The secret key used by the internal client for authentication.
# L'ID du client utilisé par le système de notification Spark.
dc.keycloak.spark-internal-client-id=dc_spark_backend
# The ID of the client used by the Dc Console application.
# L'ID du client utilisé par  Dc Console.
dc.keycloak.dc-console-id=dc_console
# Realm URLs
# The URL of the realm admin console.
# L'URL de la console d'administration du royaume.
dc.keycloak.realm-url=${keycloak.auth-server-url}/admin/realms/${keycloak.realm}
# The URL for accessing user information in the realm.
# L'URL pour accéder aux informations de l'utilisateur dans le royaume.
dc.keycloak.realm-users-url=${dc.keycloak.realm-url}/users
# The URL for accessing group information in the realm.
# L'URL pour accéder aux informations de groupe dans le royaume.
dc.keycloak.realm-groups-url=${dc.keycloak.realm-url}/groups
# Client inactivity max delay in minutes
# Délai maximal d'inactivité du client en minutes
dc.app.backend.security.inactivity-max-delay=2400
########################################## Spark properties ########################################
#########################
## Spark configuration ##
#########################
# Spark
# The user/password used by backend to communicate with DATACHAIN SPARK
# Le nom d'utilisateur/mot de passe utilisé par le backend pour communiquer avec DATACHAIN SPARK
dc.app.api.spark.security.user.name=backend
dc.app.api.spark.security.user.password=70171933-e656-4183-9955-bfd0354d2250
#Spark rest request timeout
# The connection timeout (in milliseconds) for Spark REST requests.
# Le temps d'attente de connexion (en millisecondes) pour les requêtes Spark REST.
dc.api.spark.request-connection-timeout=10000
#The reading timeout (in milliseconds) for Spark REST requests.
# Le temps d'attente de lecture (en millisecondes) pour les requêtes Spark REST.
dc.api.spark.request-reading-timeout=60000
####################################### Cache properties ###########################################
########################
## Cache Configuration ##
########################
# Path to ehcache the configuration file
# Chemin pour mettre en cache le fichier de configuration
dc.app.ehcahce.configuration=
################################## Internationalization properties #################################
########################
##         i18n       ##
########################
# This property specifies the base name for the message resource bundles used for internationalization.
# Cette propriété spécifie le nom de base des fichiers de ressources de message utilisés pour l'internationalisation.
spring.messages.basename=i18n/common/messages,i18n/common/validations,i18n/gd/messages,i18n/gd/validations,i18n/gd/autodoc,i18n/hd/messages,i18n/hd/validations,i18n/common/jobtype,i18n/gd/exporttemplate
# This property specifies whether the system locale should be used as a fallback for messages that are not found in the message resource bundles.
# Cette propriété spécifie si la locale système doit être utilisée comme solution de secours pour les messages qui ne sont pas trouvés dans les fichiers de ressources de message.
spring.messages.fallback-to-system-locale=false
######################################## Misc Configuration ########################################
##########################
## Web-ui configuration ##
##########################
# Network
# Cette propriété spécifie l'URL de l'interface web.
dc.app.url.web-ui=http://localhost
# Cette propriété spécifie l'URL interne de l'interface web.
dc.app.url.internal-web-ui-url=http://localhost
##############################################################################
## Configuration des échanges de message entre backend et Spark via Redis   ##
## Configuration for message exchanges between backend and spark via redis  ##
##############################################################################

## Configuration pour les échanges de message entre backend et spark via redis
## Url de Redis
## Redis Url
# spring.redis.host=dc-redis
# spring.redis.database=0
# spring.redis.port=6379
# spring.redis.timeout=60000

dc.app.notification.urls=redis://${spring.redis.host}:${spring.redis.port}

# The prefixes are in case one day we make multiple DataChain work on the same
# Les prefixes sont pour le cas ou un jour, on fait travailler plusieurs DataChain sur la même
#
# Redis infrastructure and to ensure that we do not overwrite the queue of another application if
# infra Redis et pour permettre de s'assurer ne pas écraser la file d'une autre application si
#
# Redis is shared with other applications
# Redis est partagé avec d'autres applications
dc.app.notification.job.queue.name.prefix=dc.app.notification.job.queue
dc.app.notification.event.job.queue.name.prefix=dc.app.notification.event.job.queue
dc.app.notification.cancel.job.topic.name.prefix=dc.app.notification.cancel.job.topic
dc.app.notification.event.job.topic.name.prefix=dc.app.notification.event.job.topic
dc.app.notification.cache.job.result.name.prefix=dc.app.notification.cache.job.result
dc.app.notification.event.heart.beat.name.prefix=dc.app.notification.event.heart.beat
# Cron to deeply clean the cache
# Cron de nettoyage en profondeur du cache
dc.app.cron.clean.cache=0 0 1 * * ?
# Cron for clearing job details by setting requests to null. The default schedule is set to run at 1:30 AM every Sunday (0 30 1 * * SUN).
# Cron pour effacer les détails des emplois en définissant les demandes comme nulles. L'horaire par défaut est programmé pour s'exécuter à 1 h 30 chaque dimanche (0 30 1 * * SUN).
dc.app.cron.clean.job.request=0 30 1 * * SUN
# Threshold for data cleaning in days. Default 60 days
# Seuil de nettoyage des données en jours. Par défaut, 60 jours.
dc.app.cron.clean.job.request.threshold=60
# Short cache duration in second (default one hour)
# Durée du cache court en second (une heure par défaut)
dc.app.short.job.cache.duration.minutes=60
# Long cache duration in minutes (default one day)
# Durée du cache long en minutes (une journée par défaut)
dc.app.long.job.cache.duration.minutes=1440
###########################################
## 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.expose.api.max-results-number=100000
dc.app.expose.api.default-results-number=1000
################################################
## Data Encryption configuration              ##
## Configuration du chiffrement des données   ##
################################################
# This property specifies whether exported project files should be encrypted (true by default).
# If false a .zip file will be returned
# Cette propriété spécifie si les fichiers de projet exportés doivent être chiffrés (true par défaut).
# Si false un fichier .zip sera renvoyé
dc.project.export.zip.cipher=true
# Cipher key (If changed, all the connectors password must be revalidate)
# The key is optional. If set it must be exactly 16 characters
# Must be the same as spark
# Cette propriété spécifie la clé de chiffrement utilisée pour le backend et Spark. (doit contenir exactement 16 caractères).
# Si cette clé est modifiée, tous les mots de passe des connecteurs doivent être validés à nouveau.
# Doit être le même que spark
dc.app.backend.cipher.key=
################################################
## Data DCRepository configuration              ##
## Configuration du dépôt de données          ##
################################################
# This property specifies the maximum number of headers allowed for the repository in the application. (2000 by default)
# Cette propriété spécifie le nombre maximum d'en-têtes autorisés pour le dépôt dans l'application. (2000 par défaut)
dc.app.repository.headers.max.number=2000
################################################
##                         Date              ##
################################################
# Default timezone setting for dates
# This parameter allows you to set the default timezone for date handling in front end date pickers (DataBlocks/Sources filters and centering zones).
# Paramètre de fuseau horaire par défaut pour les dates
# Ce paramètre vous permet de définir le fuseau horaire par défaut pour la gestion des dates dans les sélecteurs de date (Filters de DataBlocks/Sources et zones de centrage) côté frontend."
dc.app.date.timezone=
# Default timezone setting for dates in %date variables
# (for example when choosing file export name in Datablock export)
# Paramètre de fuseau horaire par défaut pour les dates utilisées dans les expressions %date
# (par exemple lors du choix du nom de fichier pour un export datablock
dc.app.date.sl.timezone=UTC
##########################
## SMTP Configuration ##
##########################
# You can define STMP configuration vith datachain admin IHM or with this file
# La configuration SMTP peut-être définie dans ce fichier ou via l'interface web de datachain.
# choice between IHM(in database configuration) or via configuration file required value : "db" or "file"
# choix de configuration entre IHM (configuration en base de donnée) ou fichier de configuration - obligatoire : "ihmdb" ou "file"
dc.app.smtp.config=ihmdb
#dc.app.smtp.config=file
# Les autre paramètres ne sont nécessaires que si dc.app.mail.config=file
# Please fill others parameters only if dc.app.mail.config=file
# serveur smtp : obligatoire
# smtp server : required
dc.app.smtp.host=
# port smtp (465 par défaut)
# smtp port (default 465)
dc.app.smtp.port=465
# Authentification smtp (false par défaut)
# smtp authentication (default false )
dc.app.smtp.auth=false
# Utilisateur pour Authentification
# authentication username
dc.app.smtp.user=
# Mot de passe pour Authentification
# authentication password
dc.app.smtp.password=
# Utilisateur emetteur des messages (par défaut : dc.datachain@datachain.fr)
# mail sender (default : dc.datachain@datachain.fr)
dc.app.smtp.sender=dc.datachain@datachain.fr
# nom d'hote smtp de confiance
# trusted host name
dc.app.smtp.ssl.trust=*
# utiliser ssl pour les échanges smtp
# Use ssl when using smtp
dc.app.smtp.ssl.enable=true
# utiliser ssl pour les échanges smtp
# Use ssl when using smtp
dc.app.smtp.ssl.protocols=TLSv1.2
# utiliser starttls pour les échanges smtp
# Use starttls when using smtp
dc.app.smtp.starttls.enable=true
# rendre starttls obligatoire (si oui, une erreur aura lieu si l'échange starttls ne peut avoir lieu)
# is starttls mandatory
dc.app.smtp.starttls.required=false
##########################
## SECURITY             ##
##########################
## Enable datachain tokens for api call
## Activation de l'authentification par token pour les appels API
dc.app.security.auth.api-token.enable=true

## Database cleaning of last users login
## Cron de nettoyage des dernières dates de logins utilisateurs
#dc.app.module.user.last-login-cleaner.cron=0 5 22 * * ?

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

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

# 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 (unit : seconds)
## five seconds after start, then every 3 minutes.
## Cron de synchronisation des évènements consoles en second
## 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=5
dc.app.module.console.sync.events.incremental.fixed-delay=180

## 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

Principaux paramètres

Paramètre Valeur par défaut Description

dc.app.db.host

localhost

adresse ip ou dns de la base de données

spring.datasource.url

jdbc:postgresql://${dc.app.db.host}:5433/adobis?prepareThreshold=0&preparedStatementCacheQueries=0

chaîne de connexion JDBC

spring.datasource.username

**

nom d’utilisateur de la connexion JDBC

spring.datasource.password

**

mot de passe de la connexion JDBC

spring.datasource.jmx-enabled

false

interrupteur d’activation de la jmx pour la dataSource JDBC

spring.jpa.show-sql

false

paramètre gérant l’affichage du SQL de la dataSource JDBC dans les logs

server.port

8089

port http

server.compression.enabled

true

interrupteur d’activation de la compression http

server.compression.mime-types

application/json,application/xml,text/html,text/xml,text/plain

mime-types à compresser

server.compression.min-response-size

2KB

(en byte) compresser à partir de

spring.servlet.multipart.max-file-size

10000MB

taille maximale d’un fichier transmis par http

spring.servlet.multipart.max-request-size

10000MB

taille maximale d’une requête http

dc.app.http.upload.chunk-size

32768

taille maximale en bytes d’un tronçon de fichier transmis par http

spring.jmx.enabled

false

interrupteur d’activation jmx pour spring

management.endpoint.shutdown.enabled

true

interrupteur d’activation du service shutdown

management.server.port

9089

port http du service actuator

management.server.address

127.0.0.1

adresse réseau à laquelle les endpoints actuator doivent se lier

dc.app.backend.user.username

**

utilisateur system à créer au démarrage du service backend , utilisé par le(s) contexte(s) spark

dc.app.backend.user.password

**

password de l’utilisateur system à créer au démarrage du service backend , utilisé par le(s) contexte(s) spark

dc.app.backend.security.oauth.client.id

**

client id oauth2

dc.app.backend.security.oauth.client.secret

**

client secret oauth2

dc.app.backend.security.login.failure.retry-max-nbr

3

nombre de tentatives d’authentification maximum

dc.app.backend.security.login.failure.retry-delay

1

durée en minute du blockage du service authentification après un dépassement du dc.app.backend.security.login.failure.retry-max-nbr

dc.app.backend.security.token.validity

240

durée en minute de la validité d’une authentification

dc.app.backend.security.password-validity-delay

90

durée en jour de la validité du password

dc.app.backend.security.inactivity-max-delay

3

durée en minute maximum de l’inactivité ihm, une fois dépassé l’utilisateur est automatiquement déconnecté

dc.app.backend.security.authentication.2fa.active

false

interrupteur d’activation de l’authentification à double facteur

dc.app.backend.security.authentication.2fa.code-expiration

5

durée en minute maximum de la validité du jeton 2fa

logbook.filter.enabled

false

interrupteur d’activation de la traçabilité http

logbook.write.level

INFO

niveau de traçabilité http

dc.app.log.aspect.enable

false

interrupteur d’activation du profilage des données (calcul et log du temps d’exécution des services)

dc.app.url.web-ui

http://localhost

adresse web-ui public

dc.app.api.spark

http://localhost:8090

liste des adresses "context" spark (séparées par des virgules)

dc.app.api.spark.security.user.name

**

liste des logins "context" spark (séparées par des virgules)

dc.app.api.spark.security.user.password

**

liste des mots de passe "context" spark (séparées par des virgules)

dc.api.spark.shared-file-system

false

indiquer si les différents "context" spark partagent le même system de fichier

dc.api.spark.request-connection-timeout

10000

Temps en milliseconde de la connection-timeout avec un "context" spark

dc.api.spark.request-reading-timeout

10000

Temps en milliseconde de la reading-timeout avec un "context" spark

dc.app.ehcahce.configuration

redéfinir l’emplacement du fichier de configuration ehcache

Module Spark - Image dc/spark

Variables d’environnement

Variable Valeur par défaut Description

SPARK_SECURITY_USER_PASSWORD_FILE

Nom du fichier de type "docker secret" qui permet de surcharger dc.app.api.spark.security.user.password (identique sur backend et spark)

Fichier de configuration

################################################
## DATACHAIN SPARK SERVICE CONFIGURATION FILE ##
################################################
##
## Ce fichier est le fichier de configuration pour le service spark de l'application datachain.
## La configuration indique ici les paramètres par défaut de l'application
## Une grande partie de la configuration est dédiée à la configuration du framework Spring-Boot
## utilisé pour exécuter le service Spark
##
###############################
## HTTP server configuration ##
###############################
server.port=8090
server.servlet.context-path=/
server.compression.enabled=true
server.compression.mime-types=application/json,application/xml,text/html,text/xml,text/plain
server.compression.min-response-size=2KB
server.jetty.accesslog.enabled=true
server.jetty.accesslog.custom-format=%{client}a - %u %t "%r" %s %O (%{ms}T ms)
server.jetty.accesslog.filename=${DC_ROOT_LOG_DIRECTORY:/tmp/log}${DC_LOG_DIRECTORY:/datachain/dc_core_spark}/access_yyyy_MM_dd.log
server.jetty.accesslog.file-date-format=yyyy_MM_dd
server.jetty.accesslog.retention-period=30


spring.jpa.open-in-view=true


## Tous les paramètres de configuration applicative sont sous la forme dc.app.xxx
## Pour ajouter une configuration spark native, ajouter dc.app en préfixe
## de la configuration spark habituelle
dc.app.spark.app-name=DATACHAIN
## Configuration de la puissance allouée au contexte spark.
## Vis-à-vis de Spark, le service Datachain Spark se comorte comme un driver spark.
## Par défaut, la configuration est de type local si bien que le driver est aussi un worker Spark.
## Le service spark utilise les ressources de la machine sur laqeulle il est déployé
## local[2] indique que spark utilise deux coeurs au maximum
dc.app.spark.master=local[2]
## Mémoire allouée au contexte spark
dc.app.spark.executor.memory=2g
## Mémoire allouée au contexte spark
dc.app.spark.cores.max=2

####################
## Job scheduling ##
####################
## Mode de scheduling Spark
## par default, spark est lancé en mode FAIR : le contexte accepte plusieurs tâches, et essaye
## d'allouer des ressources à chaque tâches
## Fair scheduling (multiple jobs can be executed concurrently)
dc.app.spark.scheduler.mode=FAIR
## Fifo scheduling (only one job can be executed concurrently)
# dc.app.spark.scheduler.mode=FIFO
dc.app.spark.scheduler.pool=default
dc.app.spark.scheduler.allocation.file=/opt/dev/dc/java-source/hdh-spark/src/main/resources/fairScheduler.xml
## nb thread if FAIR mode
## Nombre de thread chargées de dépiler et exécuter les jobs sparks en provenance du backend
## 5 thread signifie qu'au maximum 5 jobs seront lancé dans sparks, qui seront ensuite exécuté en mode fair par Spark.
## Il convient d'adapter le nombre de thread à la puissance alloué au contexte. En effet, si Le contexte à moins de
# coeurs alloués, des jobs seront systématiquement en attente.
dc.app.job.manager.spark.thread.number=5
## Nombre de thread chargées de dépiler et exécuter les jobs non spark (import/export de projets)
## 5 thread signifie qu'au maximum 5 jobs seront exécutés en parrallèle.
dc.app.job.manager.other.thread.number=5

###########################################
## Parametrage des ports sparks Standard ##
###########################################
dc.app.spark.blockManager.port=7010
dc.app.spark.driver.port=7020
dc.app.spark.driver.host=localhost
dc.app.spark.driver.bindAddress=localhost
dc.app.spark.driver.maxResultSize=1g
dc.app.spark.formula.http.timeout.read=200
dc.app.spark.formula.http.timeout.connect=200
dc.app.spark.hadoop.dfs.client.use.datanode.hostname=false
dc.app.spark.local.dir=/tmp
dc.app.spark.sql.adaptive.enabled=true
dc.app.spark.ui.port=4040

#######################
## Job configuration ##
#######################
## nombre de ligne retournée lors de chaque requête SQL pour les connecteurs SQL
dc.app.jdbc.fetchSize=5000
## Nombre et taille maximum de données remontées par datachain lors d'un "take" au niveau de l'IHM
dc.app.take.max-row=500000
dc.app.take.max-object-size=258002000
# Context Id (Represents the context order in backend configuration)
dc.app.context.id=0
dc.app.context.name=context_1
dc.app.context.url=http://localhost:8090

##############################
## Monitoring avec Actuator ##
##############################
## Pour la configuration détaillés, voir :
## https://docs.spring.io/spring-boot/docs/2.3.12.RELEASE/reference/html/production-ready-features.html
## Configuration de Spring actuator
management.server.address=127.0.0.1
management.server.port=9090
management.endpoints.web.base-path=/actuator
management.endpoint.shutdown.enabled=false
management.endpoints.web.exposure.include=health,prometheus
management.metrics.export.prometheus.enabled=false
management.health.defaults.enabled=false

## Configuration de l'utilisateur BACKEND pour les appels Sparks ##
spring.security.user.name=backend
spring.security.user.password=70171933-e656-4183-9955-bfd0354d2250

## Cipher key (If changed, all the connectors password must be revalidate)
## The key is optional. If set it must be exactly 16 characters
## Must be the same as spark
dc.app.backend.cipher.key=

## Disable multipart
spring.servlet.multipart.enabled=false
## Trace
logbook.filter.enabled=false
logbook.write.level=INFO
## cache
dc.app.ehcahce.configuration=

## Configuration Hadoop
# local storage : file:/// , s3 storage s3a://bucket-name , hdfs : hdfs://host:port
#dc.app.spark.hadoop.fs.defaultFS=s3a://dc-core

##############################################
## Configuration Spark Hadoop pour S3A ##
#############################################

# Cle d'acces S3 (Access Key)
dc.app.spark.hadoop.fs.s3a.access.key=minioadmin
# Clé secrète S3 (Secret Key)
dc.app.spark.hadoop.fs.s3a.secret.key=minioadmin
# Endpoint du service S3 ( URL de l endpoint S3)
dc.app.spark.hadoop.fs.s3a.endpoint=http://minio-storage.adobis.lan
# Nom du bucket utilisé pour le stockage
dc.app.spark.hadoop.fs.s3a.bucket=dc-core
# Implementation Hadoop S3A a utiliser
dc.app.spark.hadoop.fs.s3a.impl=org.apache.hadoop.fs.s3a.S3AFileSystem
# Acces path-style (http://host/bucket/...). Nécessaire pour MinIO ou S3 compatible)
dc.app.spark.hadoop.fs.s3a.path.style.access=true

dc.app.spark.hadoop.fs.s3a.fast.upload=true
# Type de buffer utilise (disk, array, bytebuffer)
dc.app.spark.hadoop.fs.s3a.fast.upload.buffer=disk
# emplacement locale pour les buffers en disque
dc.app.spark.hadoop.s3a.buffer.dir=/tmp/spark-buffers
# Nombre maximum de blocs qu un flux de sortie peut avoir en activite
dc.app.spark.hadoop.fs.s3a.fast.upload.active.blocks=10
# Seuil pour declencher le multipart upload
dc.app.spark.hadoop.fs.s3a.multipart.threshold=67108864
# Taille de chaque partie du multipart upload
dc.app.spark.hadoop.fs.s3a.multipart.size=64M
# Nombre maximum de threads pour les operations S3A
dc.app.spark.hadoop.fs.s3a.threads.max=100
# Nombre maximal des connexions simultannees
dc.app.spark.hadoop.fs.s3a.connection.maximum=300
# Timeout de connexion HTTP en millisecondes
dc.app.spark.hadoop.fs.s3a.connection.timeout=200000
# Nombre maximal de tentatives en cas d echec
dc.app.spark.hadoop.fs.s3a.attempts.maximum=20
# Intervale de temps de tentatives en cas d echec
dc.app.spark.hadoop.fs.s3a.retry.interval=500ms


## La version 2 de l'algorithme du FileOutputCommitter introduit un mécanisme de commit plus robuste.
# Dans les versions antérieures, les échecs partiels pouvaient entrainer des données corrompues ou incomplétes. La version 2 réduit considérablement ce risque ##
dc.app.spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version=2

## Committer (1) Utiliser le Magic Committer d'hadoop (rend l'écriture des parquets en S3 plus performante, plus sécurisée et plus robuste ##
dc.app.spark.hadoop.fs.s3a.committer.magic.enabled=true
dc.app.spark.hadoop.fs.s3a.committer.name=magic
dc.app.spark.hadoop.mapreduce.outputcommitter.factory.scheme.s3a=org.apache.hadoop.fs.s3a.commit.S3ACommitterFactory
dc.app.spark.sql.sources.commitProtocolClass=org.apache.spark.internal.io.cloud.PathOutputCommitProtocol
dc.app.spark.sql.parquet.output.committer.class=org.apache.spark.internal.io.cloud.BindingParquetOutputCommitter

##Committer (2) staging committer directory mode
#dc.app.spark.hadoop.fs.s3a.committer.name=directory

##Committer (3) staging committer partitioned mode
#dc.app.spark.hadoop.fs.s3a.committer.name=partitioned

##Committer (0) default committer : Hadoop committer

## Configuration HDFS (répertoire Datachain)
## Dfs
dc.app.data-file.hdfs=file:///tmp/hdh
dc.app.data-file.hdfs.input.depot.csv.execution=${dc.app.data-file.hdfs}/input/depot/csv/execution
dc.app.data-file.hdfs.input.depot.csv.tmp=${dc.app.data-file.hdfs}/input/depot/csv/tmp
dc.app.data-file.hdfs.input.depot.db.sql.execution=${dc.app.data-file.hdfs}/input/depot/db/execution
dc.app.data-file.hdfs.input.depot.db.mongodb.execution=${dc.app.data-file.hdfs}/input/depot/mongodb/execution
dc.app.data-file.hdfs.input.depot.db.neo4j.execution=${dc.app.data-file.hdfs}/input/depot/neo4j/execution
dc.app.data-file.hdfs.input.depot.json.execution=${dc.app.data-file.hdfs}/input/depot/json/execution
dc.app.data-file.hdfs.input.depot.json.tmp=${dc.app.data-file.hdfs}/input/depot/json/tmp
dc.app.data-file.hdfs.input.depot.parquet.execution=${dc.app.data-file.hdfs}/input/depot/parquet/execution
dc.app.data-file.hdfs.input.depot.parquet.tmp=${dc.app.data-file.hdfs}/input/depot/parquet/tmp
dc.app.data-file.hdfs.input.depot.excel.execution=${dc.app.data-file.hdfs}/input/depot/excel/execution
dc.app.data-file.hdfs.input.depot.excel.tmp=${dc.app.data-file.hdfs}/input/depot/excel/tmp
dc.app.data-file.hdfs.input.depot.excel.tmp.cache=${dc.app.data-file.hdfs}/input/depot/excel/cache
dc.app.data-file.hdfs.input.depot.binary.execution=${dc.app.data-file.hdfs}/input/depot/binary/execution
dc.app.data-file.hdfs.input.depot.binary.tmp=${dc.app.data-file.hdfs}/input/depot/binary/tmp
dc.app.data-file.hdfs.input.depot.xml.execution=${dc.app.data-file.hdfs}/input/depot/xml/execution
dc.app.data-file.hdfs.input.depot.xml.tmp=${dc.app.data-file.hdfs}/input/depot/xml/tmp
dc.app.data-file.hdfs.input.import.zip=${dc.app.data-file.hdfs}/input/import/zip
dc.app.data-file.hdfs.output.export.zip=${dc.app.data-file.hdfs}/output/export/zip
dc.app.data-file.hdfs.output.export.csv=${dc.app.data-file.hdfs}/output/export/csv
dc.app.data-file.hdfs.output.export.json=${dc.app.data-file.hdfs}/output/export/json
dc.app.data-file.hdfs.output.export.parquet=${dc.app.data-file.hdfs}/output/export/parquet
dc.app.data-file.hdfs.output.export.xml=${dc.app.data-file.hdfs}/output/export/xml
dc.app.data-file.hdfs.output.export.excel=${dc.app.data-file.hdfs}/output/export/excel
dc.app.data-file.hdfs.output.export.txt=${dc.app.data-file.hdfs}/output/export/txt
dc.app.data-file.hdfs.output.export.txt.tmp=${dc.app.data-file.hdfs}/output/export/txt/tmp
dc.app.data-file.hdfs.output.cache.parquet=${dc.app.data-file.hdfs}/output/cache/parquet
dc.app.data-file.hdfs.output.cache.parquet.datablock=${dc.app.data-file.hdfs.output.cache.parquet}/datablock
dc.app.data-file.hdfs.output.cache.parquet.uet=${dc.app.data-file.hdfs.output.cache.parquet}/uet
dc.app.data-file.hdfs.output.snapshot.depot=${dc.app.data-file.hdfs}/output/snapshot/depot

## Backend rest request timeout
dc.api.backend.request-connection-timeout=1000
dc.api.backend.request-reading-timeout=1000

## Configuration pour les echanges de message entre backend et spark via redis
## Url de Redis
dc.app.notification.urls=redis://localhost:33333
## les prefix sont pour la cas ou un jour, on fait travailler plusiers datachains sur la même
## infra Redis et pour permettre de s'assurer ne ne pas ecraser la file d'une autre application si
## Redis est partagé avec d'autres applications
dc.app.notification.job.queue.name.prefix=dc.app.notification.job.queue
dc.app.notification.event.job.queue.name.prefix=dc.app.notification.event.job.queue
dc.app.notification.cancel.job.topic.name.prefix=dc.app.notification.cancel.job.topic
dc.app.notification.event.job.topic.name.prefix=dc.app.notification.event.job.topic
dc.app.notification.cache.job.result.name.prefix=dc.app.notification.cache.job.result
dc.app.notification.event.heart.beat.name.prefix=dc.app.notification.event.heart.beat
dc.app.notification.lockmap=dc.app.notification.lockmap

# fuseau horaire utilisé pour les fonctions windows basées sur les dates
# timezone for aggreagation window function
# exemple : dc.app.window.default.tz=Europe/Paris
dc.app.window.default.tz=

Principaux paramètres

Paramètre Valeur par défaut Description

server.port

8090

port http

server.compression.enabled

true

interrupteur d’activation de la compression http

server.compression.mime-types

application/json,application/xml,text/html,text/xml,text/plain

"mime-types" à compresser

server.compression.min-response-size

2KB

compresser à partir de

dc.app.spark.app-name

HDH-SPARK

nom de l’application spark

dc.app.spark.master

local[1]

chaîne de connexion vers le master spark (spark://HOST:PORT) ou local[n] pour tourner en mode local

dc.app.spark.executor.memory

1g

mémoire allouée à un exécuteur

dc.app.spark.cores.max

1

nombre de coeurs maximum disponibles pour les exécuteurs

dc.app.spark.ui.port

4040

console de monitoring spark

dc.app.spark.blockManager.port

7010

port de communication pour les blockManager valable pour le driver (hdh-spark) et les exécuteurs (uniquement pour le mode cluster)

dc.app.spark.driver.port

7020

port de communication entre le driver (hdh-spark), le master et les exécuteurs (pour le mode cluster)

dc.app.spark.driver.host

localhost

nom d’hôte ou adresse IP du driver pour la communication entre le driver (hdh-spark), le master et les exécuteurs (pour le mode cluster)

dc.app.spark.driver.bindAddress

localhost

nom d’hôte ou adresse IP où lier les interfaces de connexion (sockets). Cette configuration outrepasse (remplace) la variable d’environnement "SPARK_LOCAL_IP" (uniquement valable pour le mode cluster)

dc.app.spark.driver.maxResultSize

1g

mémoire maximale des données sérialisées pour les partitions après une action de collection (supérieure à dc.app.take.max-object-size)

dc.app.spark.local.dir

/tmp

emplacement tmp pour les exécuteurs : il devrait se situer sur un disque dur local et rapide, du système. Il peut également se présenter sous la forme d’une liste de répertoires, séparés par des virgules, issus de différents disques.

dc.app.spark.formula.http.timeout.read

200

valeur du timeout-read en milliseconde pour les requêtes http depuis les formules

dc.app.spark.formula.http.timeout.connect

200

valeur du timeout-connect en milliseconde pour les requêtes http depuis les formules

dc.app.take.max-row

2500

nombre maximal de lignes (sur un "take")

dc.app.take.max-object-size

3932160

taille maximale des chaines de caractères en octets (sur un "take")

dc.app.jdbc.fetchSize

500000

valeur utilisée par les connecteurs de type BD, indique la taille d’un lot de données à traiter

dc.app.context.id

0

id du contexte courant (doit être unique pour un backend)

dc.app.context.name

context_0

nom du contexte courant

dc.app.context.url

http://dc-spark:8090

url du contexte courant

dc.app.api.backend

http://localhost:8089

adresse http de l’api backend

dc.app.api.maps.url

http://localhost/service/maps/udf/

adresse http de l’api google-map dans le module backend

dc.app.backend.user.username

sparktobackend

utilisateur system à créer au démarrage du service backend , utilisé par le(s) contexte(s) spark

dc.app.backend.user.password

**

password de l’utilisateur system à créer au démarrage du service backend , utilisé par le(s) contexte(s) spark

dc.app.backend.security.oauth.client.id

**

client id oauth2 du module backend

dc.app.backend.security.oauth.client.secret

**

client secret oauth2 du module backend

management.endpoint.shutdown.enabled

true

interrupteur d’activation du service shutdown

management.server.port

9090

port http du service actuator

management.server.address

127.0.0.1

adresse réseau à laquelle les endpoints actuator doivent se lier

spring.security.user.name

**

login du "context" spark

spring.security.user.password

**

mot de passe du "context" spark

logbook.filter.enabled

false

interrupteur d’activation de la traçabilité http

logbook.write.level

INFO

niveau de traçabilité http

dc.app.ehcahce.configuration

redéfinir l’emplacement du fichier de configuration ehcache

dc.app.data-file.hdfs

file:///tmp/hdh

chaîne de connexion racine HDFS

Images Marketplace

Marketplace - Image dc/marketplace

Variables d’environnement

Voir ici.

Fichier de configuration

######################################################################################################################
##   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:sessions:dc_marketplace

# 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_console}

####################################### 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.endpoints.shutdown.enabled=false
management.endpoints.web.base-path=/management
management.endpoints.web.exposure.include=health, info, prometheus
management.endpoints.web.export.prometheus.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

# 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  ##
#################################################

# 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

Images de bases de données

Module Postgresql Datachain - Image dc/pg_all

Image utilisée pour les bases de données de datachain core, console et marketplace Pas de configuration spécifique Adobis. Voir https://hub.docker.com/_/postgres

Module Postgresql Datachain - Image dc/pg - DÉPRÉCIÉE

Utiliser l’image dc/pg_all à la place Pas de configuration spécifique Adobis. Voir https://hub.docker.com/_/postgres

Module Postgresql d’Exposition - Image dc/pg_expose - DÉPRÉCIÉE

Utiliser l’image dc/pg_all à la place Pas de configuration spécifique Adobis. Voir https://hub.docker.com/_/postgres

Module de migration dc core - Image dc/pg_migration

Variables d’environnement

Variable Valeur par défaut Description

PG_DC_DUMP

false

Faire un dump de la base de donnée Datachain automatiquement à chaque démarrage de cette image

PG_HOST

localhost

Nom DNS de la base de donnée : sera généralement positionné à dc-pg

PG_PORT

5432

Port de la base de donnée : Ne devrait pas être modifié

PG_USER

postgres

Utilisateur qui sera utilisé pour le dump et les migrations de tables

PG_PASSWORD

changeIt

Mot de passe qui sera utilisé pour le dump et les migrations de tables : devrait être changé via ce paramètre ou le paramètre suivant : PG_PASSWORD_FILE

PG_PASSWORD_FILE

Nom du fichier de type "docker secret" qui permet de définir le Mot de passe qui sera utilisé pour le dump et les migrations de tables : devrait être changé via ce paramètre ou le paramètre précédent : PG_PASSWORD

PG_DB

adobis

Nom de la base de donnée

PG_KC_DUMP

false

Faire un dump de la base de donnée keycloak automatiquement à chaque démarrage de cette image

PG_KC_HOST

localhost

Nom DNS de la base de donnée keycloak: sera généralement positionné à dc-pg

PG_KC_PORT

5432

Port de la base de donnée keycloak: Ne devrait pas être modifié

PG_KC_USER

postgres

Utilisateur qui sera utilisé pour le dump et les migrations de tables keycloak

PG_KC_PASSWORD

changeIt

Mot de passe qui sera utilisé pour le dump et les migrations de tables keycloak: devrait être changé via ce paramètre ou le paramètre suivant : PG_KC_PASSWORD_FILE

PG_KC_PASSWORD_FILE

Nom du fichier de type "docker secret" qui permet de définir le Mot de passe qui sera utilisé pour le dump et les migrations de tables keycloak : devrait être changé via ce paramètre ou le paramètre précédent : PG_KC_PASSWORD

PG_KC_DB

keycloak

Nom de la base de donnée

PG_EXPOSE_DUMP

false

Faire un dump de la base de donnée d’exposition Datachain automatiquement à chaque démarrage de cette image

PG_EXPOSE_DB

expose

Nom de la base de donnée d’exposition

PG_EXPOSE_HOST

localhost

Nom DNS de la base de donnée d’exposition: sera généralement positionné à dc-pg

PG_EXPOSE_PORT

5432

Port de la base de donnée d’exposition: Ne devrait pas être modifié

PG_EXPOSE_USER

postgres

Utilisateur qui sera utilisé pour le dump et les migrations de tables d’exposition

PG_EXPOSE_PASSWORD

changeIt

Mot de passe qui sera utilisé pour le dump et les migrations de tables d’exposition: devrait être changé via ce paramètre ou le paramètre suivant : PG_EXPOSE_PASSWORD_FILE

PG_EXPOSE_PASSWORD_FILE

Nom du fichier de type "docker secret" qui permet de définir le Mot de passe qui sera utilisé pour le dump et les migrations de tables d’exposition : devrait être changé via ce paramètre ou le paramètre précédent : PG_EXPOSE_PASSWORD

KC_URL

http://localhost:8080/auth

url public de keycloak : A modifier

KC_REALM

dc-realm

Royaume de sécurité pour datachain : Ne devrait être modifié qu’en cas d’installation spécifique de keycloak et de Datachain

KC_ADMIN_USERNAME

admin

Login de l’administrateur keycloak pour le royaume Master

KC_ADMIN_PASSWORD

changeIt

Mot de passe de l’administrateur keycloak pour le royaume master

KC_ADMIN_PASSWORD_FILE

Nom du fichier de type "docker secret" qui permet de définir le mot de passe de l’administrateur keycloak pour le royaume master

KC_DC_CLIENT_ID

dc_backend

Identifiant du client keycloak pour le backend : ne devrait pas être modifié

KC_DC_FRONT_CLIENT_ID

dc_front

Identifiant du client keycloak pour le front web_ui : ne devrait pas être modifié

KC_DC_EXPOSITION_CLIENT_ID

dc_exposition

Identifiant du client keycloak pour le l’api d’exposition : ne devrait pas être modifié

KC_DC_USER_ROLE_NAME

dc_user

nom du role User : ne devrait pas être modifié

KC_DC_ADMIN_ROLE_NAME

dc_admin

nom du role Admin : ne devrait pas être modifié

KC_DC_PROJECT_ROLE_NAME

dc_project

nom du role Projet : ne devrait pas être modifié

KC_DC_MEMBER_ROLE_NAME

dc_member

nom du role membre : ne devrait pas être modifié

KC_PROXY_URL

url du proxy http si présent entre keycloak de ce container (reste vide dans un cas de déploiement standard)

KC_PROXY_PORT

port du proxy http si présent entre keycloak de ce container (reste vide dans un cas de déploiement standard)

KC_PROXY_PROTOCOL

http

protocol du proxy http si présent entre keycloak de ce container (reste vide dans un cas de déploiement standard)

KC_MASTER_REALM

master

nom du royaume principal de keycloak

KC_ADMIN_CLIENT_ID

admin-cli

nom du client pour l’administration de client

Module de cache/ files d’attentes - Image dc/redis

Pas de configuration spécifique Adobis. Voir https://redis.io/docs/management/config/

Module SSO (en cas d’absence de SSO interne)

Module d’authentification - Image dc/keycloak

Variables d’environnement

Pour plus d’information sur le paramétrage natif keycloak, merci de vous reporter à https://www.keycloak.org/server/all-config

Variable Valeur par défaut Description

KC_DB

postgres

Paramétrage natif keycloak - Type de base - ne pas modifier

KC_DB_URL_HOST

dc-pg-keycloak

Paramétrage natif keycloak - nom dns du serveur : ne devrait être modifié qu’en cas d’externalisation de la base de donnée

KC_DB_URL_PORT

5432

Paramétrage natif keycloak - port

KC_DB_URL_DATABASE

keycloak

Paramétrage natif keycloak - Nom de la base de donnée

KC_DB_USERNAME

postgres

Paramétrage natif keycloak - utilisateur keycloak

KC_DB_PASSWORD

changeIt

Paramétrage natif keycloak - mot de passe : A modifier via ce paramètre ou le paramètre KC_DB_PASSWORD_FILE

KC_DB_PASSWORD_FILE

Nom du fichier de type "docker secret" qui permet de définir le mot de passe de la base

KC_HEALTH_ENABLED

true

Paramétrage natif keycloak - activer les URL de monitoring

KC_METRICS_ENABLED

true

Paramétrage natif keycloak - activer les métriques de monitoring

KC_FEATURES

token-exchange

Activer l’échange de token

INTERNALIZATION_ENABLED

true

Paramétrage natif keycloak - activer l’internationalisation

INTERNALIZATION_LOCALES

["fr","en"]

Paramétrage natif keycloak - Internationalisation Anglais/Français

INTERNALIZATION_DEFAULT_LOCALE

fr

Paramétrage natif keycloak - Français par défaut

KEYCLOAK_ADMIN

admin

Paramétrage natif keycloak - Login de l’administrateur keycloak pour le royaume Master

KEYCLOAK_ADMIN_PASSWORD

changeIt

Paramétrage natif keycloak - Mot de passe de l’administrateur keycloak pour le royaume master

KEYCLOAK_ADMIN_PASSWORD_FILE

Paramétrage natif keycloak - Nom du fichier de type "docker secret" qui permet de définir le mot de passe de l’administrateur keycloak pour le royaume master

DC_DEFAULT_ADMIN_CREATE

true

Créer automatiquement le premier administrateur Datachain (utilisateur avec le role administrateur Datachain dans le royaume dc_realms)

DC_DEFAULT_ADMIN

admin

login de l’administrateur Datachain dans le royaume dc_realms

DC_DEFAULT_ADMIN_PASSWORD

changeIt

Mot de passe de l’administrateur Datachain dans le royaume dc_realms

DC_DEFAULT_ADMIN_PASSWORD_FILE

Nom du fichier de type "docker secret" qui permet de définir le mot de passe de l’administrateur Datachain dans le royaume dc_realms

DATACHAIN_CLIENT_URL

http://localhost

Url de datachain : A modifier

KEYCLOAK_FRONTEND_URL

http://localhost:8080/auth

url public de keycloak : A modifier

Module postgres d’authentification - Image dc/pg_keycloak

Peut-être remplacée par l’image dc/pg_all.

Pas de configuration spécifique Adobis. Voir https://hub.docker.com/_/postgres