Aller au contenu
Q
QuoteNode

Operations

Reference des variables d'environnement

Reference complete des variables d'environnement QuoteNode en production, developpement, Docker Compose, backup workers et outillage frontend.

Reference des variables d’environnement

Cette page consolide les variables d’environnement actuellement utilisees dans le projet QuoteNode.

La source de verite principale reste les templates du depot applicatif :

  • infra/.env.prod.example
  • infra/.env.dev.example
  • infra/.env.dev-sid
  • infra/docker-compose.*.yml

Utilisez cette page comme catalogue oriente operations. Pour une installation minimale, voir le Guide d’installation. Pour la topologie de deploiement, voir Options de deploiement.

Comment lire cette reference

  • Prod signifie qu’une variable appartient a un fichier .env de production.
  • Dev signifie environnement local de developpement ou stack de demonstration.
  • Compose signifie wiring cote hote Docker Compose plutot que l’application elle-meme.
  • Les valeurs par defaut vides veulent generalement dire “renseignez-la explicitement si vous avez besoin de cette fonctionnalite”.

Variables Compose et stack locale

Ces variables structurent l’environnement Docker Compose local et le proxy de dev frontend.

Variable Scope Utilite Valeur typique
COMPOSE_PROJECT_NAME Dev / Compose Evite les collisions de noms de conteneurs entre plusieurs stacks locales. quotenode-dev, quotenode-dev-sid
POSTGRES_PORT Dev / Compose Port hote mappe vers PostgreSQL. 5433, 5434
PG_JIT Dev / Compose Compilation JIT de PostgreSQL. Désactivée par défaut — elle aide rarement cette charge OLTP. Mettre on pour activer. off
MAILPIT_PORT Dev / Compose Port hote pour l’interface Mailpit. 8025, 8026
BACKEND_PORT Dev / Compose Port hote pour l’API backend. 8091, 8092
FRONTEND_PORT Dev / Compose Port hote pour le frontend. 5174, 5175
VITE_PUBLIC_API_BASE Dev / Frontend URL API visible navigateur utilisee par le frontend Vite local. http://localhost:8091, http://localhost:8092
APP_VERSION Prod / Dev / Compose Tag d’image Docker selectionne par Compose. latest, 1.0.0
APP_CHANNEL Prod / Dev / Compose Canal de release intégré aux métadonnées de build et aux libellés de l’UI. alpha, stable
VITE_RELEASE_CHECK_ENABLED Prod / Dev / Frontend Active la vérification de disponibilité des releases upstream (admin uniquement). true, false
VITE_RELEASE_MANIFEST_URL Prod / Dev / Frontend URL du manifeste JSON public utilisé pour les vérifications de releases. https://quotenode.dev/releases/latest.json
PROXY_MODE Prod / Dev / Compose Choisit si Caddy tourne dans la stack (internal) ou si un reverse proxy externe est utilise (external). internal, external
DOMAIN Prod / Compose Domaine public utilise par Caddy et les URLs publiques quand le mode proxy interne est actif. quotenode.example.com
SECURITY_TRUSTED_PROXIES Prod / Dev / Compose Généralement vide — l’IP du client est détectée automatiquement derrière des proxys internes (plages privées/loopback) et des CDN comme Cloudflare (via CF-Connecting-IP). Les en-têtes de transfert d’un pair direct (non interne) sont ignorés. À définir uniquement pour un proxy inhabituel dont le pair de transport est une adresse publique. vide, 203.0.113.5/32

Base de donnees et runtime principal

