PerfShop — Code source complet de la plateforme pedagogique
  • HTML 35.7%
  • JavaScript 33.9%
  • Java 15.5%
  • Shell 11.9%
  • CSS 0.9%
  • Other 2.1%
Find a file
2026-03-26 22:11:44 +01:00
admin Initial commit — PerfShop v0.1.0-beta 2026-03-26 22:11:44 +01:00
backend Initial commit — PerfShop v0.1.0-beta 2026-03-26 22:11:44 +01:00
chaos-admin Initial commit — PerfShop v0.1.0-beta 2026-03-26 22:11:44 +01:00
docs Initial commit — PerfShop v0.1.0-beta 2026-03-26 22:11:44 +01:00
forgejo-seed Initial commit — PerfShop v0.1.0-beta 2026-03-26 22:11:44 +01:00
frontend Initial commit — PerfShop v0.1.0-beta 2026-03-26 22:11:44 +01:00
games Initial commit — PerfShop v0.1.0-beta 2026-03-26 22:11:44 +01:00
grafana Initial commit — PerfShop v0.1.0-beta 2026-03-26 22:11:44 +01:00
jmeter Initial commit — PerfShop v0.1.0-beta 2026-03-26 22:11:44 +01:00
jmeter-ui Initial commit — PerfShop v0.1.0-beta 2026-03-26 22:11:44 +01:00
loki Initial commit — PerfShop v0.1.0-beta 2026-03-26 22:11:44 +01:00
mkdocs Initial commit — PerfShop v0.1.0-beta 2026-03-26 22:11:44 +01:00
monitoring Initial commit — PerfShop v0.1.0-beta 2026-03-26 22:11:44 +01:00
prometheus Initial commit — PerfShop v0.1.0-beta 2026-03-26 22:11:44 +01:00
promtail Initial commit — PerfShop v0.1.0-beta 2026-03-26 22:11:44 +01:00
pyroscope Initial commit — PerfShop v0.1.0-beta 2026-03-26 22:11:44 +01:00
scripts-ui Initial commit — PerfShop v0.1.0-beta 2026-03-26 22:11:44 +01:00
shell Initial commit — PerfShop v0.1.0-beta 2026-03-26 22:11:44 +01:00
squash-orchestrator Initial commit — PerfShop v0.1.0-beta 2026-03-26 22:11:44 +01:00
squash-seed Initial commit — PerfShop v0.1.0-beta 2026-03-26 22:11:44 +01:00
squash-tm Initial commit — PerfShop v0.1.0-beta 2026-03-26 22:11:44 +01:00
tempo Initial commit — PerfShop v0.1.0-beta 2026-03-26 22:11:44 +01:00
test-runner Initial commit — PerfShop v0.1.0-beta 2026-03-26 22:11:44 +01:00
welcome Initial commit — PerfShop v0.1.0-beta 2026-03-26 22:11:44 +01:00
.env.example Initial commit — PerfShop v0.1.0-beta 2026-03-26 22:11:44 +01:00
.gitattributes Initial commit — PerfShop v0.1.0-beta 2026-03-26 22:11:44 +01:00
.gitignore Initial commit — PerfShop v0.1.0-beta 2026-03-26 22:11:44 +01:00
build.bat Initial commit — PerfShop v0.1.0-beta 2026-03-26 22:11:44 +01:00
build.sh Initial commit — PerfShop v0.1.0-beta 2026-03-26 22:11:44 +01:00
deploy.conf.example Initial commit — PerfShop v0.1.0-beta 2026-03-26 22:11:44 +01:00
docker-compose.build.yml Initial commit — PerfShop v0.1.0-beta 2026-03-26 22:11:44 +01:00
docker-compose.desktop.yml Initial commit — PerfShop v0.1.0-beta 2026-03-26 22:11:44 +01:00
LICENSE Initial commit — PerfShop v0.1.0-beta 2026-03-26 22:11:44 +01:00
LICENSE-COMMERCIAL.en Initial commit — PerfShop v0.1.0-beta 2026-03-26 22:11:44 +01:00
LICENSE-COMMERCIAL.fr Initial commit — PerfShop v0.1.0-beta 2026-03-26 22:11:44 +01:00
perfshop-deploy-ping.sh Initial commit — PerfShop v0.1.0-beta 2026-03-26 22:11:44 +01:00
perfshop-status-checker.sh Initial commit — PerfShop v0.1.0-beta 2026-03-26 22:11:44 +01:00
README.md Initial commit — PerfShop v0.1.0-beta 2026-03-26 22:11:44 +01:00
result-publisher-community.jar Initial commit — PerfShop v0.1.0-beta 2026-03-26 22:11:44 +01:00
THIRD-PARTY-LICENSES Initial commit — PerfShop v0.1.0-beta 2026-03-26 22:11:44 +01:00

