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
.envavant démarrage : - 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.