Skip to content

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)

cp .env.example .env
docker compose -f docker-compose.build.yml up -d --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)

Email 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 Email 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

  1. Open the frontend application
  2. Click the Chaos button at the top right (or go to Chaos Admin)
  3. Move the CPU Burn slider to 50%
  4. Observe in the monitoring: docker_container_cpu_percent rises

Observing in Grafana

  1. Open Grafana
  2. Open the Backend Spring Boot (Complete) dashboard
  3. Correlate the CPU spike with HTTP latency

Stopping

docker compose down            # keeps the data
docker compose down -v         # removes everything (DB, metrics, dashboards)