Variable Scope Utilite Valeur typique
DB_URL Prod / Dev Chaine JDBC pour PostgreSQL. jdbc:postgresql://postgres:5432/quotenode
DB_USERNAME Prod / Dev Utilisateur de base. quotenode, app
DB_PASSWORD Prod / Dev Mot de passe de base. aleatoire 32+ caracteres en prod
DB_NAME Prod / Dev / Compose Nom de base utilise par l’app et par Compose. quotenode, app
DB_AUTO_MIGRATE Prod / Dev Migration automatique de version majeure de PostgreSQL au démarrage (utilisée par stack-up.sh). Désactivée par défaut ; si true, un volume de données plus ancien est sauvegardé puis migré avant le démarrage de la stack. false
SPRING_PROFILES_ACTIVE Prod / Dev Active le profil Spring. prod, dev
CORS_ALLOWED_ORIGINS Prod / Dev Origines navigateur autorisees pour l’API. Evitez * en production. https://votredomaine.com
LOG_LEVEL Prod / Dev Niveau de verbosite de base des logs applicatifs. ERROR, INFO, DEBUG

Rotation des logs Docker et diagnostics de support

Variable Scope Utilite Valeur typique
DOCKER_LOG_MAX_SIZE Prod / Compose Taille max d’un fichier de log conteneur avant rotation. 10m
DOCKER_LOG_MAX_FILE Prod / Compose Nombre de fichiers de log rotates a conserver. 5
SUPPORT_LOGS_BUFFER_SIZE Prod Taille du buffer d’aperçu des logs dans l’application. 4000
SUPPORT_LOGS_PREVIEW_RATE_LIMIT_PER_MINUTE Prod Rate limit des requetes d’aperçu de logs support. 30
SUPPORT_LOGS_LOG_LEVEL_DEFAULT_TTL_MINUTES Prod Timeout de retour automatique au niveau de log standard. 15
SUPPORT_LOGS_LOG_LEVEL_MAX_TTL_MINUTES Prod Fenetre max autorisee pour une elevation temporaire du niveau de log. 30
SUPPORT_LOGS_LOG_LEVEL_ALLOWED_SCOPES Prod Scopes de packages pouvant etre temporairement eleves pour diagnostic. dev.quotenode,...

Authentification et securite de session

Variable Scope Utilite Valeur typique
DB_ENCRYPTION_KEY Prod / Dev Cle principale de chiffrement applicatif pour les donnees sensibles. 64 caracteres hex en prod
TIMING_TOKEN_SECRET Prod / Dev Secret HMAC pour la protection anti-bot basee sur le timing. 32+ caracteres aleatoires
PUBLIC_LINK_PASSWORD_SESSION_SECRET Prod / Dev Secret de session pour les liens publics proteges par mot de passe. 32+ caracteres aleatoires
AUTH_PASSWORD_MIN_LENGTH Prod / Dev Longueur minimale des mots de passe. 12 en prod, 8 en dev
AUTH_PASSWORD_COMPLEXITY_LEVEL Prod / Dev Niveau de complexite impose. 2 en prod, 1 en dev
AUTH_SESSION_IDLE_TIMEOUT_MIN Prod / Dev Timeout d’inactivite de session. 30, 480
SECURITY_SESSION_ABSOLUTE_TIMEOUT_H Prod / Dev Duree max absolue d’une session. 12, 24
SECURITY_MAX_FAILED_LOGINS_SOFT Prod / Dev Seuil d’echecs avant defense douce. 5, 10
SECURITY_MAX_FAILED_LOGINS_TEMP_LOCK Prod / Dev Seuil d’echecs avant verrouillage temporaire. 10, 20
SECURITY_MAX_FAILED_LOGINS_HARD_LOCK Prod / Dev Seuil d’echecs avant hard lockout. 20, 50
SECURITY_TEMP_LOCK_MINUTES Prod / Dev Duree du verrouillage temporaire. 30, 5
FEATURE_2FA_ENABLED Prod / Dev Master switch pour les flux 2FA. true, false
SECURITY_REQUIRE_2FA_ROLES Prod / Dev Roles devant obligatoirement enroler la 2FA. ADMIN
SECURITY_BOT_DETECTION_ENABLED Prod / Dev Active la couche de detection de bots. true, false
SECURITY_BOT_SCORE_WARN_THRESHOLD Prod / Dev Seuil de score bot pour action warning-only. 30
SECURITY_BOT_SCORE_BLOCK_THRESHOLD Prod / Dev Seuil de score bot pour blocage. 70
SECURITY_IP_WHITELIST Prod / Dev Liste blanche d’IP imposée par l’opérateur (IP/CIDR littéraux séparés par des virgules). Lorsqu’elle est activée, la liste blanche protège toute la surface d’administration — la connexion, le défi 2FA et chaque route d’administration authentifiée — ne laissant accessibles que les endpoints de santé/infrastructure et publics destinés aux clients. Lorsqu’elle est définie, elle prévaut sur la liste blanche du tenant dans l’application et est en lecture seule dans l’interface ; une liste opérateur est appliquée au démarrage sans retour arrière automatique, vérifiez donc que votre propre adresse est couverte. Vide = le réglage du tenant (le cas échéant) s’applique. Résout les clients via SECURITY_TRUSTED_PROXIES. vide, 203.0.113.10,198.51.100.0/24
SECURITY_IP_WHITELIST_FORCE_DISABLE Runtime override Dérogation opérateur d’urgence qui désactive l’application de la whitelist IP stockée (vérifiée avant toute analyse de la liste, elle récupère donc aussi d’une liste stockée invalide — et, comme la whitelist protège désormais la connexion, elle restaure la possibilité de se connecter). Redémarrage requis ; ENV uniquement, jamais depuis l’interface. Désactive uniquement la whitelist IP — pas GeoIP, la détection de bots ou le rate limiting. false
SECURITY_IP_WHITELIST_CONFIRMATION_WINDOW_SECONDS Prod / Dev Durée pendant laquelle une activation/un resserrement de la whitelist dans l’application reste en attente de reconfirmation avant de revenir automatiquement à la liste précédente (sécurité anti-verrouillage). La session en cours d’édition confirme automatiquement lorsque son adresse actuelle est couverte. 120

