A containerized demo environment for F5 Distributed Cloud sales engineering exercises. Includes sample applications and a security configuration validator.
docker compose up -d┌─────────────────────────────────────────────────────────────┐
│ capsule-info (:8080) │
│ Main portal with navigation │
│ Challenge | Demo Apps | Scouter (validator) │
├─────────────────────────────────────────────────────────────┤
│ /ws/scan ──proxy──► scouter-app (:3002) │
│ Security test backend │
└─────────────────────────────────────────────────────────────┘
│
┌───────────────┴───────────────┐
▼ ▼
dragon-radar-api (:3001) capsule-store (:3000)
REST API demo E-commerce demo
| Service | Port | Description |
|---|---|---|
| capsule-info | 8080 | Main portal - challenge brief, app docs, security validator |
| capsule-store | 3000 | E-commerce storefront (EJS templates, sessions, cart) |
| dragon-radar-api | 3001 | REST API returning mock geolocation data |
| scouter-app | 3002 | Security test backend (WebSocket, proxied through capsule-info) |
REST API simulating a location tracking service.
Endpoints:
GET /api/radar/scan- Get all locationsGET /api/radar/ball/:id- Get single locationGET /health- Health check
Test scenarios: Rate limiting, caching, API security
Server-rendered e-commerce application.
Pages: Homepage, product catalog, cart, login, checkout
Credentials:
demo/demobulma/capsule123goku/kamehameha
Test scenarios: WAF (SQLi, XSS), bot protection, DDoS mitigation, PCI compliance
The Scouter tab in capsule-info runs automated security tests against the demo apps.
API Tests (Dragon Radar):
- Rate Limiting - Sends 50 rapid requests, expects 429 responses
- Caching - Checks cache headers and response time improvement
- Performance - Measures latency
- Security - Tests SQLi, path traversal, oversized headers
Web App Tests (Capsule Store):
- WAF - SQLi, XSS, path traversal blocking
- Bot Protection - User-Agent filtering, credential stuffing limits
- DDoS Mitigation - 100 concurrent requests, expects throttling
- PCI Compliance - Security headers, HTTPS
Target FQDNs (from within Docker):
- Dragon Radar:
http://dragon-radar-api:3001 - Capsule Store:
http://capsule-store:3000
Run individual services locally:
cd dragon-radar-api && npm install && npm start
cd capsule-store && npm install && npm start
cd scouter-app && npm install && npm startRebuild after changes:
docker compose build
docker compose up -d- Node.js 20
- Express
- EJS (capsule-store)
- WebSocket (scouter-app)
- Nginx (capsule-info)
- Docker Compose