🌐 English · Français


PerfShop.io — Chaos Engineering Platform

The open source pedagogical platform to master chaos engineering, performance testing, and observability.

Deploy a complete full-stack e-commerce environment in 5 minutes — inject real anomalies, observe live metrics, train your QA, SRE, and DevOps teams.


🚀 Quick Start

git clone https://perfshop-gitlab.tests-performance.fr/perf/perfshop.git
cd perfshop

# Git Bash (Windows) or Linux / macOS:
./build.sh desktop

# Windows native (cmd / PowerShell):
build.bat desktop

The script automatically:

  • Checks prerequisites (Docker, Docker Compose, Git)
  • Detects and lets you choose your host IP (for multi-machine classroom use)
  • Asks for your license key (Enter = community mode)
  • Generates .env with correct IP substitution
  • Launches docker compose -f docker-compose.desktop.yml up -d --build
  • Displays all active URLs

Silent mode (CI/CD or automated classroom deployment):

./build.sh desktop --silent --ip=192.168.1.10 --license=PFSH-xxx
./build.sh desktop --params=deploy.conf

Option B — Manual deployment

git clone https://perfshop-gitlab.tests-performance.fr/perf/perfshop.git
cd perfshop
cp .env.example .env
# Edit .env and replace localhost with your host IP if deploying for multiple students
docker compose -f docker-compose.desktop.yml up -d --build

First launch: ~5 min (Maven build + npm install). Subsequent launches: ~30 sec (Docker cache).

⚠️ Use docker-compose.desktop.yml, not docker-compose.build.yml. Pyroscope profiling is configured in itimer mode (SIGPROF) — perf_event_open is not available under Docker Desktop (restricted Linux VM).

Prerequisites — Ubuntu / Debian / Linux Mint (first install only)

These commands use apt and work on all Debian-based distributions (Ubuntu, Debian, Linux Mint, Pop!_OS...). For other distros: dnf on Fedora/RHEL, pacman on Arch. The Docker install script works on all Linux.

# 1. Update system
sudo apt update && sudo apt upgrade -y

# 2. Install Docker (no sudo needed after this)
curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER
newgrp docker

# 3. Install Git
sudo apt install -y git

⚠️ After newgrp docker, your user can run Docker without sudo. No sudo is needed for ./build.sh unix.

Option C — Linux VPS / CI (local build)

git clone https://perfshop-gitlab.tests-performance.fr/perf/perfshop.git
cd perfshop

# Make the build script executable (Linux/macOS only)
chmod +x build.sh

./build.sh unix
# or manually:
cp .env.example .env
docker compose -f docker-compose.build.yml up -d --build

Pyroscope profiling in cpu mode (perf_event) — requires Linux bare-metal or VPS.

🏫 Classroom / multi-workstation deployment

When students access PerfShop from their browsers on a shared server, localhost in the URLs won't work — use your server's IP instead.

The build.sh / build.bat scripts handle this automatically by detecting your host IP and replacing localhost in all .env URLs.

Alternatively, edit .env manually:

# Replace localhost with your server IP
PUBLIC_API_URL=http://192.168.1.10:9080
PUBLIC_FRONTEND_URL=http://192.168.1.10:9091
# ... (all PUBLIC_* URLs)

🌐 Available Services

🏠 Welcome Page — your starting point

Bookmark this page. After deployment, all services are listed here with the correct host IP. Works with localhost for local access, and with the server IP for classroom deployments.

URL locale URL production
http://localhost:3011

Main Stack

