Skip to content

github.com/range42

Repositories

Range42 is a multi-repository platform. Each repo is a self-contained layer — they work independently and compose together into a complete cyber range stack.

  [ range42 ]          Setup wizard — bootstraps everything below
        │
        ├──▶ [ range42-deployer-ui ]      Visual canvas → deployment plan
        │           │
        │           ▼
        └──▶ [ range42-backend-api ]     Deployment orchestrator
                    │                    (spec: range42-api-definitions)
                    ▼
        [ Ansible Runner ]
                    │
         ┌──────────┴──────────┐
         ▼                     ▼
  [ range42-playbooks ]   [ range42-catalog ]
   Scenarios & bundles     Roles & containers
         │
         ▼
  [ range42-ansible_roles-proxmox_controller ]
   Proxmox API — provisions VMs, LXC, networks

range42

entry point

The main installer and orchestrator. Contains the interactive TUI setup wizard (range42-init.py), the top-level site.yml deployment pipeline, and bootstrap Ansible roles. This is where every new deployment starts — it handles prerequisite checks, Proxmox connection, inventory generation and vault setup before handing off to the playbooks.

Python Ansible Textual TUI
GitHub ↗

range42-deployer-ui

active

A Vue 3 single-page application for visually designing and deploying infrastructure. Users drag and drop nodes (VMs, LXC containers, networks, routers, firewalls) onto a VueFlow canvas, configure each element, then trigger deployment to the backend API. Supports dark/light mode, multi-language (EN/FR/JP), git-backed project storage, and real-time deployment status via Server-Sent Events.

Vue 3 VueFlow Tailwind CSS Pinia TypeScript
GitHub ↗

range42-emp-mockup

in progress

A Vue 3 + TypeScript mockup of the Exercise Management Platform (EMP) — the future operator-facing dashboard for managing running exercises, tracking team progress, delivering flags and monitoring participants across active gamenet deployments. Currently in design and prototyping phase.

Vue 3 TypeScript Tailwind CSS
GitHub ↗

range42-backend-api

active

A FastAPI application that acts as the deployment orchestrator between the UI and the Ansible layer. It exposes REST endpoints for VM lifecycle management, playbook execution, and bundle operations, executing Ansible playbooks programmatically via ansible-runner. Authentication and ACL are handled upstream by a Kong API gateway — the backend itself operates on trusted internal traffic only.

Python 3 FastAPI Pydantic ansible-runner
GitHub ↗

range42-api-definitions

specification

The OpenAPI / Swagger specification for the Range42 backend API. Acts as the single source of truth for all request/response schemas, keeping the UI client and backend contract in sync. Use it to generate client SDKs, explore the API interactively via Swagger UI, or validate payloads during development.

OpenAPI 3 JSON Swagger
GitHub ↗

range42-catalog

active

The core content library of the platform. Contains three layers: Ansible roles for provisioning infrastructure and installing software (admin, trainee, CTF categories), Docker / LXC definitions for containerised vulnerable services and CVE reproductions (organised by type: web, network, system, crypto, malware, misconfiguration), and gamification templates — themed environments (hospital, bank) used to wrap vulnerabilities in realistic scenarios. Role names follow the <category>.<action>.<target> convention.

Ansible YAML Dockerfile Docker Compose
GitHub ↗

range42-playbooks

active

The collection of deployment bundles and full training scenarios. Composed of two types: bundles — atomic, reusable Ansible actions (ping, core Linux setup, Proxmox operations, Docker, monitoring agents) that can be combined freely — and scenarios — complete end-to-end lab deployments such as demo_lab, forensics_lab, misp_lab, kunai_lab and the blank multi-subnet network bases. This is the repo to fork if you want to create custom scenarios.

Ansible YAML Jinja2
GitHub ↗

range42-ansible_roles-proxmox_controller

active

A standalone Ansible role that wraps the Proxmox VE API. Provides 67+ actions covering the full VM and LXC lifecycle: creation, cloning, network interface management, storage operations, firewall rules, snapshot management, start/stop/delete, and more. Designed to be reusable outside Range42 — you can use it in any Ansible project that needs to drive a Proxmox host.

Ansible YAML Proxmox API
GitHub ↗

range42-ansible_roles-debug-devkit

tooling

A collection of shell scripts for testing, debugging, and development workflows. Scripts follow a self-documenting naming convention: <MODULE>.<INPUT>.<VERB>.to.<OUTPUT>.sh — for example, proxmox_vm.vm_id.get_config.to.jsons.sh takes a VM ID, fetches its config from the Proxmox API, and outputs a JSON stream. Useful for inspecting live infrastructure state, validating API responses, and rapid debugging.

Bash jq
GitHub ↗

range42-presentation

materials

Conference presentations and talk materials for Range42. Built with LaTeX Beamer using the Metropolis theme, IBM Plex Sans/Mono fonts, and the Range42 cyber colour palette. Includes slides presented at OSCL 2025 and FIC Lille 2026. Released under TLP:CLEAR — freely shareable without restriction.

LaTeX XeLaTeX Beamer
GitHub ↗

All repositories welcome contributions

Bug reports, feature requests, new catalog roles, scenario ideas, and documentation improvements are all welcome. Each repository has its own issue tracker on GitHub.

View Organisation ↗