CRM, fichiers, imports et media produit

Variable Scope Utilite Valeur typique
CRM_DEDUP_NAME_SIMILARITY_THRESHOLD Prod / Dev Seuil pg_trgm pour les avertissements de doublons de societe. 0.8
CRM_DEDUP_EMAIL_DOMAIN_WARN Prod / Dev Alerte lorsque les domaines email business matchent des enregistrements existants. true
CRM_ATTACHMENT_MAX_SIZE_MB Prod / Dev Taille max d’une piece jointe CRM. 25, 10
CRM_ATTACHMENT_ALLOWED_TYPES Prod / Dev Extensions autorisees pour les pieces jointes CRM. pdf,doc,docx,...
CSV_IMPORT_MAX_ROWS Prod / Dev Limite de lignes pour les imports CSV (CRM). 5000
APP_PRODUCT_IMPORT_MAX_ROWS Prod / Dev Limite de lignes pour les imports de produits (CSV/XLSX). 50000
STORAGE_PATH Prod / Dev Repertoire racine des fichiers envoyes. /data/uploads, ./data/uploads
PIM_MEDIA_MAX_SIZE_MB Prod / Dev Taille max d’une image produit. 3, 5
PIM_MEDIA_MAX_PER_PRODUCT Prod / Dev Nombre max de medias rattaches a un produit. 5, 10
PIM_MEDIA_THUMBNAIL_WIDTH Prod / Dev Largeur des miniatures lors du traitement image. 300
PIM_MEDIA_ALLOWED_TYPES Prod / Dev Extensions autorisees pour les medias produit. jpg,jpeg,png,webp,svg
PIM_MEDIA_MAX_MEGAPIXELS Prod / Dev Rejette les images dont les dimensions en pixels depassent ce nombre de megapixels — verifie depuis l’en-tete avant tout decodage complet (garde-fou memoire contre les bombes de decompression). 40
PIM_MEDIA_OPTIMIZE_ENABLED Prod / Dev Redimensionne et re-encode l’original stocke a l’upload. false conserve les originaux tels quels. true
PIM_MEDIA_OPTIMIZE_MAX_DIMENSION Prod / Dev Limite du plus grand cote (px) pour l’original stocke quand l’optimisation est activee (les offres utilisent toujours une miniature de 300 px). 2560
PIM_MEDIA_OPTIMIZE_QUALITY Prod / Dev Qualite de re-encodage JPEG (0.01.0) lors de l’optimisation des images. 0.85
IMPORT_ZIP_MAX_SIZE_MB Prod / Dev Taille max d’un ZIP d’images. 100
IMPORT_ZIP_MAX_IMAGES Prod / Dev Nombre max d’images dans un ZIP d’import. 1000
IMPORT_IMAGE_MAX_SIZE_MB Prod / Dev Taille max d’une image dans les imports ZIP. 5
IMPORT_IMAGE_FUZZY_THRESHOLD Prod / Dev Seuil de matching flou nom de fichier → produit. 0.82
MULTIPART_MAX_FILE_SIZE Prod / Dev Plafond global pour un fichier unique — l’enveloppe d’upload. Les limites par fonction ci-dessus sont appliquees separement et sont plus strictes. Dimensionne pour le plus gros upload legitime : une archive ZIP d’images. 200MB
MULTIPART_MAX_REQUEST_SIZE Prod / Dev Plafond global pour une requete multipart entiere, ex. upload multi-fichiers. 220MB
MULTIPART_FILE_SIZE_THRESHOLD Prod / Dev Les uploads plus gros sont ecrits dans un fichier temporaire plutot qu’en memoire — hors du tas JVM. 2MB