Service Local Production
🛒 Application http://localhost:9091 https://perfshop.tests-performance.fr
📊 Monitoring http://localhost:3001 https://perfshop-monitoring.tests-performance.fr
📈 Grafana http://localhost:3002 https://perfshop-grafana.tests-performance.fr
💥 Chaos Admin http://localhost:3003 https://perfshop-chaos.tests-performance.fr
🔧 Admin http://localhost:3004 https://perfshop-admin.tests-performance.fr
📚 Documentation http://localhost:9087 https://perfshop-doc.tests-performance.fr
🔌 API Backend http://localhost:9080 https://perfshop-api.tests-performance.fr

JMeter Stack

Service Local Production
🎯 JMeter UI http://localhost:3005 https://perfshop-jmeter.tests-performance.fr

🎮 Games

Service Local Production
🎮 Games http://localhost:3010 https://perfshop-games.tests-performance.fr

Pedagogical QA Stack (Phase 9 & 10)

Service Local Production Login
🧪 Squash TM (ALM) http://localhost:9086/squash https://perfshop-squash.tests-performance.fr/squash admin / admin
🖥️ Selenium VNC http://localhost:7900 https://perfshop-selenium.tests-performance.fr
🦊 Forgejo Git http://localhost:3009 https://perfshop-git.tests-performance.fr admin / perfshop
📝 Scripts UI http://localhost:3008 https://perfshop-scripts.tests-performance.fr admin@perfshop.fr / perfshop

Grafana credentials: admin / perfshop

Test accounts: user1@perfshop.com / password1, user2@perfshop.com / password2, etc.


Features

💥 Chaos Engineering

Backend — 7 anomalies (sliders 0100%)

Anomaly Impacted Metrics
Memory Leak jvm_heap_used ↑, GC thrashing
Slow Query p99 latency ↑, connection pool saturation
Thread Pool Saturation tomcat_busy_threads ↑, cascading timeouts
External Latency Uniform latency ↑, circuit breaker triggered
DB Connection Leak hikaricp_connections_active ↑, requests rejected
CPU Spike cpu_percent ↑, all requests degraded
Error Rate Injection HTTP 500 from 5% to 80%, script/alert resilience

Frontend — 4 anomalies (sliders 0100%)

Anomaly Impacted Metrics
Render Blocking FPS ↓, Long Tasks ↑, Lighthouse score collapse
Network Throttling req/s ↑, simulated API latency
Memory Leak UI JS Heap ↑, DOM nodes ↑
Infinite Re-render Browser CPU 100%, unresponsive UI

📊 Full APM Observability

  • Grafana + Prometheus — pre-configured JVM, HTTP, DB, and chaos-state dashboards
  • Tempo — end-to-end distributed OpenTelemetry traces
  • Pyroscope — continuous CPU and memory flamegraphs
  • Zero configuration — everything is pre-wired out of the box

🧪 Complete Pedagogical QA Stack (Phase 9 & 10)

  • Squash TM — open source ALM: requirements → test cases → campaigns → results
  • Selenium Grid + noVNC — headless Chrome, students watch the browser execute live
  • Polyglot Test Runner — Robot Framework (.robot) AND pytest (.py) in the same container
  • Forgejo local Git — self-hosted Git server, perfshop-tests repository pre-initialized
  • Scripts UI — CodeMirror web editor, script execution, publish to Forgejo

📜 Chaos Scripting

JMeter scripts provided at progressive pedagogical complexity levels.


⚙️ Configuration

All configuration is in the .env file.

Change ports (if conflict)

FRONTEND_HTTP_PORT=9091    # default
BACKEND_HTTP_PORT=9080     # default
DOCS_HTTP_PORT=9087        # default

Deploy on a custom domain

PUBLIC_API_URL=https://perfshop-api.yourdomain.com
PUBLIC_MONITORING_URL=https://perfshop-monitoring.yourdomain.com
PUBLIC_FRONTEND_URL=https://perfshop.yourdomain.com
PUBLIC_GRAFANA_URL=https://perfshop-grafana.yourdomain.com
PUBLIC_CHAOS_URL=https://perfshop-chaos.yourdomain.com
PUBLIC_ADMIN_URL=https://perfshop-admin.yourdomain.com
PUBLIC_FORGEJO_URL=https://perfshop-git.yourdomain.com
PUBLIC_SCRIPTS_URL=https://perfshop-scripts.yourdomain.com
FORGEJO_DOMAIN=perfshop-git.yourdomain.com
CORS_ALLOWED_ORIGINS=https://perfshop.yourdomain.com,https://perfshop-admin.yourdomain.com,https://perfshop-chaos.yourdomain.com

