All checks were successful
Dev CI / Backend — Lint (push) Successful in 10m32s
Dev CI / Frontend — Lint & Type-check (push) Successful in 11m20s
Dev CI / Backend — Unit Tests (push) Successful in 10m17s
Dev CI / Frontend — Unit Tests (push) Successful in 10m45s
Dev CI / Notify Failure (push) Has been skipped
CD Preprod / Backend — Lint (push) Successful in 10m24s
CD Preprod / Frontend — Lint & Type-check (push) Successful in 11m18s
CD Preprod / Backend — Unit Tests (push) Successful in 10m16s
CD Preprod / Frontend — Unit Tests (push) Successful in 10m45s
CD Preprod / Backend — Integration Tests (push) Successful in 9m56s
CD Preprod / Build Frontend (push) Successful in 56s
CD Preprod / Build Log Exporter (push) Successful in 32s
CD Preprod / Build Backend (push) Successful in 6m48s
CD Preprod / Deploy to Preprod (push) Successful in 23s
CD Preprod / Notify Failure (push) Has been skipped
CD Preprod / Notify Success (push) Successful in 2s
102 lines
4.4 KiB
YAML
102 lines
4.4 KiB
YAML
# =============================================================================
|
|
# Configuration NON SECRETE du backend
|
|
# =============================================================================
|
|
# Seules figurent ici les variables reellement lues par le code
|
|
# (verifie dans app.module.ts, security.config.ts et les adaptateurs).
|
|
# Les identifiants et cles vivent dans le Secret xpeditis-backend-secrets.
|
|
|
|
apiVersion: v1
|
|
kind: ConfigMap
|
|
metadata:
|
|
name: xpeditis-backend-config
|
|
namespace: xpeditis-prod
|
|
labels:
|
|
app.kubernetes.io/name: xpeditis-backend
|
|
app.kubernetes.io/part-of: xpeditis
|
|
data:
|
|
NODE_ENV: "production"
|
|
# Lu par les migrations (deployment-environment.ts) : bloque les comptes de
|
|
# test et neutralise ceux qui accepteraient encore leur mot de passe public.
|
|
APP_ENV: "production"
|
|
PORT: "4000"
|
|
API_PREFIX: "api/v1"
|
|
# Force la sortie pino en JSON : c'est ce que Promtail sait decouper en
|
|
# champs (level, context, reqId) pour Loki.
|
|
LOG_FORMAT: "json"
|
|
|
|
# --- URLs publiques --------------------------------------------------------
|
|
APP_URL: "https://app.xpeditis.com"
|
|
FRONTEND_URL: "https://app.xpeditis.com"
|
|
BACKEND_URL: "https://api.xpeditis.com"
|
|
|
|
# Liste blanche CORS. `credentials: true` interdit le joker `*` : chaque
|
|
# origine autorisee doit etre enumeree (security.config.ts).
|
|
CORS_ORIGIN: "https://app.xpeditis.com,https://www.xpeditis.com,https://xpeditis.com"
|
|
|
|
# --- Cookies d'authentification -------------------------------------------
|
|
# Le point initial rend le cookie valide pour tous les sous-domaines : l'API
|
|
# (api.xpeditis.com) le pose, le middleware Next.js (app.xpeditis.com) le lit.
|
|
# Sans cela, la connexion reussit mais l'utilisateur est renvoye sur /login.
|
|
COOKIE_DOMAIN: ".xpeditis.com"
|
|
# app et api partagent le meme site : 'lax' suffit et reste le plus sur.
|
|
# Ne passer a 'none' que si le front devient reellement cross-site (et 'none'
|
|
# impose Secure).
|
|
COOKIE_SAMESITE: "lax"
|
|
|
|
# --- PostgreSQL (db-01, reseau prive) --------------------------------------
|
|
DATABASE_HOST: "10.10.1.20"
|
|
DATABASE_PORT: "5432"
|
|
DATABASE_NAME: "xpeditis_prod"
|
|
# pg_hba n'accepte que des lignes `hostssl` : sans cette valeur a "true",
|
|
# le backend ne peut tout simplement pas se connecter.
|
|
DATABASE_SSL: "true"
|
|
DATABASE_LOGGING: "false"
|
|
|
|
# --- Redis (db-01, reseau prive) -------------------------------------------
|
|
REDIS_HOST: "10.10.1.20"
|
|
REDIS_PORT: "6379"
|
|
REDIS_DB: "0"
|
|
|
|
# --- JWT -------------------------------------------------------------------
|
|
JWT_ACCESS_EXPIRATION: "15m"
|
|
JWT_REFRESH_EXPIRATION: "7d"
|
|
|
|
# --- SMTP (Brevo) ----------------------------------------------------------
|
|
SMTP_HOST: "smtp-relay.brevo.com"
|
|
SMTP_PORT: "587"
|
|
SMTP_SECURE: "false"
|
|
SMTP_FROM: "noreply@xpeditis.com"
|
|
|
|
# --- Stockage objet (Hetzner Object Storage, compatible S3) ----------------
|
|
# Aucun changement de code : le SDK AWS parle a Hetzner via AWS_S3_ENDPOINT.
|
|
AWS_REGION: "fsn1"
|
|
AWS_S3_ENDPOINT: "https://fsn1.your-objectstorage.com"
|
|
AWS_S3_BUCKET: "xpeditis-prod-documents"
|
|
|
|
# --- Collecteur de logs applicatifs ---------------------------------------
|
|
LOG_EXPORTER_URL: "http://xpeditis-log-exporter:3200"
|
|
|
|
# --- Premier administrateur ------------------------------------------------
|
|
# Lu a CHAQUE demarrage des pods par AdminBootstrapService (et, sur une base
|
|
# neuve, par la migration 1756000000001-BootstrapAdminFromEnv). Le compte est
|
|
# garanti ADMIN et actif, et cree s'il n'existe pas ; les replicas qui
|
|
# demarrent ensemble sont serialises par un verrou PostgreSQL.
|
|
#
|
|
# Mot de passe : BOOTSTRAP_ADMIN_PASSWORD_HASH dans le Secret (recommande au
|
|
# premier deploiement). Sans hash, le compte n'a PAS de mot de passe
|
|
# utilisable : « mot de passe oublie » (SMTP requis) ou, sans SMTP :
|
|
# kubectl -n xpeditis-prod exec -it deploy/xpeditis-backend -- node admin-password.js ops@xpeditis.com
|
|
#
|
|
# Cette adresse doit etre RELEVABLE.
|
|
BOOTSTRAP_ADMIN_EMAIL: "ops@xpeditis.com"
|
|
BOOTSTRAP_ADMIN_FIRST_NAME: "Admin"
|
|
BOOTSTRAP_ADMIN_LAST_NAME: "Xpeditis"
|
|
|
|
# Organisation de rattachement (users.organization_id est NOT NULL).
|
|
# Creee si elle n'existe pas ; a completer ensuite dans l'interface.
|
|
BOOTSTRAP_ADMIN_ORG_NAME: "Xpeditis"
|
|
BOOTSTRAP_ADMIN_ORG_STREET: "A completer"
|
|
BOOTSTRAP_ADMIN_ORG_CITY: "A completer"
|
|
BOOTSTRAP_ADMIN_ORG_POSTAL_CODE: "00000"
|
|
BOOTSTRAP_ADMIN_ORG_COUNTRY: "FR"
|