lecoffre-front/docs/VARIABLES-ENVIRONNEMENT.md
Debian Dev4 96f8788c08
All checks were successful
build-and-push-ext / build_push (push) Successful in 1m26s
ci: docker_tag=ext - Update documentation and analysis
2025-09-19 17:03:54 +00:00

9.2 KiB

Variables d'Environnement - lecoffre-front

Vue d'ensemble

Ce document détaille toutes les variables d'environnement utilisées dans l'application lecoffre-front, leur utilisation et leur configuration.

Variables d'environnement supportées

1. Configuration API Backend

NEXT_PUBLIC_BACK_API_PROTOCOL

  • Description: Protocole utilisé pour communiquer avec l'API backend
  • Valeurs possibles: https://, http://
  • Exemple: https://
  • Utilisation: Construction des URLs d'API

NEXT_PUBLIC_BACK_API_HOST

  • Description: Nom d'hôte de l'API backend
  • Exemple: api.lecoffre.com, dev4.4nkweb.com
  • Utilisation: Construction des URLs d'API

NEXT_PUBLIC_BACK_API_PORT

  • Description: Port de l'API backend
  • Exemple: 443, 8080, 3001
  • Utilisation: Construction des URLs d'API
  • Note: Peut être vide pour les ports par défaut (80/443)

NEXT_PUBLIC_BACK_API_ROOT_URL

  • Description: Chemin racine de l'API
  • Exemple: /api, /
  • Utilisation: Construction des URLs d'API

NEXT_PUBLIC_BACK_API_VERSION

  • Description: Version de l'API
  • Exemple: v1, v2
  • Utilisation: Construction des URLs d'API

2. Configuration Frontend

NEXT_PUBLIC_FRONT_APP_HOST

  • Description: URL de base de l'application frontend
  • Exemple: https://app.lecoffre.com
  • Utilisation: Redirections et liens internes

NEXT_PUBLIC_FRONT_APP_PORT

  • Description: Port de l'application frontend
  • Exemple: 443, 3000
  • Utilisation: Construction des URLs frontend

3. Intégration IDNot (Authentification)

NEXT_PUBLIC_IDNOT_AUTHORIZE_ENDPOINT

  • Description: Point d'entrée pour l'autorisation OAuth
  • Exemple: /oauth/authorize
  • Utilisation: Flux d'authentification

NEXT_PUBLIC_IDNOT_CLIENT_ID

  • Description: Identifiant client OAuth
  • Exemple: lecoffre-client-id
  • Utilisation: Authentification OAuth

NEXT_PUBLIC_IDNOT_BASE_URL

  • Description: URL de base du service IDNot
  • Exemple: https://idnot.lecoffre.com
  • Utilisation: Authentification OAuth

NEXT_PUBLIC_IDNOT_REDIRECT_URI

  • Description: URI de redirection après authentification
  • Exemple: https://app.lecoffre.com/callback
  • Utilisation: Flux d'authentification

4. Intégration Docaposte

NEXT_PUBLIC_DOCAPOSTE_API_URL

  • Description: URL de l'API Docaposte
  • Exemple: https://api.docaposte.com
  • Utilisation: Services postaux

5. Intégration 4NK (Blockchain)

NEXT_PUBLIC_4NK_URL

  • Description: URL de base des services 4NK
  • Exemple: https://dev4.4nkweb.com
  • Utilisation: Services blockchain et signature

NEXT_PUBLIC_4NK_IFRAME_URL

  • Description: URL spécifique pour l'iframe 4NK
  • Exemple: https://dev4.4nkweb.com
  • Utilisation: Communication iframe
  • Note: Peut être différente de NEXT_PUBLIC_4NK_URL

6. Analytics et Monitoring

NEXT_PUBLIC_HOTJAR_SITE_ID

  • Description: Identifiant du site Hotjar
  • Exemple: 123456
  • Utilisation: Analytics et heatmaps