🏗️ Architecture

.env
 └── docker-compose.yml          ← Production NAS (GitLab registry images)
 └── docker-compose.build.yml    ← Linux VPS / CI (local build, perf_event)
 └── docker-compose.desktop.yml  ← Docker Desktop Windows/macOS (local build, itimer)
      ├── perfshop-frontend    :9091  (React/Nginx)
      ├── perfshop-app         :9080  (Spring Boot)
      ├── perfshop-db          :3306  (MySQL)
      ├── perfshop-monitoring  :3001  (Node.js)
      ├── perfshop-chaos-admin :3003  (Nginx)
      ├── perfshop-admin       :3004  (Nginx)
      ├── prometheus           :9092
      ├── grafana              :3002
      ├── tempo                        ← distributed traces
      ├── pyroscope                    ← continuous profiling
      ├── docs                 :9087  (MkDocs)
      │
      ├── ── JMeter Stack ──────────────────────────────────────
      ├── perfshop-jmeter              (permanent container — runs via docker exec)
      ├── perfshop-jmeter-ui   :3005  (Node.js — JMeter control UI)
      ├── perfshop-games       :3010  (Nginx — pedagogical games hub)
      │
      ├── ── QA Stack Phase 9 ──────────────────────────────────
      ├── perfshop-testmgmt    :9086  (Squash TM — QA ALM) → /squash
      ├── perfshop-squash-db   :5433  (PostgreSQL 16 dedicated to Squash TM)
      ├── perfshop-selenium    :4444+7900 (headless Chrome + noVNC live)
      ├── perfshop-test-runner         ← Robot Framework + pytest + OpenSSH
      ├── perfshop-orchestrator        ← Squash Orchestrator (internal)
      ├── perfshop-squash-seed         ← one-shot Squash TM init
      │
      ├── ── Local Git Stack Phase 10 ──────────────────────────
      ├── perfshop-forgejo     :3009  (self-hosted Forgejo Git)
      ├── perfshop-forgejo-seed        ← one-shot accounts + repo + scripts init
      ├── perfshop-scripts-ui  :3008  (editor + script runner)
      │
      ├── perfshop-status-checker      ← permanent, report every 60s
      └── perfshop-deploy-ping         ← one-shot, stops after sending

📡 Deployment Ping

On startup, the perfshop-deploy-ping service automatically sends an anonymous ping to perfshop.io to track the number of active deployments.

Data transmitted: version, compose file, hostname, public IP (country/city/ISP), OS. No application or user data is transmitted.

To disable: comment out the perfshop-deploy-ping service in your compose file.


🟢 Instance Monitoring

The perfshop-status-checker service sends a status report every 60 seconds to perfshop.io (instance UUID + HTTP status of each service).

To disable: comment out the perfshop-status-checker service in your compose file.


🛑 Stop

docker compose down        # keep data
docker compose down -v     # remove everything (DB, metrics, dashboards)

📜 License

⚠️ License migration in progress — PerfShop is transitioning from Apache 2.0 to AGPL 3.0. The AGPL license will apply to the public open source release. A commercial license remains available for professional and enterprise use.

Usage License Cost
🟢 Personal, self-training, private testing AGPL 3.0 Free
🔵 Professional, enterprise, training organizations Commercial On request

LICENSE · LICENSE-COMMERCIAL · contact@perfshop.io


📚 Full Documentation

http://localhost:9087 (local) — https://perfshop-doc.tests-performance.fr (production)


👤 Author

Philippe Naveau — Performance Testing & Chaos Engineering Expert


PerfShop.io — Master chaos, master performance.



PerfShop.io — Plateforme de Chaos Engineering

La plateforme pédagogique open source pour maîtriser le chaos engineering, les tests de performance et l'observabilité.

Déployez un environnement e-commerce full-stack complet en 5 minutes — injectez des anomalies réelles, observez les métriques en temps réel, formez vos équipes QA, SRE et DevOps.


