Aller au contenu

Variables d'environnement

Cette page recense toutes les variables d'environnement utilisées par PerfShop. La référence est le fichier .env.example à la racine du dépôt, complétée par les variables injectées par docker-compose.yml dans certains services.

Source

.env.example, docker-compose.yml, docker-compose.desktop.yml, docker-compose.build.yml

Philosophie

PerfShop suit le principe 12-factor app : toute la configuration passe par des variables d'environnement. Aucune valeur sensible (mot de passe, clé, token) n'est en dur dans le code ou dans les images. Le fichier .env (copié depuis .env.example au premier déploiement) centralise tout et n'est jamais committé.

Les variables sont regroupées ci-dessous par thème.

Version et identité instance

Variable Type Défaut Rôle
PERFSHOP_VERSION string 0.1.0-beta Version affichée dans les UI et les logs
PERFSHOP_INSTANCE_UUID string (vide) UUID optionnel d'identification unique de l'instance
PERFSHOP_IO_URL url https://perfshop.io URL du portail officiel — utilisée pour les liens d'achat de licence
HOST_IP string localhost IP de l'hôte utilisée par la welcome page en mode ip

Langue

Variable Type Défaut Rôle
PERFSHOP_LANG fr, en, … fr Langue active de toute la stack (voir Vue d'ensemble i18n)
PERFSHOP_UI_LOCALE locale fr-FR Locale dérivée utilisée pour le formatage de dates dans certaines UI

URLs publiques

Ce sont les URLs que le navigateur utilise pour appeler les APIs. En mode ip (Docker Desktop, Unix local), les valeurs par défaut pointent sur localhost avec les ports exposés. En mode dns (NAS, production), elles sont remplacées par les vrais sous-domaines HTTPS.

Variable Défaut Service cible
PUBLIC_API_URL http://localhost:9080 Backend Spring Boot
PUBLIC_FRONTEND_URL http://localhost:9091 Frontend shop React
PUBLIC_MONITORING_URL http://localhost:3001 Monitoring HTML dashboard
PUBLIC_GRAFANA_URL http://localhost:3002 Grafana
PUBLIC_CHAOS_URL http://localhost:3003 chaos-admin (panneau + page étudiant)
PUBLIC_ADMIN_URL http://localhost:3004 Backoffice admin
PUBLIC_DOCS_URL http://localhost:9087 Documentation MkDocs
PUBLIC_JMETER_URL http://localhost:3005 JMeter UI
PUBLIC_SQUASH_URL http://localhost:9086 Squash TM
PUBLIC_SELENIUM_VNC_URL http://localhost:7900 Visionneur VNC Selenium
PUBLIC_FILES_URL http://localhost:3007 Filebrowser
PUBLIC_FORGEJO_URL http://localhost:3009 Forgejo (Git auto-hébergé)
PUBLIC_SCRIPTS_URL http://localhost:3008 Scripts UI
PUBLIC_OPENSEARCH_URL http://localhost:5601 OpenSearch Dashboards
Variable Défaut Rôle
PERFSHOP_FRONTEND_INTERNAL http://perfshop-frontend URL interne (réseau Docker) du frontend, utilisée par les scrapers et health checks

Ports exposés sur la machine hôte

Ces variables contrôlent uniquement les mappings de port Docker Compose vers l'hôte. Changer ces valeurs n'a pas d'impact sur les communications internes entre conteneurs.

Variable Défaut Service
BACKEND_HTTP_PORT 9080 Backend Spring Boot
BACKEND_METRICS_PORT 9090 Management / actuator (heap dump) — interne Docker
FRONTEND_HTTP_PORT 9091 Frontend Nginx
MONITORING_HTTP_PORT 3001 Monitoring Node.js
GRAFANA_HTTP_PORT 3002 Grafana
PROMETHEUS_HTTP_PORT 9092 Prometheus
CHAOS_HTTP_PORT 3003 chaos-admin
ADMIN_HTTP_PORT 3004 Backoffice admin
LOKI_HTTP_PORT 19100 Loki — ⚠️ port 3100 réservé par Hyper-V/WSL2 sur Windows
DOCS_HTTP_PORT 9087 Documentation MkDocs
TEMPO_HTTP_PORT 19200 Tempo query — ⚠️ port 3200 réservé par Hyper-V/WSL2 sur Windows
TEMPO_OTLP_GRPC_PORT 4317 Tempo OTLP gRPC ingress
TEMPO_OTLP_HTTP_PORT 4318 Tempo OTLP HTTP ingress
PYROSCOPE_HTTP_PORT 4040 Pyroscope
SQUASH_HTTP_PORT 9086 Squash TM (règle Docker Desktop : pas de 80xx)
SQUASH_DB_PORT 5433 PostgreSQL Squash
SELENIUM_HTTP_PORT 4444 Selenium Grid Hub
SELENIUM_VNC_PORT 7900 Visionneur VNC noVNC
FILEBROWSER_PORT 3007 Filebrowser
FORGEJO_HTTP_PORT 3009 Forgejo
SCRIPTS_UI_PORT 3008 Scripts UI
JMETER_UI_PORT 3005 JMeter UI
JMETER_PROMETHEUS_PORT 9270 Exporteur Prometheus JMeter
OPENSEARCH_HTTP_PORT 5601 OpenSearch Dashboards
OPENSEARCH_API_PORT 9201 OpenSearch API REST

Règle Docker Desktop

Aucun port en plage 80xx n'est utilisé — Docker Desktop (Windows/macOS) réserve ces ports pour son usage interne et peut générer des conflits. C'est pourquoi Squash TM est sur 9086 (et non 8086) et le backend sur 9080 (et non 8080).

Session HTTP

Variable Type Défaut Rôle
SESSION_COOKIE_SECURE boolean false Flag Secure sur le cookie de session — mettre à true en HTTPS
SESSION_COOKIE_SAME_SITE lax/strict/none lax Politique SameSite du cookie
SESSION_SECRET string perfshop-dev-secret Clé secrète des sessions Express (scripts-ui) — à changer en production

Administration

Variable Défaut Rôle
ADMIN_EMAIL admin@perfshop.fr Email du superadmin créé au bootstrap
ADMIN_PASSWORD perfshop Mot de passe du superadmin — voir Authentification admin

Le mot de passe par défaut doit être changé pour toute exposition publique, soit via cette variable puis redémarrage, soit via la page « Mon compte » du panneau formateur.

CORS

Variable Défaut Rôle
CORS_ALLOWED_ORIGINS http://localhost:9091,http://localhost:3001,http://localhost:3003,http://localhost:3004 Liste d'origines séparées par des virgules autorisées à appeler les APIs backend

Pour ajouter le dev server Vite en développement, ajoutez http://localhost:5173 à cette liste.

Base de données PerfShop (MySQL)

Variable Défaut Rôle
DB_ROOT_PASSWORD rootpass123 Mot de passe root du conteneur MySQL
DB_PASSWORD perfshop123 Mot de passe de l'utilisateur perfshop
DB_PORT 19306 Port MySQL exposé sur le host — ⚠️ port 3306 réservé par Hyper-V/WSL2 sur Windows

Le nom de la base (perfshop) et de l'utilisateur (perfshop) sont figés dans docker-compose.yml et dans application.yml du backend.

Base Squash TM (PostgreSQL)

Squash TM utilise PostgreSQL (et non MySQL comme le reste de PerfShop).

Variable Défaut Rôle
SQUASH_DB_PASSWORD squash123 Mot de passe PostgreSQL pour Squash
SQUASH_ADMIN_LOGIN admin Login admin de l'interface Squash TM
SQUASH_ADMIN_PASSWORD admin Mot de passe admin Squash TM
SQUASH_JWT_SECRET (token long) Clé JWT signée pour l'API Squash automation
SQUASH_PUBLIC_URL http://localhost:9086/squash URL publique visible depuis le navigateur
SQUASH_ADMIN_EMAIL admin@perfshop.fr Email admin seedé
SQUASH_AUTOM_TOKEN (token JWT RS512) Token JWT signé RS512 utilisé par Squash Orchestrator pour s'authentifier auprès de Squash TM

Voir Squash TM pour le détail de la stack.

Grafana

Variable Défaut Rôle
GF_SECURITY_ADMIN_USER admin Login admin Grafana
GF_SECURITY_ADMIN_PASSWORD perfshop Mot de passe admin Grafana

Ces variables sont préfixées GF_ parce qu'elles sont directement consommées par Grafana dans son format natif de configuration par env.

JMeter

Variable Défaut Rôle
JMETER_IMAGE justb4/jmeter:latest Image Docker utilisée pour exécuter les plans JMeter
DOCKER_NETWORK perfshop_perfshop-network Réseau Docker partagé avec les conteneurs JMeter dynamiques
JMETER_MAX_RAM 512 RAM max (en Mo) allouée à chaque exécution JMeter
JMETER_TARGET_INTERNAL http://perfshop-app:8080 URL interne du backend, utilisée par défaut dans les plans
JMETER_TARGET_EXTERNAL ${PUBLIC_API_URL} URL externe (pour tests depuis l'extérieur du réseau Docker)
JMETER_TARGET_FRONTEND ${PUBLIC_FRONTEND_URL} URL du frontend pour les tests end-to-end
PERFSHOP_API_INTERNAL http://perfshop-app:8080 Alias de l'URL backend interne, utilisé par plusieurs composants (monitoring, test-runner)

Stack QA — test runner

Variable Défaut Rôle
RF_RUNNER_SELENIUM_URL http://perfshop-selenium:4444/wd/hub URL du hub Selenium utilisée par le Robot Framework runner
PERFSHOP_FRONTEND_INTERNAL http://perfshop-frontend URL interne du frontend pour les tests Robot/pytest

Forgejo — Git auto-hébergé

Variable Défaut Rôle
FORGEJO_DOMAIN localhost Domaine déclaré dans la configuration Forgejo
FORGEJO_ADMIN_USER forgejo-admin Compte admin créé au seed
FORGEJO_ADMIN_PASSWORD perfshop Mot de passe admin Forgejo
FORGEJO_CI_USER perfshop-ci Compte dédié à l'intégration continue
FORGEJO_CI_PASSWORD perfshop Mot de passe du compte CI
FORGEJO_CI_EMAIL ci@perfshop.fr Email du compte CI
FORGEJO_REPO perfshop-tests Nom du dépôt seedé au démarrage

Voir Forgejo.

OpenSearch

Variable Défaut Rôle
OPENSEARCH_ADMIN_USER admin Login admin OpenSearch Dashboards
OPENSEARCH_ADMIN_PASSWORD perfshop Mot de passe admin OpenSearch
OPENSEARCH_JAVA_OPTS -Xms512m -Xmx512m Heap JVM OpenSearch — 512m recommandé en dev, 1g en prod

Voir OpenSearch et Vector.

Licence PerfShop

Variable Défaut Rôle
PERFSHOP_LICENSE_KEY (vide) Clé de licence PFSH-xxx.yyy préchargée au démarrage du backend

Deux voies d'activation de licence sont possibles — voir Système de licence :

  • Option A — injecter dans .env avant démarrage :
    # Unix / macOS
    echo "PERFSHOP_LICENSE_KEY=PFSH-xxx.yyy" >> .env
    # Windows PowerShell
    Add-Content .env "PERFSHOP_LICENSE_KEY=PFSH-xxx.yyy"
    
  • Option B — activer depuis l'UI (panneau chaos-admin → gestion licence → coller la clé)

Sans licence, le shop reste accessible, mais les interfaces protégées répondent HTTP 402. Voir Freemium vs Pro.

GitLab registry — inutilisé en build local

Ces deux variables sont présentes dans .env.example pour des scénarios de déploiement prod avec registry d'images. Elles sont ignorées en mode build local (docker-compose.build.yml) et peuvent être laissées aux valeurs par défaut.

Variable Défaut Rôle
GITLAB_HOSTNAME perfshop-gitlab.tests-performance.fr Hostname du registry legacy (placeholder)
GITLAB_REGISTRY_PORT 5050 Port du registry legacy

Note

PerfShop n'utilise pas GitLab en interne. Ces variables sont conservées pour compatibilité avec d'anciens déploiements externes qui utilisaient un registry GitLab privé. Le workflow Git officiel passe par Forgejo — voir Workflow Git Forgejo.

Références croisées

Le fichier .env.example lui-même est commenté et regroupe les variables par section avec des en-têtes ASCII. Il sert de source de vérité en cas de divergence avec cette documentation. En cas de doute, référez-vous toujours au contenu du .env.example fourni avec la version du code source que vous utilisez.

Voir aussi