Quick start¶
Prerequisites¶
- Docker Desktop installed (Windows, Mac, or Linux)
- Git
- Chrome browser (recommended for browser metrics)
Local launch¶
Docker Desktop — Windows / macOS¶
git clone https://perfshop-gitlab.perfshop.io/perf/perfshop.git
cd perfshop
cp .env.example .env
docker compose -f docker-compose.desktop.yml up -d --build
Do not use docker-compose.build.yml under Docker Desktop
docker-compose.build.yml uses the Pyroscope cpu mode (perf_event), which requires
access to perf_event_open — blocked under the embedded Linux VM in Docker Desktop.
docker-compose.desktop.yml uses the itimer mode (SIGPROF, 100% JVM) — no
kernel privilege required.
Linux VPS / CI (local build)¶
Services available locally¶
Main stack¶
| Service | URL | Login |
|---|---|---|
| 🛒 Application | http://localhost:9091 | — |
| 🔌 Backend API | http://localhost:9080 | — |
| 📊 Monitoring | http://localhost:3001 | — |
| 💥 Chaos Admin | http://localhost:3003 | admin@perfshop.fr / perfshop |
| 🔧 Admin | http://localhost:3004 | admin@perfshop.fr / perfshop |
| 📈 Grafana | http://localhost:3002 | admin / perfshop |
| 📚 Documentation | http://localhost:9087 | — |
JMeter stack¶
| Service | URL | Login |
|---|---|---|
| ⚡ JMeter UI | http://localhost:3005 | admin@perfshop.fr / perfshop |
Pedagogical QA stack (Phase 9 & 10)¶
| Service | URL | Login |
|---|---|---|
| 🧪 Squash TM | http://localhost:9086/squash | admin / perfshop |
| 🔬 Selenium VNC | http://localhost:7900 | — (no password) |
| 🗂️ Filebrowser scripts | http://localhost:3007 | — (no auth) |
| 🦊 Forgejo local Git | http://localhost:3009 | forgejo-admin / PerfShop2026! |
| 📝 Scripts UI | http://localhost:3008 | admin@perfshop.fr / perfshop |
Test accounts¶
Manual accounts (exploration and demo)¶
| Password | First name | Last name | |
|---|---|---|---|
| user1@perfshop.com | password1 | Alice | Johnson |
| user2@perfshop.com | password2 | Bob | Smith |
| ... | ... | ... | ... |
| user10@perfshop.com | password10 | Julia | Moore |
| user11@perfshop.com | password11 | Kevin | Brown |
| ... | ... | ... | ... |
| user20@perfshop.com | password20 | Tania | Roux |
| perf.test1@perfshop.com | TestPerf123! | Performance | Test1 |
| perf.test2@perfshop.com | TestPerf456! | Performance | Test2 |
JMeter load accounts (performance test runs)¶
500 accounts dedicated to JMeter load tests, injected by Flyway migration V2__data_users.sql.
Referenced in jmeter/scripts/users.csv (501 lines: 1 header + 500 data rows).
| Range | Password | |
|---|---|---|
| 1 to 500 | loadN@perfshop.com | LoadTestN! |
Examples: load1@perfshop.com / LoadTest1!, load250@perfshop.com / LoadTest250!.
Flyway migration
All accounts (manual + load) are inserted by migration V2__data_users.sql
present in both migration-fr/ and migration-en/. BCrypt hashes (strength 10) use
prefixes $2a$10$ (Spring) and $2b$10$ (bcrypt Python) - both are accepted
by Spring Security BCryptPasswordEncoder.
Account perf.test2: password
The password for perf.test2@perfshop.com is TestPerf456! (not TestPerf123!).
Production access (NAS)¶
Main stack¶
| Service | URL |
|---|---|
| 🛒 Application | https://perfshop.perfshop.io |
| 🔌 API | https://perfshop-api.perfshop.io |
| 📊 Monitoring | https://perfshop-monitoring.perfshop.io |
| 💥 Chaos Admin | https://perfshop-chaos.perfshop.io |
| 🔧 Admin | https://perfshop-admin.perfshop.io |
| 📈 Grafana | https://perfshop-grafana.perfshop.io |
| 📚 Documentation | https://perfshop-doc.perfshop.io |
JMeter stack¶
| Service | URL |
|---|---|
| ⚡ JMeter UI | https://perfshop-jmeter.perfshop.io |
Pedagogical QA stack (Phase 9 & 10)¶
| Service | URL | Login |
|---|---|---|
| 🧪 Squash TM | https://perfshop-squash.perfshop.io/squash | admin / perfshop |
| 🔬 Selenium VNC | https://perfshop-selenium.perfshop.io | — (no password) |
| 🦊 Forgejo local Git | https://perfshop-git.perfshop.io | forgejo-admin / PerfShop2026! |
| 📝 Scripts UI | https://perfshop-scripts.perfshop.io | admin@perfshop.fr / perfshop |
Activating an anomaly¶
- Open the frontend application
- Click the Chaos button at the top right (or go to Chaos Admin)
- Move the CPU Burn slider to 50%
- Observe in the monitoring:
docker_container_cpu_percentrises
Observing in Grafana¶
- Open Grafana
- Open the Backend Spring Boot (Complete) dashboard
- Correlate the CPU spike with HTTP latency
Stopping¶
docker compose down # keeps the data
docker compose down -v # removes everything (DB, metrics, dashboards)