🚀 Démarrage rapide

Option A — Déploiement automatisé (recommandé)

git clone https://perfshop-gitlab.tests-performance.fr/perf/perfshop.git
cd perfshop

# Git Bash (Windows) ou Linux / macOS :
./build.sh desktop

# Windows natif (cmd / PowerShell) :
build.bat desktop

Le script fait automatiquement :

  • Vérifie les prérequis (Docker, Docker Compose, Git)
  • Détecte et vous laisse choisir l'IP hôte (déploiement multi-postes en salle)
  • Demande la clé de licence (Entrée = mode communauté)
  • Génère le .env avec substitution IP correcte
  • Lance docker compose -f docker-compose.desktop.yml up -d --build
  • Affiche toutes les URLs actives

Mode silencieux (CI/CD ou déploiement automatisé en salle) :

./build.sh desktop --silent --ip=192.168.1.10 --license=PFSH-xxx
./build.sh desktop --params=deploy.conf

Option B — Déploiement manuel

git clone https://perfshop-gitlab.tests-performance.fr/perf/perfshop.git
cd perfshop
cp .env.example .env
# Éditer .env et remplacer localhost par l'IP hôte si déploiement multi-étudiants
docker compose -f docker-compose.desktop.yml up -d --build

Premier lancement : ~5 min (build Maven + npm install). Lancements suivants : ~30 sec (cache Docker).

⚠️ Utilise docker-compose.desktop.yml et non docker-compose.build.yml. Le profiling Pyroscope est configuré en mode itimer (SIGPROF) — perf_event_open n'est pas accessible sous Docker Desktop (VM Linux restreinte).

Prérequis — Ubuntu / Debian / Linux Mint (première installation uniquement)

Ces commandes utilisent apt — valables sur toutes les distributions Debian-based (Ubuntu, Debian, Linux Mint, Pop!_OS...). Pour les autres : dnf sur Fedora/RHEL, pacman sur Arch. Le script Docker fonctionne sur tous les Linux.

# 1. Mise à jour du système
sudo apt update && sudo apt upgrade -y

# 2. Installer Docker (plus besoin de sudo après)
curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER
newgrp docker

# 3. Installer Git
sudo apt install -y git

⚠️ Après newgrp docker, votre utilisateur peut utiliser Docker sans sudo. Aucun sudo nécessaire pour ./build.sh unix.

Option C — VPS Linux / CI (build local)

git clone https://perfshop-gitlab.tests-performance.fr/perf/perfshop.git
cd perfshop

# Make the build script executable (Linux/macOS only)
chmod +x build.sh

./build.sh unix
# ou manuellement :
cp .env.example .env
docker compose -f docker-compose.build.yml up -d --build

Profiling Pyroscope en mode cpu (perf_event) — requiert Linux bare-metal ou VPS.

🏫 Déploiement en salle / multi-postes

Quand les étudiants accèdent à PerfShop depuis leur navigateur sur un serveur partagé, localhost dans les URLs ne fonctionnera pas — il faut utiliser l'IP du serveur.

Les scripts build.sh / build.bat gèrent cela automatiquement en détectant l'IP hôte et en remplaçant localhost dans toutes les URLs du .env.

Alternativement, éditer .env manuellement :

# Remplacer localhost par l'IP du serveur
PUBLIC_API_URL=http://192.168.1.10:9080
PUBLIC_FRONTEND_URL=http://192.168.1.10:9091
# ... (toutes les URLs PUBLIC_*)

🌐 Services disponibles

🏠 Page daccueil — votre point de départ

Mettez cette page en favori. Après le déploiement, tous les services y sont listés avec la bonne IP. Fonctionne avec localhost en local, et avec lIP du serveur en salle de classe.

URL locale URL production
http://localhost:3011

Stack principale

Service Local Production
🛒 Application http://localhost:9091 https://perfshop.tests-performance.fr
📊 Monitoring http://localhost:3001 https://perfshop-monitoring.tests-performance.fr
📈 Grafana http://localhost:3002 https://perfshop-grafana.tests-performance.fr
💥 Chaos Admin http://localhost:3003 https://perfshop-chaos.tests-performance.fr
🔧 Admin http://localhost:3004 https://perfshop-admin.tests-performance.fr
📚 Documentation http://localhost:9087 https://perfshop-doc.tests-performance.fr
🔌 API Backend http://localhost:9080 https://perfshop-api.tests-performance.fr

