# harry-lleen/debian-boxes architecture

> Architecture diagram of the GitHub repository harry-lleen/debian-boxes, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-14). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/harry-lleen/debian-boxes
- Repository: https://github.com/harry-lleen/debian-boxes

## Overview

This repository produces two Debian-based VM deliverables: reusable Debian Vagrant boxes and a course-specific PWND appliance exported as OVA. The documented Debian workflow defines versioned Packer inputs, installer answers and provisioning, while the PWND workflow layers a web/database stack onto the Debian 13 box. Source excerpts were unavailable, so links between individual provisioning scripts and installed services are not asserted.

Main entry points: [`pwnd`](https://github.com/harry-lleen/debian-boxes/tree/main/pwnd) (PWND VM), [`debian.pkr.hcl`](https://github.com/harry-lleen/debian-boxes/blob/main/debian.pkr.hcl) (Packer template), [`pwnd/export-ova.sh`](https://github.com/harry-lleen/debian-boxes/blob/main/pwnd/export-ova.sh) (OVA export), [`debian-13.pkrvars.hcl`](https://github.com/harry-lleen/debian-boxes/blob/main/debian-13.pkrvars.hcl) (Debian version inputs)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_debian["Debian Vagrant boxes"]
  node_packer["Packer template<br/>[debian.pkr.hcl]"]
  node_versions["Debian version inputs"]
  node_preseed["Installer answers<br/>[preseed.cfg]"]
  node_provision["Guest provisioning<br/>[provision.sh]"]
end

subgraph group_guest["Guest capabilities"]
  node_debian_box["Debian Vagrant box"]
  node_base_os["Minimal Debian system"]
  node_vagrant_access["Vagrant SSH access"]
  node_virtualbox_additions["VirtualBox Guest Additions"]
end

subgraph group_pwnd["PWND appliance"]
  node_pwnd_appliance["PWND VM"]
  node_pwnd_stack["Web and database stack"]
  node_ova_export["OVA export<br/>[export-ova.sh]"]
  node_ova["PWND OVA"]
end

node_operator(("Box builder"))
node_vagrant_user(("Vagrant user"))

node_operator -->|"builds with"| node_packer
node_packer -->|"uses inputs"| node_versions
node_vagrant_user -->|"uses"| node_debian_box
node_debian_box -->|"includes"| node_base_os
node_debian_box -->|"provides"| node_vagrant_access
node_debian_box -->|"includes"| node_virtualbox_additions
node_pwnd_appliance -->|"is based on"| node_debian_box
node_pwnd_appliance -->|"preconfigures"| node_pwnd_stack
node_pwnd_appliance -->|"exports via"| node_ova_export
node_ova_export -->|"produces"| node_ova

click node_packer "https://github.com/harry-lleen/debian-boxes/blob/main/debian.pkr.hcl"
click node_versions "https://github.com/harry-lleen/debian-boxes/blob/main/debian-13.pkrvars.hcl"
click node_preseed "https://github.com/harry-lleen/debian-boxes/blob/main/http/preseed.cfg"
click node_provision "https://github.com/harry-lleen/debian-boxes/blob/main/scripts/provision.sh"
click node_pwnd_appliance "https://github.com/harry-lleen/debian-boxes/tree/main/pwnd"
click node_pwnd_stack "https://github.com/harry-lleen/debian-boxes/tree/main/pwnd/scripts"
click node_ova_export "https://github.com/harry-lleen/debian-boxes/blob/main/pwnd/export-ova.sh"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_packer,node_versions,node_preseed,node_provision,node_vagrant_user toneBlue
class node_debian_box,node_base_os,node_vagrant_access,node_virtualbox_additions toneAmber
class node_pwnd_appliance,node_pwnd_stack,node_ova_export,node_ova toneMint
class node_operator toneIndigo
```

## Components

### Debian Vagrant boxes

- [Packer template](https://github.com/harry-lleen/debian-boxes/blob/main/debian.pkr.hcl): `debian.pkr.hcl`
- [Debian version inputs](https://github.com/harry-lleen/debian-boxes/blob/main/debian-13.pkrvars.hcl): `debian-13.pkrvars.hcl`
- [Installer answers](https://github.com/harry-lleen/debian-boxes/blob/main/http/preseed.cfg): `http/preseed.cfg`
- [Guest provisioning](https://github.com/harry-lleen/debian-boxes/blob/main/scripts/provision.sh): `scripts/provision.sh`

### Guest capabilities

- **Debian Vagrant box**
- **Minimal Debian system**
- **Vagrant SSH access**
- **VirtualBox Guest Additions**

### PWND appliance

- [PWND VM](https://github.com/harry-lleen/debian-boxes/tree/main/pwnd): `pwnd`
- [Web and database stack](https://github.com/harry-lleen/debian-boxes/tree/main/pwnd/scripts): `pwnd/scripts`
- [OVA export](https://github.com/harry-lleen/debian-boxes/blob/main/pwnd/export-ova.sh): `pwnd/export-ova.sh`
- **PWND OVA**

### Other components

- **Box builder**
- **Vagrant user**

## Connections

- Box builder → Packer template: builds with (evidence: `README.md`)
- Packer template → Debian version inputs: uses inputs (evidence: `README.md`)
- Vagrant user → Debian Vagrant box: uses (evidence: `README.md`)
- Debian Vagrant box → Minimal Debian system: includes (evidence: `README.md`)
- Debian Vagrant box → Vagrant SSH access: provides (evidence: `README.md`)
- Debian Vagrant box → VirtualBox Guest Additions: includes (evidence: `README.md`)
- PWND VM → Debian Vagrant box: is based on (evidence: `README.md`)
- PWND VM → Web and database stack: preconfigures (evidence: `README.md`)
- PWND VM → OVA export: exports via (evidence: `README.md`)
- OVA export → PWND OVA: produces (evidence: `README.md`)
