Skip to content

mrveiss/pureboot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

466 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PureBoot

Unified Vendor-Neutral Node Lifecycle Platform

PureBoot is a self-hosted, vendor-neutral provisioning and orchestration system designed to automate the entire lifecycle of diverse hardware platforms. It provides a unified control plane for bare-metal servers, enterprise laptops, virtual machines, Raspberry Pi nodes, and edge devices.

Key Features

  • Unified Provisioning - Single platform for x86 BIOS/UEFI, ARM (Raspberry Pi), VMs, and enterprise laptops
  • Enterprise Virtualization - Full integration with oVirt/RHV, Proxmox, VMware, Hyper-V, and KVM
  • Lightweight & Portable - Runs on NAS devices, Raspberry Pi, or small VMs
  • Vendor Neutral - No lock-in to specific hardware or cloud providers
  • State Machine Driven - Strict lifecycle management from discovery to retirement
  • Advanced Security - Four-Eye Principle, RBAC, and comprehensive audit trails
  • Template-Based Deployment - Rapid provisioning in under 5 minutes

Supported Platforms

Platform Boot Method OS Support
Bare-Metal Servers BIOS/UEFI PXE Ubuntu, Debian, Fedora, Rocky, Windows
Enterprise Laptops BIOS/UEFI PXE Windows (AD join), Linux
Hyper-V / VMware / Proxmox PXE boot Windows, Linux
oVirt/RHV VMs API-driven Linux, Windows
Raspberry Pi Network boot Raspberry Pi OS, Ubuntu ARM
Edge/IoT Devices Network boot Custom Linux

Node Lifecycle

discovered → pending → installing → installed → active → retired
                                                  ↓
                                            reprovision

Deployment (Ubuntu)

Production Installation

# Clone repository
git clone https://github.com/mrveiss/pureboot.git
cd pureboot

# Run installer (as root)
sudo ./scripts/setup.sh

The installer will:

  • Install system dependencies (Python 3.11+, Node.js)
  • Create pureboot service user
  • Install to /opt/pureboot
  • Build frontend
  • Configure systemd service

Quick Start

After installation, start the service and access the web UI:

# Start the service
sudo service pureboot start

# Access Web UI
http://<server-ip>:8080

Default Settings:

  • Web UI Port: 8080
  • Authentication: None (open access - secure with firewall)
  • TFTP Port: 69 (requires root/capabilities)
  • Proxy DHCP Port: 4011 (disabled by default)

Service Management

service pureboot start     # Start PureBoot
service pureboot stop      # Stop PureBoot
service pureboot restart   # Restart PureBoot
service pureboot status    # Check status
journalctl -u pureboot -f  # View logs

Updating

cd pureboot
sudo ./scripts/setup.sh update

Updates will pull latest code, install new dependencies, rebuild frontend, and restart the service. Your data (database, TFTP files, configuration) is preserved.

Configuration

Edit /opt/pureboot/.env to override default settings:

PUREBOOT_HOST=0.0.0.0
PUREBOOT_PORT=8080
PUREBOOT_DEBUG=false
PUREBOOT_TFTP__ENABLED=true
PUREBOOT_TFTP__PORT=69
PUREBOOT_DHCP_PROXY__ENABLED=false

Development Setup

For local development (not production):

# Create virtual environment
python3 -m venv .venv
source .venv/bin/activate

# Install dependencies
pip install -r requirements.txt

# Run development server
python -m src.main

Documentation

All documentation is located in the docs/ directory:

Directory Description
docs/ Documentation index
docs/PureBoot_Product_Requirements_Document.md Complete PRD v2.0
docs/architecture/ System design and state machine
docs/api/ REST API documentation
docs/guides/ User and developer guides
docs/workflows/ Provisioning workflow documentation
docs/integrations/ Hypervisor and third-party integrations
docs/reference/ Technical reference materials

Architecture

┌───────────────────────────────────────────────────────────────┐
│                        PureBoot Platform                       │
├─────────────────┬─────────────────┬─────────────────┬──────────┤
│  PXE/iPXE/UEFI  │  Controller API │   Web UI        │  Storage │
│  Infrastructure │  (Workflows,    │  (Management,   │  Backend │
│                 │   Templates)    │   Monitoring)   │          │
└─────────────────┴─────────────────┴─────────────────┴──────────┘

Technology Stack

  • Backend: Python / FastAPI
  • Database: PostgreSQL (production) / SQLite (development)
  • Frontend: React / Tailwind CSS
  • Infrastructure: Docker / Kubernetes

API Overview

GET    /api/v1/nodes              # List all nodes
POST   /api/v1/nodes              # Register new node
PATCH  /api/v1/nodes/{id}/state   # Transition state
GET    /api/v1/next?mac={mac}     # Get boot instructions
POST   /api/v1/report             # Node status reporting

See API Documentation for complete reference.

Contributing

We welcome contributions! Please see our Contributing Guide for details.

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/your-feature)
  3. Commit your changes (git commit -m 'feat: add your feature')
  4. Push to the branch (git push origin feature/your-feature)
  5. Open a Pull Request

License

This project is dual-licensed:

  • Free Tier (MIT) - Personal, homelab, and educational use
  • Commercial License - Business and enterprise use

See LICENSE for details.

Support

  • GitHub Issues - Bug reports and feature requests
  • Documentation - docs/

Roadmap

  • Core PXE infrastructure
  • Controller API with node management
  • Web UI for monitoring
  • Linux provisioning (Ubuntu/Debian)
  • Windows provisioning with AD join
  • Raspberry Pi network boot
  • oVirt/RHV integration
  • Advanced RBAC and audit logging

Author: Martins Veiss (mrveiss)

Status: Design/Planning Phase - Documentation Complete, Implementation Pending

About

PureBoot - Provisioning and Lifecycle Management Framework

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors