Engine decouples core range infrastructure from individual training modules. It orchestrates CTF environments, threat-hunting sandboxes, and network-analysis pipelines on hardware you own — no cloud dependency, no per-seat cost.
| Mode | Nodes | vCPUs | RAM | Storage | Max operators |
|---|---|---|---|---|---|
| single | 1 (combined) | 4 | 16 GB | 100 GB SSD | 10 |
| dual | 2 (segregated) | 4 + 4 | 16 + 16 GB | 100 + 100 GB | 20 |
| cluster | 3 (HA dedicated) | 4 + 4 + 4 | 32 + 16 + 16 GB | 256 + 100 + 100 GB | 30 |
Production cluster
Three bare-metal nodes, one control plane, workloads pinned by role.
- K3s server (leader)
- CTFd + MariaDB (PVC)
- Local registry (PVC)
- Traefik / MetalLB
- K3s agent · role=juiceshop
- MultiJuicer (up to 30 dynamic pods)
- K3s agent · role=analyst
- SSH analyst containers
- Kali noVNC workstations
- Self-hosted CTF targets
| Component | Version | Component | Version |
|---|---|---|---|
| K3s | v1.32.5+k3s1 | MetalLB | latest |
| Helm | v4.2.0 | Traefik | v3.x |
| CTFd | v3.8.2 | MariaDB | 10.11 |
| MultiJuicer | v10.0.0 | Redis | 7-alpine |
| OWASP Juice Shop | v17+ | Ubuntu | 24.04 LTS |
Three gated stages. Each gate is a real proof of work — passwords and flags from the previous sprint unlock the next.
Sprint 1 — Foundational Fluency
OverTheWire Bandit 0–15 · CmdChallenge 1–20.
Sprint 2 — Systems, Web & Forensics
Bandit 16–34 · Natas 0–15 · Krypton · Leviathan. Self-hosted Juice Shop (100+ challenges via MultiJuicer) and PCAP/log forensics.
Sprint 3 — Advanced Operations
Narnia & Behemoth (binary exploitation) · Natas 16–34 · OWASP crAPI · advanced skilling labs · full-scenario exercises.
# 1 — clone $ git clone https://github.com/stoptalkingishh/cei-labs-engine.git && cd cei-labs-engine # 2 — configure inventory + variables $ vi ansible/group_vars/all.yml ansible/inventory.ini # 3 — prepare cases $ ./scripts/setup-cases.sh # 4 — provision the cluster $ ansible-playbook -i ansible/inventory.ini ansible/site.yml # 5 — bring the platform up $ ./scripts/platform-up.sh # 6 — load content $ ./scripts/juice-shop-ctf-import.sh && ./scripts/challenges-load.sh # 7 — verify $ kubectl get nodes -o wide && kubectl get pods -A $
59 challenges, three tracks, one fail-closed deploy.
MODULE 03 — TERRAINNetBuilt to survive 80 operators scanning it on purpose.
MODULE 04 — THE OPERATIONEventA full-scale, self-hosted CTF experience — 80 operators, 59 challenges.
MODULE 05 — LOADOUTAgentA friendly CTF coaching AI that runs on your own laptop.