Shipping, FX et valeurs par defaut des offres

Variable Scope Utilite Valeur typique
SHIPPING_DEFAULT_VOLUMETRIC_DIVISOR Prod / Dev Diviseur de poids volumetrique pour les calculs de transport. 4000
SHIPPING_OVERRIDE_REQUIRES_REASON Prod / Dev Oblige a justifier une surcharge manuelle de transport. true
FX_PROVIDER Prod / Dev Source des taux FX. NBP, MOCK, ECB, CUSTOM
FX_PROVIDER_URL Prod / Dev Override d’URL de provider custom. vide sauf CUSTOM
FX_REFRESH_INTERVAL_MIN Prod / Dev Frequence de refresh automatique des taux FX. 60, 0
FX_DEFAULT_MARGIN_PERCENT Prod / Dev Marge par defaut appliquee sur les taux fournisseur. 0
FX_DEVIATION_WARN_PERCENT Prod / Dev Seuil d’alerte pour les taux FX ajustes manuellement. 3
FX_DEVIATION_BLOCK_PERCENT Prod / Dev Seuil de blocage pour les taux FX ajustes manuellement. 8
OFFER_NUMBER_PREFIX Prod / Dev Prefixe utilise dans la numerotation des offres. OF

Email, liens publics et notifications

Variable Scope Utilite Valeur typique
SMTP_HOST Prod / Dev Hostname SMTP utilise pour l’envoi d’offres et de notifications. hostname fournisseur, localhost
SMTP_PORT Prod / Dev Port SMTP. 587, 1025, 1026
SMTP_USERNAME Prod / Dev Nom d’utilisateur SMTP. compte fournisseur
SMTP_PASSWORD Prod / Dev Mot de passe SMTP. secret fournisseur
SMTP_AUTH Prod / Dev Active l’authentification SMTP. true, false
SMTP_STARTTLS Prod / Dev Active la negociation STARTTLS. true, false
PUBLIC_LINK_TOKEN_BYTES Prod / Dev Entropie utilisee pour les tokens de liens publics. 32
PUBLIC_LINK_DEFAULT_EXPIRY_DAYS Prod / Dev Fenetre de validite par defaut des liens publics. 0 pour aucune expiration
PUBLIC_RATE_LIMIT_OPEN_PER_HOUR Prod / Dev Limite horaire d’ouverture des endpoints d’offre publique. 60, 999
PUBLIC_RATE_LIMIT_ACTION_PER_HOUR Prod / Dev Limite horaire d’actions publiques (accept / reject). 5, 999
TRACKING_IP_ANONYMIZE Prod / Dev Active l’anonymisation IP du tracking. false
TRACKING_IP_ANONYMIZE_AFTER_DAYS Prod / Dev Delai avant anonymisation des IP de tracking. 0
TRACKING_RETENTION_DAYS Prod / Dev Duree de retention des donnees de tracking des liens publics. 365
CLIENT_CONFIRM_EMAIL_ENABLED Prod / Dev Envoie un email de confirmation au client apres acceptation. false
NOTIFICATIONS_ENABLED Prod / Dev Active le sous-systeme de notifications. true
NOTIFICATIONS_EMAIL_ENABLED Prod / Dev Active l’envoi email des notifications. true, false
NOTIFICATIONS_PUBLIC_PREFERENCES_URL Prod URL publique de gestion des preferences de notification. https://votredomaine.com/notifications/preferences
NOTIFICATIONS_PREFERENCE_TOKEN_TTL_DAYS Prod Duree de validite des tokens de preferences de notification. 30
NOTIFICATIONS_OFFER_EXPIRY_WARN_DAYS Prod / Dev Planning des rappels avant expiration des offres. 7,2
NOTIFICATIONS_LICENSE_EXPIRY_WARN_DAYS Prod / Dev Planning des rappels avant expiration des licences. 30,14,7,1
REMINDERS_JOB_INTERVAL_MINUTES Prod / Dev Frequence de polling des jobs de rappel. 5