Stack JMeter

Service Local Production
🎯 JMeter UI http://localhost:3005 https://perfshop-jmeter.tests-performance.fr

🎮 Games

Service Local Production
🎮 Games http://localhost:3010 https://perfshop-games.tests-performance.fr

Stack QA pédagogique (Phase 9 & 10)

Service Local Production Login
🧪 Squash TM (ALM) http://localhost:9086/squash https://perfshop-squash.tests-performance.fr/squash admin / admin
🖥️ Selenium VNC http://localhost:7900 https://perfshop-selenium.tests-performance.fr
🦊 Forgejo Git local http://localhost:3009 https://perfshop-git.tests-performance.fr admin / perfshop
📝 Scripts UI http://localhost:3008 https://perfshop-scripts.tests-performance.fr admin@perfshop.fr / perfshop

Identifiants Grafana : admin / perfshop

Comptes de test : user1@perfshop.com / password1, user2@perfshop.com / password2, etc.


Fonctionnalités

💥 Chaos Engineering

Backend — 7 anomalies (sliders 0100%)

Anomalie Métriques impactées
Memory Leak jvm_heap_used ↑, GC s'emballe
Slow Query Latence p99 ↑, pool de connexions saturé
Thread Pool Saturation tomcat_busy_threads ↑, timeouts en cascade
External Latency Latence uniforme ↑, circuit breaker déclenché
DB Connection Leak hikaricp_connections_active ↑, requêtes rejetées
CPU Spike cpu_percent ↑, toutes requêtes dégradées
Error Rate Injection HTTP 500 de 5% à 80%, résilience scripts/alertes

Frontend — 4 anomalies (sliders 0100%)

Anomalie Métriques impactées
Render Blocking FPS ↓, Long Tasks ↑, Lighthouse effondré
Network Throttling req/s ↑, latence API simulée
Memory Leak UI Heap JS ↑, nœuds DOM ↑
Infinite Re-render CPU navigateur 100%, UI non responsive

📊 Observabilité APM complète

  • Grafana + Prometheus — dashboards JVM, HTTP, DB, chaos state pré-configurés
  • Tempo — traces distribuées OpenTelemetry de bout en bout
  • Pyroscope — flamegraphs CPU et mémoire en continu
  • Zéro configuration — tout est pré-câblé out-of-the-box

🧪 Stack QA pédagogique complète (Phase 9 & 10)

  • Squash TM — ALM open source : exigences → cas de test → campagnes → résultats
  • Selenium Grid + noVNC — Chrome headless, les étudiants voient le navigateur s'exécuter en direct
  • Test Runner polyglotte — Robot Framework (.robot) ET pytest (.py) dans le même container
  • Forgejo Git local — serveur Git auto-hébergé, dépôt perfshop-tests pré-initialisé
  • Scripts UI — éditeur web CodeMirror, lancement de scripts, publication vers Forgejo

📜 Chaos Scripting

Scripts JMeter fournis en niveaux de complexité pédagogique progressifs.


⚙️ Configuration

Tout se passe dans le fichier .env.

Changer les ports (si conflit)

FRONTEND_HTTP_PORT=9091    # défaut
BACKEND_HTTP_PORT=9080     # défaut
DOCS_HTTP_PORT=9087        # défaut

Déployer sur un autre domaine

PUBLIC_API_URL=https://perfshop-api.mondomaine.com
PUBLIC_MONITORING_URL=https://perfshop-monitoring.mondomaine.com
PUBLIC_FRONTEND_URL=https://perfshop.mondomaine.com
PUBLIC_GRAFANA_URL=https://perfshop-grafana.mondomaine.com
PUBLIC_CHAOS_URL=https://perfshop-chaos.mondomaine.com
PUBLIC_ADMIN_URL=https://perfshop-admin.mondomaine.com
PUBLIC_FORGEJO_URL=https://perfshop-git.mondomaine.com
PUBLIC_SCRIPTS_URL=https://perfshop-scripts.mondomaine.com
FORGEJO_DOMAIN=perfshop-git.mondomaine.com
CORS_ALLOWED_ORIGINS=https://perfshop.mondomaine.com,https://perfshop-admin.mondomaine.com,https://perfshop-chaos.mondomaine.com

