# Configuration des containers

## Lancement d’une image

Les images OCI sont stockées sur le registre `code.waarp.fr`. Le Dockerfile utilisé pour générer les images est consultable dans le dépôt de l’application.

Le lancement peut se faire avec une des commandes suivantes :

    # avec docker
    docker run code.waarp.fr:5000/apps/gateway/gateway:latest

    # avec podman
    podman run code.waarp.fr:5000/apps/gateway/gateway:latest

## Ports exposés

L’image `gateway` expose seulement le port `8080`, c’est-à-dire celui de l’interface REST qui permet d’administrer l’instance de Waarp Gateway,

Les ports des serveurs protocolaires de Gateway étant définis par paramétrage, il n’est pas possible de les exposer dans l’image. N’oubliez pas de les exposer au lancement du container.

## Volumes déclarés

L’image `gateway` déclare deux volumes :

- `/app/etc`, qui contient la configuration de l’instance ;

- `/app/data`, qui contient toutes les données (fichiers reçus, fichiers à envoyer, base de données sqlite, etc.

Note

Tous les fichiers utilisés par Gateway sont modifiables par variable d’environnement au lancement du container.

## Variables d’environnement

### Configuration de waarp-gatewayd

L’image `gateway` utilise plusieurs variables d’environnement pour configurer l’instance exécutée dans le container.

Ces variables vont être utilisées pour réécrire le fichier de configuration utilisé par waarp-gatewayd.

WAARP_GATEWAY_CONFIG

  Permet de spécifier le chemin vers le fichier de configuration à utiliser. Cette option permet de réutiliser un fichier de configuration ou de fournir à waarp-gatewayd un fichier pré-paramétré.

  Avertissement

  Le fichier de configuration spécifié va être réécrit avec les les variables d’environnement ci-dessous si elles sont fournies

WAARP_GATEWAY_NODE_ID

  Le nom unique de l’instance de waarp-gatewayd lors d’un fonctionnement en grappe. Correspond à l’argument `waarp-gatewayd server --instance`

WAARP_GATEWAY_NAME

  Le nom de cette instance de waarp-gatewayd.

  Correspond à l’option `GatewayName` du fichier de configuration.

WAARP_GATEWAY_HOME

  Définit la racine de waarp-gatewayd.

  Correspond à l’option `GatewayHome` du fichier de configuration.

WAARP_GATEWAY_IN_DIR

  Définit le dossier par défaut dans lequel sont déposés les fichiers reçus par waarp-gatewayd.

  Correspond à l’option `DefaultInDirectory` du fichier de configuration.

WAARP_GATEWAY_OUT_DIR

  Définit le dossier par défaut dans lequel sont lus les fichiers envoyés par waarp-gatewayd.

  Correspond à l’option `DefaultOutDirectory` du fichier de configuration.

WAARP_GATEWAY_TMP_DIR

  Définit le dossier par défaut dans lequel sont déposés les fichiers en cours de réception par waarp-gatewayd.

  Correspond à l’option `DefaultTmpDirectory` du fichier de configuration.

WAARP_GATEWAY_LOG_LEVEL

  Définit le niveau de verbosité des logs. Les valeurs possibles sont : `DEBUG`, `INFO`, `WARNING`, `ERROR` et `CRITICAL`.

  Correspond à l’option `Level` du fichier de configuration.

WAARP_GATEWAY_LOG_TO

  Le chemin du fichier d’écriture des logs. Les valeurs spéciales `stdout` et `syslog` permettent de rediriger les logs respectivement vers la sortie standard et vers un démon syslog.

  Correspond à l’option `LogTo` du fichier de configuration.

WAARP_GATEWAY_SYSLOG_FACILITY

  Quand `LogTo` est défini à `syslog`, cette option permet de définir l’origine (facility) du message.

  Correspond à l’option `SyslogFacility` du fichier de configuration.

WAARP_GATEWAY_ADMIN_ADDRESS

  L’adresse de l’interface sur laquelle le serveur HTTP va écouter les requêtes faites à l’interface d’administration.

  Correspond à l’option `Host` du fichier de configuration.

WAARP_GATEWAY_ADMIN_PORT

  Le port sur lequel le serveur HTTP doit écouter. La valeur “0” est entrée, un port libre sera arbitrairement choisit.

  Correspond à l’option `Port` du fichier de configuration.

WAARP_GATEWAY_ADMIN_TLS_KEY

  Le chemin de la clé TLS pour le serveur HTTP. Si ce paramètre n’est pas défini, le serveur utilisera du HTTP en clair à la place de HTTPS.

  Correspond à l’option `SyslogFacility` du fichier de configuration.

  Note

  La clé est requise pour une utilisation avec Waarp Manager. Si aucune clé n’est fournie avec cette variable d’environnement, une clef sera générée au lancement du container.

WAARP_GATEWAY_ADMIN_TLS_CERT

  Le chemin du certificat TLS pour le serveur HTTP. Si ce paramètre n’est pas défini, le serveur utilisera du HTTP en clair à la place de HTTPS.

  Correspond à l’option `SyslogFacility` du fichier de configuration.

  Note

  Le certificat est requis pour une utilisation avec Waarp Manager. Si aucun certificat n’est fourni avec cette variable d’environnement, un certificat auto-signé sera généré au lancement du container.

WAARP_GATEWAY_DB_TYPE

  Le nom (en minuscules) du type de système de gestion de base de données utilisé. Les valeurs autorisées sont: `postgresql`, `mysql`, `sqlite`.

  Correspond à l’option `Type` du fichier de configuration.

WAARP_GATEWAY_DB_ADDRESS

  L’adresse complète (URL + Port) de la base de données. Le port par défaut dépend du type de base de données utilisé (`5432` pour PostgreSQL, `3306` pour MySQL, aucun pour SQLite).

  Correspond à l’option `Address` du fichier de configuration.

WAARP_GATEWAY_DB_NAME

  Le nom de la base de donnée utilisée.

  Correspond à l’option `Name` du fichier de configuration.

WAARP_GATEWAY_DB_USER

  Le nom d’utilisateur du SGBD utilisé par la gateway pour faire des requêtes.

  Correspond à l’option `User` du fichier de configuration.

WAARP_GATEWAY_DB_PASSWORD

  Le mot de passe de l’utilisateur du SGBD.

  Correspond à l’option `Password` du fichier de configuration.

WAARP_GATEWAY_DB_TLS_KEY

  La clé du certificat TLS de la base de données.

  Correspond à l’option `TLSKey` du fichier de configuration.

WAARP_GATEWAY_DB_TLS_CERT

  Le certificat TLS de la base de données. Par défaut, les requêtes n’utilisent pas TLS.

  Correspond à l’option `TLSCert` du fichier de configuration.

WAARP_GATEWAY_DB_AES_PASSPHRASE

  Le chemin vers le fichier qui contient la clef AES utilisée pour chiffrer les mots de passes des comptes enregistrés dans la base de données.

  Correspond à l’option `AESPassphrase` du fichier de configuration.

WAARP_GATEWAY_DB_MIGRATION_TIMEOUT

  Délai maximum en secondes pour attendre que la base de données soit disponible avant d’exécuter les migrations. Par défaut: `30` secondes.

  Les migrations de la base de données sont exécutées automatiquement au démarrage du container. Si la base de données n’est pas encore accessible, l’entrypoint va réessayer jusqu’à ce que le délai soit écoulé.

  Si les migrations échouent après ce délai, le container s’arrête avec un code d’erreur.

WAARP_GATEWAY_MAX_IN

  Le nombre maximum autorisé de transferts entrants simultanés. Illimité par défaut.

  Correspond à l’option `MaxTransfersIn` du fichier de configuration.

WAARP_GATEWAY_MAX_OUT

  Le nombre maximum autorisé de transferts sortants simultanés. Illimité par défaut.

  Correspond à l’option `MaxTransfersOut` du fichier de configuration.

### Synchronisation depuis manager

WAARP_GATEWAY_MANAGER_URL

  URL à utiliser pour ce connecter à Waarp Manager. Si cette variable d’environnement est renseignée, la configuration de `Gateway` (partenaires, règles de transfert, etc…) est téléchargée depuis Manager au lancement du container.

  Si l’instance de Gateway n’est pas déclarée dans Manager, Elle sera automatiquement déclarée et un flux de configuration est créé.

  L’URL doit contenir les identifiants d’un utilisateur ayant le droit de déployer la configuration, et de créer des partenaires et des flux si l’instance de Gateway n’est pas déclarée préalablement dans Manager

      https://USER:PASSWORD@manager.tld:8080

WAARP_GATEWAY_MANAGER_SITE

  Cette variable d’environnement est requise si l’instance de Gateway n’est pas déclarée préalablement dans Manager, et elle est ignorée sinon.

  Défini le site dans lequel le partenaire doit être créé.

WAARP_GATEWAY_MANAGER_IP

  Cette variable d’environnement est requise si l’instance de Gateway n’est pas déclarée préalablement dans Manager, et elle est ignorée sinon.

  Défini l’adresse ou le domaine du partenaire créé dans Manager.

WAARP_GATEWAY_MANAGER_PASSWORD

  Cette variable d’environnement est requise si l’instance de Gateway n’est pas déclarée préalablement dans Manager, et elle est ignorée sinon.

  Défini le mot de passe du partenaire créé dans Manager. S’il n’est pas fourni avec cette variable d’environnement, un mot de passe aléatoire est généré.

WAARP_GATEWAY_MANAGER_R66_PORT

  Cette variable d’environnement est ignorée si l’instance de Gateway est déjà déclarée dans Manager.

  Défini le port de communication R66 pour la Gateway définie dans Manager. Par défaut: `6666`.

WAARP_GATEWAY_MANAGER_R66TLS_PORT

  Cette variable d’environnement est ignorée si l’instance de Gateway est déjà déclarée dans Manager.

  Défini le port de communication R66 TLS pour la Gateway définie dans Manager. Par défaut: `6667`.

WAARP_GATEWAY_MANAGER_REST_USERNAME

  Cette variable d’environnement est ignorée si l’instance de Gateway est déjà déclarée dans Manager.

  Défini le nom d’utilisateur que Manager doit utiliser pour se connecter en REST à Gateway lors de la création du partenaire. Par défaut : `admin`.

WAARP_GATEWAY_MANAGER_REST_PASSWORD

  Cette variable d’environnement est ignorée si l’instance de Gateway est déjà déclarée dans Manager.

  Défini le mot de passe que Manager doit utiliser pour se connecter en REST à Gateway lors de la création du partenaire. Par défaut : `admin`.

WAARP_GATEWAY_MANAGER_R66_TLS_CERT_PATH

  Cette variable d’environnement est ignorée si l’instance de Gateway est déjà déclarée dans Manager.

  Définit le chemin vers le certificat pour les communications R66 TLS de la Gateway défini dans Manager. Si aucun chemin n’est fourni avec cette variable d’environnement, un certificat sera généré lors du démarrage du container.

WAARP_GATEWAY_MANAGER_R66_TLS_KEY_PATH

  Cette variable d’environnement est ignorée si l’instance de Gateway est déjà déclarée dans Manager.

  Définit le chemin vers a clef privée pour les communications R66 TLS de la Gateway défini dans Manager. Si aucun chemin n’est fourni avec cette variable d’environnement, un certificat sera généré lors du démarrage du container.

## Codes de sortie

L’entrypoint du container peut s’arrêter avec les codes de sortie suivants :

Code | Nom | Description
--- | --- | ---
0 | Succès | Le container s’est démarré correctement et Waarp Gateway est en cours d’exécution.
1 | `ExitBadConfFile` | Erreur lors de la lecture ou de l’écriture du fichier de configuration.
2 | `ExitCodeBadConfValue` | Valeur de configuration invalide fournie via les variables d’environnement.
3 | `ExitManagerConfError` | Erreur lors de la synchronisation de la configuration avec Waarp Manager.
4 | `ExitCannotCreateCerts` | Erreur lors de la génération ou de la vérification des certificats.
5 | `ExitGatewayError` | Erreur lors du démarrage de Waarp Gateway.
6 | `ExitDBMigrateError` | Les migrations de la base de données ont échoué après avoir dépassé le délai configuré.
7 | `exitLogBackendError` | Erreur lors de l’initialisation du système de logging.

## Séquence de démarrage

Lors du lancement du container, plusieurs vérifications et opérations de configurations sont réalisées avant le lancement de Waarp Gateway.

Voici le processus suivi lors du démarrage :