NEXT_PUBLIC_HOTJAR_VERSION

  • Description: Version de Hotjar
  • Exemple: 6
  • Utilisation: Analytics et heatmaps

7. Configuration système

NEXT_PUBLIC_API_URL

  • Description: URL générique de l'API
  • Exemple: https://api.lecoffre.com
  • Utilisation: Appels API génériques

NEXT_PUBLIC_DEFAULT_VALIDATOR_ID

  • Description: Identifiant du validateur par défaut
  • Exemple: 862406317a35064537ac959cb5d8bbdf4f849283b63db3ffa9904de2b3427c43:0
  • Utilisation: Validation des entités système
  • Valeur par défaut: Définie dans AppConstants.ts

NEXT_PUBLIC_DEFAULT_STORAGE_URLS

  • Description: URLs de stockage par défaut (séparées par des virgules)
  • Exemple: https://dev3.4nkweb.com/storage,https://backup.4nkweb.com/storage
  • Utilisation: Stockage des données
  • Valeur par défaut: https://dev3.4nkweb.com/storage

8. Variables d'environnement système

NEXTJS_APP_ENV_NAME

  • Description: Nom de l'environnement
  • Valeurs possibles: development, staging, preprod, production
  • Utilisation: Sélection de la configuration par environnement
  • Valeur par défaut: development

NODE_ENV

  • Description: Environnement Node.js
  • Valeurs possibles: development, production
  • Utilisation: Configuration Next.js

Configuration par environnement

Développement

NEXTJS_APP_ENV_NAME=development
NODE_ENV=development
NEXT_PUBLIC_BACK_API_PROTOCOL=http://
NEXT_PUBLIC_BACK_API_HOST=localhost
NEXT_PUBLIC_BACK_API_PORT=3001
NEXT_PUBLIC_4NK_URL=https://dev4.4nkweb.com

Staging

NEXTJS_APP_ENV_NAME=staging
NODE_ENV=production
NEXT_PUBLIC_BACK_API_PROTOCOL=https://
NEXT_PUBLIC_BACK_API_HOST=stg-api.lecoffre.com
NEXT_PUBLIC_BACK_API_PORT=443
NEXT_PUBLIC_4NK_URL=https://dev4.4nkweb.com

Production

NEXTJS_APP_ENV_NAME=production
NODE_ENV=production
NEXT_PUBLIC_BACK_API_PROTOCOL=https://
NEXT_PUBLIC_BACK_API_HOST=api.lecoffre.com
NEXT_PUBLIC_BACK_API_PORT=443
NEXT_PUBLIC_4NK_URL=https://4nk.lecoffre.com

Utilisation dans le code

Configuration Next.js

Les variables sont configurées dans next.config.js:

const nextConfig = {
  publicRuntimeConfig: {
    NEXT_PUBLIC_BACK_API_PROTOCOL: process.env.NEXT_PUBLIC_BACK_API_PROTOCOL,
    // ... autres variables
  },
  serverRuntimeConfig: {
    // Même configuration pour le serveur
  },
  env: {
    // Configuration pour le build
  }
};

Initialisation dans l'application

Les variables sont initialisées dans _app.tsx:

const { publicRuntimeConfig } = getConfig();

MyApp.getInitialProps = async () => {
  return {
    backApiProtocol: publicRuntimeConfig.NEXT_PUBLIC_BACK_API_PROTOCOL,
    // ... autres variables
  };
};

Utilisation dans les services

// DatabaseService.ts
private static buildBaseUrl(): string {
  return `${publicRuntimeConfig.NEXT_PUBLIC_BACK_API_PROTOCOL}${publicRuntimeConfig.NEXT_PUBLIC_BACK_API_HOST}:${publicRuntimeConfig.NEXT_PUBLIC_BACK_API_PORT}${publicRuntimeConfig.NEXT_PUBLIC_BACK_API_ROOT_URL}${publicRuntimeConfig.NEXT_PUBLIC_BACK_API_VERSION}`;
}

