Curated security wargames content — a vendored, markdown mirror of the OverTheWire community challenges (Bandit, Natas, Narnia, Behemoth, Leviathan, Krypton, and more), published as a Jekyll site with the zer0-mistakes theme.
Provenance: This collection was extracted from bamr87/it-journey (
pages/_docs/wargames/) viagit subtree split, so the full edit history is preserved here. It now lives as a standalone repository so the IT-Journey site can stay focused on its gamified quests.
All challenge content is aggregated from the OverTheWire website and is distributed under the MIT License.
- Upstream: https://github.com/OverTheWireOrg/OverTheWire-website (
gh-pagesbranch) - License: MIT
This is vendored content — treat it as read-only and re-sync from upstream rather than editing the challenge pages by hand. Each page carries source_repo / source_url / license frontmatter recording its origin.
The site is built with the zer0-mistakes Jekyll theme, loaded remotely on GitHub Pages via the remote_theme: bamr87/zer0-mistakes directive — no theme files are vendored here, so this repo stays content-only.
The framework (_config.yml, Gemfile, _data/, .github/workflows/jekyll-gh-pages.yml, .devcontainer/) was scaffolded with the theme's AI installer and is described declaratively in zer0.install.yml. Re-scaffold or upgrade it with:
# from a checkout of bamr87/zer0-mistakes
scripts/bin/install init /path/to/wargames --config /path/to/wargames/zer0.install.yml --non-interactive --forceindex.md→ the homepage (/), using the theme'shomelayout.overthewire/**→ the challenge pages, served at theirpermalink(/docs/wargames/…) with the theme'sdefaultlayout and the auto games sidebar. Theoverthewire/index.mdis the games index at/docs/wargames/._config.ymldefaultsattach layouts to the root-level content (there are no Jekyll collections), andexcludekeeps tooling/docs out of the build.
The left sidebar is a two-level tree — one collapsible group per game, its individual levels as children — so every challenge page is reachable. There is no navigation data file to maintain: the overthewire scope in _config.yml turns on the zer0-mistakes theme's nav: pages mode, which builds the tree automatically from the page URLs under /docs/wargames/:
sidebar:
nav: pages
base: /docs/wargames/ # root the tree here
order_by: nav_order # sort each game's levels numerically
title: WargamesOrdering and labels come from per-page front matter stamped by the content pipeline — each level page carries nav_order (its numeric suffix, so levels sort 0,1,2,…,10) and sidebar_label ("Level N"). The aggregator (scripts/docs-aggregator/transform.py) sets both on every sync, so the sidebar stays in step with the content with nothing to regenerate by hand. The theme marks the current page active and expands its game on load (server-side, no JavaScript).
GitHub Pages renders the theme remotely; for a local preview, load the theme as a gem instead of remote_theme:
bundle install
bundle exec jekyll serve # http://localhost:4000/wargames/index.md # Homepage (layout: home) — wargames hub
overthewire/ # Vendored OverTheWire challenge pages
index.md # Games index (/docs/wargames/)
bandit/ # Linux/Unix fundamentals
natas/ # Server-side web security
narnia/ behemoth/ ... # Binary exploitation and beyond
_config.yml # Jekyll config (remote_theme, defaults, excludes)
_data/navigation/ # Top navbar (main.yml) — the games sidebar is auto-built
zer0.install.yml # Installer config that scaffolds the framework
scripts/docs-aggregator/ # Upstream content sync pipeline
The scripts/docs-aggregator/ pipeline clones the OverTheWire repo, extracts the wargames markdown, and rewrites frontmatter with provenance metadata.
pip install -r scripts/docs-aggregator/requirements.txt
./scripts/docs-aggregator/aggregate_docs.shSources are registered in scripts/docs-aggregator/docs_config.yml.
The pages are plain Markdown with YAML frontmatter (Jekyll-compatible). They can be served as a standalone Jekyll site, embedded in another docs system, or read as-is on GitHub.