Generation PDF

Variable Scope Utilite Valeur typique
PDF_ENABLED Prod / Dev Active la generation PDF. true, false
PDF_GOTENBERG_URL Prod / Dev URL interne du service Gotenberg. http://gotenberg:3000
PDF_SYNC_TIMEOUT_MS Prod / Dev Timeout des requetes PDF synchrones. 10000, 5000
PDF_SYNC_MAX_ITEMS Prod / Dev Nombre max de lignes encore traitees en mode synchrone. 50
PDF_STORAGE_PATH Prod / Dev Chemin filesystem ou stocker les PDF generes. /data/pdfs, ./data/pdfs
PDF_RETENTION_DAYS Prod / Dev Duree de retention des PDF generes. 365
PDF_RETRY_BACKOFF_SECONDS Prod / Dev Planning de retry pour les jobs PDF asynchrones. 30,120,600
PDF_WORKER_CONCURRENCY Prod / Dev Concurrence des workers PDF. 2
PDF_WORKER_POLL_INTERVAL_MS Prod / Dev Intervalle de polling des jobs PDF. 2000

Licences, rapports et maintenance

Variable Scope Utilite Valeur typique
LICENSE_SKIP_SIGNATURE_CHECK Prod / Dev Bypass de validation de signature de licence. A ne jamais activer en prod. false, true
LICENSE_EXPIRY_CHECK_INTERVAL_H Prod / Dev Frequence de relecture des expirations de licence. 24
REPORTS_DEFAULT_PERIOD_DAYS Prod / Dev Plage de dates par defaut pour les rapports. 30
REPORTS_EXPORT_MAX_ROWS Prod / Dev Limite de lignes pour les exports de rapport. 10000

Backups, GeoIP et operations de confidentialite