Déploiement Docker

Variables de build

ARG NEXT_PUBLIC_BACK_API_PROTOCOL
ARG NEXT_PUBLIC_BACK_API_HOST
# ... autres variables

Variables d'environnement runtime

ENV NEXT_PUBLIC_BACK_API_PROTOCOL=${NEXT_PUBLIC_BACK_API_PROTOCOL} \
    NEXT_PUBLIC_BACK_API_HOST=${NEXT_PUBLIC_BACK_API_HOST} \
    # ... autres variables

Exécution

docker run -e NEXT_PUBLIC_BACK_API_PROTOCOL=https:// \
           -e NEXT_PUBLIC_BACK_API_HOST=api.example.com \
           lecoffre/front:latest

Déploiement Kubernetes

Via Vault (recommandé)

annotations:
  vault.hashicorp.com/agent-inject: "true"
  vault.hashicorp.com/agent-inject-secret-envs: secret/data/lecoffre-front-stg/config/envs
  vault.hashicorp.com/agent-inject-template-envs: |
    {{ with secret "secret/data/lecoffre-front-stg/config/envs" }}
      {{ range $k, $v := .Data.data }}
          export {{ $k }}="{{ $v }}"
      {{ end }}
    {{ end }}

Via ConfigMap

apiVersion: v1
kind: ConfigMap
metadata:
  name: lecoffre-front-config
data:
  NEXT_PUBLIC_BACK_API_PROTOCOL: "https://"
  NEXT_PUBLIC_BACK_API_HOST: "api.example.com"
  # ... autres variables

Validation et tests

Vérification des variables requises

const requiredVars = [
  'NEXT_PUBLIC_BACK_API_PROTOCOL',
  'NEXT_PUBLIC_BACK_API_HOST',
  'NEXT_PUBLIC_BACK_API_PORT',
  'NEXT_PUBLIC_BACK_API_ROOT_URL',
  'NEXT_PUBLIC_BACK_API_VERSION'
];

for (const varName of requiredVars) {
  if (!publicRuntimeConfig[varName]) {
    throw new Error(`${varName} is not defined in environment variables`);
  }
}

Tests d'environnement

# Vérifier les variables définies
env | grep NEXT_PUBLIC_

# Tester la construction d'URL
curl -I $(echo $NEXT_PUBLIC_BACK_API_PROTOCOL$NEXT_PUBLIC_BACK_API_HOST:$NEXT_PUBLIC_BACK_API_PORT$NEXT_PUBLIC_BACK_API_ROOT_URL$NEXT_PUBLIC_BACK_API_VERSION/health)

Bonnes pratiques

  1. Sécurité: Ne jamais exposer de secrets dans les variables NEXT_PUBLIC_*
  2. Validation: Toujours valider la présence des variables requises
  3. Documentation: Maintenir la documentation des variables
  4. Tests: Tester avec différentes configurations d'environnement
  5. Fallbacks: Prévoir des valeurs par défaut quand possible

Dépannage

Variables non définies

# Vérifier les variables d'environnement
docker exec -it <container> env | grep NEXT_PUBLIC_

# Vérifier la configuration Vault
vault kv get secret/data/lecoffre-front-stg/config/envs

URLs malformées

# Tester la construction d'URL
node -e "
const config = {
  protocol: process.env.NEXT_PUBLIC_BACK_API_PROTOCOL,
  host: process.env.NEXT_PUBLIC_BACK_API_HOST,
  port: process.env.NEXT_PUBLIC_BACK_API_PORT,
  root: process.env.NEXT_PUBLIC_BACK_API_ROOT_URL,
  version: process.env.NEXT_PUBLIC_BACK_API_VERSION
};
console.log(\`\${config.protocol}\${config.host}:\${config.port}\${config.root}\${config.version}\`);
"

Documentation mise à jour le $(date) - Variables d'environnement lecoffre-front