🏗️ Architecture

.env
 └── docker-compose.yml          ← Production NAS (images registry GitLab)
 └── docker-compose.build.yml    ← VPS Linux / CI (build local, perf_event)
 └── docker-compose.desktop.yml  ← Docker Desktop Windows/macOS (build local, itimer)
      ├── perfshop-frontend    :9091  (React/Nginx)
      ├── perfshop-app         :9080  (Spring Boot)
      ├── perfshop-db          :3306  (MySQL)
      ├── perfshop-monitoring  :3001  (Node.js)
      ├── perfshop-chaos-admin :3003  (Nginx)
      ├── perfshop-admin       :3004  (Nginx)
      ├── prometheus           :9092
      ├── grafana              :3002
      ├── tempo                        ← traces distribuées
      ├── pyroscope                    ← profiling continu
      ├── docs                 :9087  (MkDocs)
      │
      ├── ── Stack JMeter ──────────────────────────────────────
      ├── perfshop-jmeter              (container permanent — tirs via docker exec)
      ├── perfshop-jmeter-ui   :3005  (Node.js — IHM pilotage JMeter)
      ├── perfshop-games       :3010  (Nginx — hub de mini-jeux pédagogiques)
      │
      ├── ── Stack QA Phase 9 ──────────────────────────────────
      ├── perfshop-testmgmt    :9086  (Squash TM — ALM QA) → /squash
      ├── perfshop-squash-db   :5433  (PostgreSQL 16 dédié Squash TM)
      ├── perfshop-selenium    :4444+7900 (Chrome headless + noVNC live)
      ├── perfshop-test-runner         ← Robot Framework + pytest + OpenSSH
      ├── perfshop-orchestrator        ← Squash Orchestrator (interne)
      ├── perfshop-squash-seed         ← one-shot init Squash TM
      │
      ├── ── Stack Git local Phase 10 ──────────────────────────
      ├── perfshop-forgejo     :3009  (Forgejo Git auto-hébergé)
      ├── perfshop-forgejo-seed        ← one-shot init comptes + dépôt + scripts
      ├── perfshop-scripts-ui  :3008  (éditeur + lanceur de scripts)
      │
      ├── perfshop-status-checker      ← permanent, rapport toutes les 60s
      └── perfshop-deploy-ping         ← one-shot, s'arrête après envoi

📡 Ping de déploiement

Au démarrage, le service perfshop-deploy-ping envoie automatiquement un ping anonyme vers perfshop.io pour suivre le nombre de déploiements actifs.

Données transmises : version, fichier compose, hostname, IP publique (pays/ville/FAI), OS. Aucune donnée applicative ou utilisateur n'est transmise.

Pour désactiver : commentez le service perfshop-deploy-ping dans votre fichier compose.


🟢 Monitoring des instances

Le service perfshop-status-checker envoie toutes les 60 secondes un rapport de statut vers perfshop.io (UUID instance + statut HTTP de chaque service).

Pour désactiver : commentez le service perfshop-status-checker dans votre fichier compose.


🛑 Arrêter

docker compose down        # garde les données
docker compose down -v     # supprime tout (BDD, métriques, dashboards)

📜 Licence

⚠️ Migration de licence en cours — PerfShop est en cours de transition d'Apache 2.0 vers AGPL 3.0. La licence AGPL s'appliquera à la version publique open source. Une licence commerciale reste disponible pour les usages professionnels et entreprises.

Usage Licence Coût
🟢 Personnel, auto-formation, tests privés AGPL 3.0 Gratuit
🔵 Professionnel, entreprise, ESN, formation Commerciale Sur devis

LICENSE · LICENSE-COMMERCIAL · contact@perfshop.io


📚 Documentation complète

http://localhost:9087 (local) — https://perfshop-doc.tests-performance.fr (production)


👤 Auteur

Philippe Naveau — Expert Tests de Performance & Chaos Engineering


PerfShop.io — Maîtrisez le chaos, maîtrisez la performance.