Variable Scope Utilite Valeur typique
BACKUP_ENABLED Prod / Dev Active les backups planifies. true, false
BACKUP_CRON Prod / Dev Planification cron des sauvegardes. 0 0 2 * * *
BACKUP_RETENTION_DAILY Prod / Dev Nombre de backups quotidiens conserves. 7
BACKUP_RETENTION_WEEKLY Prod / Dev Nombre de backups hebdomadaires conserves. 4
BACKUP_RETENTION_MONTHLY Prod / Dev Nombre de backups mensuels conserves. 12
BACKUP_LOCAL_DIR Runtime / Compose Repertoire local utilise par les scripts de backup et les conteneurs backup-worker. /app/data/backups
BACKUP_ARCHIVE_ENCRYPTION_MODE Prod / Dev Chiffrement d’archive : AGE_RECIPIENT (recommandé) ou NONE. AGE_RECIPIENT
BACKUP_AGE_RECIPIENT Prod / Dev Destinataire public age (age1...) pour les archives chiffrées. age1...
BACKUP_DATABASE_PAYLOAD_MODE Prod / Dev Mode base de données : APP_ENCRYPTED (défaut) ou PII_DECRYPTED. APP_ENCRYPTED
JOBS_MODE Prod / Dev / Compose Quels jobs planifiés le planificateur JVM exécute : all (web + sauvegardes dans un seul conteneur), web (web uniquement — à associer à un worker backup-only), backup-only (worker de sauvegarde dédié). all
BACKUP_RUNTIME_PROFILE Prod / Dev Étiquette de profil d’exécution enregistrée dans les logs/manifestes de sauvegarde : WORKER, WEB_MAINTENANCE, ONE_SHOT, OFFLINE_MAINTENANCE. Associez WEB_MAINTENANCE à JOBS_MODE=all (sans worker séparé) ; associez WORKER à JOBS_MODE=web + un worker backup-only. WORKER
BACKUP_VERIFY_MODE Prod / Dev Vérification post-sauvegarde : off, archive, sandbox. off
BACKUP_ALLOW_UNENCRYPTED_LOCAL_BACKUP Prod / Dev Autorise explicitement une sauvegarde locale non chiffrée. false
BACKUP_RCLONE_REMOTE Prod / Dev Destination rclone pour les backups offsite. s3:bucket/path
BACKUP_OFFLINE_NOTICE_SECONDS Prod Délai de grâce avant l’arrêt des services en maintenance offline. 300
BACKUP_MAINTENANCE_PAGE_ENABLED Prod Sert une page de maintenance statique pendant la sauvegarde offline. false
BACKUP_DOWNLOAD_GRANT_TTL_SECONDS Prod / Dev TTL des autorisations de téléchargement de sauvegarde à usage unique. 120
GEOIP_ENABLED Prod / Dev Interrupteur d’application par pays uniquement (également l’interrupteur de secours). La base se charge et se met à jour indépendamment — voir GEOIP_AUTO_UPDATE. false
GEOIP_DB_PATH Prod / Dev Chemin vers la base GeoIP (téléchargée automatiquement au démarrage ; DB-IP sans clé par défaut, MaxMind via MAXMIND_*). /app/data/geoip/...
SECURITY_GEOIP_ALLOWED_COUNTRIES Prod / Dev Allowlist ISO de pays pour les controles GeoIP. vide ou PL,DE,CZ
MAXMIND_ACCOUNT_ID Prod Compte MaxMind pour les telechargements GeoLite. account ID
MAXMIND_LICENSE_KEY Prod Cle de licence MaxMind. secret
GEOIP_EDITION_ID Prod Identifiant d’edition MaxMind. GeoLite2-Country
GDPR_ANONYMIZE_AUTO_AFTER_DAYS Prod / Dev Horizon d’anonymisation automatique des workflows de confidentialite. 0

Recommandations pratiques

  • Partez du template de production pour les vrais deploiements et du template de developpement pour le travail local.
  • Traitez DB_ENCRYPTION_KEY, TIMING_TOKEN_SECRET, PUBLIC_LINK_PASSWORD_SESSION_SECRET et les credentials SMTP comme des secrets devant etre sauvegardes de maniere sure.
  • Gardez les ports purement Compose et les variables frontend hors des .env de production sauf si votre modele de deploiement en a explicitement besoin.
  • Si vous cherchez la plus petite configuration de production viable, le Guide d’installation est volontairement plus court que cette reference.

Last reviewed: Recently