Skip to content

Releases: chadleeshaw/ignite

v3.0.0

Choose a tag to compare

@github-actions github-actions released this 23 Oct 00:18
38c649b

Ignite v3.0.0

Highlights

  • The web UI is redesigned with two modes, Cozy and Console. Press \ to switch between them, and the choice is saved per user.
  • The original flame logo is back in the nav, on the login page and as the favicon.
  • A status bar on every page shows overall service health.
  • Overview and DHCP pages show pool stats, including in-flight and failed counts.
  • Provision editor: live syntax highlighting as you type (cloud-init/YAML, kickstart, preseed, iPXE/shell, PXE menus, AutoYaST, and {{ }} template tags), replacing the old Preview button. It adds about 5 KB, loaded only on that page.
  • Dynamic OS image catalog: Ignite discovers current releases from each distro (Ubuntu LTS, Debian, Fedora, CentOS Stream, openSUSE Leap/Tumbleweed, NixOS) at startup and every OS_CATALOG_REFRESH (default 24h), hides end-of-life releases using endoflife.date, and falls back to a built-in list offline (OS_CATALOG_OFFLINE=true pins it). The OS Images page shows catalog status with a Refresh button, and downloaded images that reach end of life get an EOL badge but keep working.
  • OS image catalog: live release lists, an EOL badge, and refresh.

Backend

  • Every form now has per-session CSRF protection plus a same-host Origin check. COOKIE_SECURE=auto keeps logins working over plain HTTP.
  • Each host gets its own provisioning callback token. A cleanup ticker runs in the background, and several race conditions are fixed.
  • DHCP status is consistent everywhere (running, stopped or configured), and timestamps are RFC3339.
  • Syslinux activation stages files and then swaps them in. The endpoint is POST /api/syslinux/activate/{version}.
  • Redfish/BMC: certificate checks are skipped by default because homelab BMCs are usually self-signed. Set BMC_TLS_VERIFY=true to enforce them. BMC_SYSTEM_ID/system_id selects a system when a BMC has more than one. A powered-off host gets On, and a running host gets ForceRestart.
  • kernel_options rejects control characters.
  • /status now redirects to /.
  • New settings: TFTP_PORT, plus DHCP_ENABLED. When DHCP_ENABLED is false, DHCP servers show configured and Start returns 409 with an explanation. HTTP_PORT is unchanged.
  • OS images: end-of-life releases removed and current ones added (Ubuntu 22.04/24.04/26.04, Debian 12/13, Fedora 43/44, CentOS Stream 9/10, NixOS 26.05, openSUSE Leap 16.0 and Tumbleweed). Image downloads, which were broken for every distro, are fixed, and iPXE menu paths now match where images are stored. A hardened, read-only /os-images/ route serves boot files to PXE clients without auth.

Upgrading from 2.x (breaking)

  1. Back up first. Copy ignite.db and your TFTP directory before you recreate the container.
  2. Mount the new volumes. Mount /app/data (holds ignite.db and the Syslinux cache at /app/data/syslinux) and /app/public/tftp. If you don't mount them, data will not persist across container recreation.
  3. Syslinux. Any version you downloaded before 3.0.0 must be downloaded again before it can be activated, because the cache moved to /app/data/syslinux.
  4. API clients and scripts. POSTs to the web UI now need the session CSRF token, so scripts that posted to UI forms will get 403.
  5. BMC TLS. BMC_TLS_INSECURE is gone. Verification is off by default, and BMC_TLS_VERIFY=true turns it on.
  6. Regenerate the iPXE config after upgrading.

Full changelog: v2.2.1...v3.0.0

What's Changed

  • Phase 1 backend: host callback auth, lease maintenance, overview data by @chadleeshaw in #15
  • Restyle the web UI with Cozy and Console themes by @chadleeshaw in #16
  • OS images: drop EOL releases, fix download and iPXE paths by @chadleeshaw in #17
  • Highlight provision templates inside the editor by @chadleeshaw in #18
  • OS images: dynamic release catalog with EOL filtering by @chadleeshaw in #19

Full Changelog: v2.2.1...v3.0.0

v2.2.1

Choose a tag to compare

@github-actions github-actions released this 30 Sep 21:37

Full Changelog: v2.2.0...v2.2.1

v2.2.0

Choose a tag to compare

@github-actions github-actions released this 30 Sep 16:35

What's Changed

  • Fix all code-review findings (structure, data types, bugs) by @chadleeshaw in #13

Full Changelog: v2.1.0...v2.2.0

v2.1.0

Choose a tag to compare

@chadleeshaw chadleeshaw released this 15 Sep 22:12
3b4c996

🚀 Ignite v2.1.0 - Enhanced File Management and Multi-OS Support

This major release significantly enhances Ignite's capabilities with improved file management, expanded operating system support, and comprehensive security enhancements while maintaining full backward compatibility.

🎯 Major Features

📁 Advanced File Management

  • File Deletion: Secure delete functionality with confirmation dialogs and path validation
  • Template vs Config Distinction: Clear visual separation using different icons and badges
    • Templates (📄): Reusable starting points for customization
    • Configs (⚙️): Rendered, ready-to-deploy files
  • Enhanced File Browser: Improved UI with better click handling and user feedback

🖥️ Expanded Operating System Support

  • Debian: Network installer support for Bullseye (11) and Bookworm (12)
  • Fedora: PXE boot support for versions 39, 40, and 41
  • openSUSE: Support for Leap 15.5, 15.6, and Tumbleweed distributions

🛠️ New Provisioning Methods

  • AutoYaST: XML-based automated installation for SUSE/openSUSE systems
  • Preseed: Debian/Ubuntu automated installation configuration
  • Enhanced Cloud-Init: Improved YAML templates for server deployments
  • Advanced Kickstart: Extended templates for CentOS/RHEL automation

🔒 Security Enhancements

  • Path Validation: Comprehensive protection against directory traversal attacks
  • Input Sanitization: Enhanced validation for IP addresses and file operations
  • Authentication System: Complete login/logout with secure session management
  • File Access Control: Operations restricted to authorized directories only

⚡ Performance & Code Quality

Optimization

  • Removed unused functions identified by static analysis
  • Optimized string operations using standard library functions
  • Fixed deprecated Go functions (strings.Title, filepath.HasPrefix)
  • Cleaned up imports across all packages

Testing

  • Added comprehensive test coverage for new functionality
  • Security-focused tests for path validation and access control
  • Nil pointer protection in existing test files
  • Integration tests for delete functionality

📋 Technical Improvements

New API Endpoints

  • POST /provision/delete-file - Secure file deletion with path validation
  • Enhanced file loading and saving endpoints with better error handling

Template Gallery

  • Ready-to-use configurations for common deployment scenarios
  • Proper syntax highlighting and category organization
  • Template files for AutoYaST and Preseed provisioning methods

Database & Configuration

  • Added OS image definitions for Debian, Fedora, and openSUSE
  • No breaking changes to existing configuration
  • Maintains full backward compatibility

🎨 UI/UX Improvements

  • Visual Icons: Language and type-specific icons for better file identification
  • Help Documentation: Enhanced help section explaining file operations
  • Error Handling: Improved user feedback with detailed error messages
  • Confirmation Dialogs: Safe file operations with user confirmation prompts

🔄 Migration Notes

  • ✅ Backward Compatible: No changes required for existing deployments
  • ✅ Database: No schema changes required
  • ✅ Configuration: All existing configurations remain valid
  • ✅ Authentication: Existing sessions continue to work
  • ✅ Templates: New templates and OS support are additive

📊 Impact

This release transforms Ignite from a basic PXE boot server into a comprehensive network provisioning platform suitable for heterogeneous Linux environments. The enhanced file management capabilities, expanded OS support, and security improvements make it ideal for:

  • Lab Environments: Enhanced template library for rapid deployment
  • Infrastructure Teams: Multi-distribution support with secure file management
  • Development Workflows: Improved automation templates and better UX
  • Educational Use: Clear distinction between templates and configs

🏆 Quality Assurance

  • ✅ All existing tests pass (11 packages)
  • ✅ New functionality fully tested with 100+ new test cases
  • ✅ Security improvements validated with dedicated test suites
  • ✅ Code formatting (gofmt) and linting clean
  • ✅ No breaking changes to existing APIs
  • ✅ Documentation updated with current capabilities

Full Changelog: v2.0.0...v2.1.0

🤖 Generated with Claude Code

v2.0.0

Choose a tag to compare

@chadleeshaw chadleeshaw released this 13 Sep 16:03

🚀 Ignite v2.0.0 - Production-Ready PXE Server

🏆 Major Release Highlights

🧪 Comprehensive Testing Framework

  • Complete Unit Test Coverage across all packages with mock implementations
  • Integration Testing using QEMU for end-to-end PXE boot validation
  • 52.4% Test Coverage in vmtest package with 22 comprehensive test functions
  • Mock-Driven Testing with testify framework for reliable, isolated tests
  • Quality Assurance Pipeline with automated formatting and static analysis

💾 Advanced OS Image Management

  • Multi-OS Support: Ubuntu, NixOS, Red Hat, and custom distributions
  • Download Progress Tracking with real-time status monitoring
  • Version Control System with default version management
  • Background Download Processing with cancellation support
  • File Integrity Validation and error recovery mechanisms
  • Storage Optimization with deduplication and cleanup capabilities

⚙️ SYSLINUX Boot System

  • Dynamic Menu Generation with template-based configuration
  • Multi-Boot Support for BIOS and EFI systems
  • Advanced Boot Options: memtest, hardware diagnostics, rescue modes
  • Custom Boot File Management with automated deployment
  • Template Engine for flexible menu customization
  • Boot File Validation and integrity checking

🧪 VM-Based Integration Testing

cd vmtest
./setup-boot-files.sh    # One-time setup

# Test boot files with QEMU built-in TFTP
go run vmtest.go 1

# Test full ignite integration (DHCP + API + VM boot)
go run vmtest.go 2

# View detailed test logs and VM serial output
go run vmtest.go logs

# Clean up test artifacts
go run vmtest.go clean

Integration Tests Validate:

  • SYSLINUX boot file functionality
  • DHCP server API endpoints
  • Ignite web interface responsiveness
  • End-to-end PXE boot workflows
  • VM network boot scenarios with real hardware simulation

🐳 Production-Ready Docker Deployment

  • Multi-stage builds for minimal, secure containers
  • Non-root execution with dedicated user accounts
  • Health checks for monitoring and orchestration
  • Multi-architecture support (AMD64, ARM64)
  • Automated CI/CD with GitHub Actions

📚 Complete Visual Documentation

  • 7 Comprehensive Screenshots showcasing all major features
  • Detailed Architecture Guide explaining modular design
  • API Documentation with all 25+ endpoints documented
  • Developer Workflow instructions with testing guides

🖼️ Screenshot Gallery

Main Dashboard

Main Dashboard

DHCP Management

DHCP Management

TFTP File Management

TFTP File Management

Provision Templates

Provision Templates

OS Images Management

OS Images Management

SYSLINUX Configuration

SYSLINUX Configuration

System Status

System Status

🔬 Testing Capabilities

Unit Testing

go test ./...                    # Run all unit tests
go test -cover ./...             # Run with coverage analysis
go test -v -race ./...           # Run with race detection

Integration Testing

cd vmtest
go test -v                       # Run vmtest package tests
go run vmtest.go 1               # QEMU boot file validation
go run vmtest.go 2               # Full ignite integration test

Quality Assurance

gofmt -w .                       # Format code
go vet ./...                     # Static analysis

🎯 Core Features

Network Services

  • Integrated DHCP Server with dynamic IP allocation and lease management
  • Built-in TFTP Server for boot file serving with security controls
  • Redfish API Integration for remote server management and PXE initiation

Web Management Interface

  • Modern UI with responsive design and real-time updates
  • File Browser for TFTP directory management with upload/download
  • Template Editor with syntax highlighting for cloud-init/kickstart
  • System Monitoring with service status and health indicators

Advanced Boot Management

  • Dynamic PXE Menus with conditional logic and device detection
  • Multi-Architecture Support for x86_64, ARM64, and legacy systems
  • Boot Template Engine supporting Ubuntu, CentOS, NixOS, and custom OSes
  • Automated Provisioning with cloud-init and kickstart integration

🏗️ Architecture

Core Packages

  • app/: Application lifecycle with dependency injection
  • dhcp/: DHCP server with lease management and reservations
  • tftp/: TFTP server with security and file management
  • handlers/: HTTP API handlers with comprehensive error handling
  • routes/: Router configuration with middleware support

Specialized Components

  • osimage/: OS image management with download tracking and validation
  • syslinux/: SYSLINUX boot management with template generation
  • ipxe/: iPXE configuration with dynamic script generation
  • vmtest/: Integration testing framework with QEMU automation

🚀 Quick Start

Docker Deployment

docker run -d \
  -p 8080:8080 \
  -p 69:69/udp \
  -v $(pwd)/data:/app/data \
  -v $(pwd)/public:/app/public \
  ghcr.io/chadleeshaw/ignite:v2.0.0

Binary Installation

# Download for your platform
wget https://github.com/chadleeshaw/ignite/releases/download/v2.0.0/ignite-linux-amd64
chmod +x ignite-linux-amd64
./ignite-linux-amd64

Development Setup

git clone https://github.com/chadleeshaw/ignite.git
cd ignite
go mod download
go run . -mock-data    # Start with sample data

📋 Requirements

  • Go 1.21+ (tested with Go 1.23.4)
  • QEMU (optional, for integration testing)
  • Docker (optional, for containerized deployment)
  • curl for API testing and health checks

🔧 Configuration

All configuration via environment variables:

Variable Description Default
DB_PATH Database storage path ./data/
TFTP_DIR TFTP root directory ./public/tftp
HTTP_PORT Web interface port 8080
PROV_DIR Provisioning templates ./public/provision

🤝 Contributing

All contributions require:

  1. Comprehensive tests with mock implementations
  2. Code formatting using gofmt -w .
  3. Static analysis compliance via go vet ./...
  4. Documentation updates for new features

Development Workflow

# Quality checks
gofmt -w . && go vet ./...

# Full test suite
go test -v -race -cover ./...

# Integration testing
cd vmtest && go test -v

# Build and test
go build -o ignite .
./ignite -mock-data

📊 Test Coverage Statistics

  • Main Package: Comprehensive CLI and integration testing
  • App Package: Application lifecycle and dependency injection
  • DHCP Package: Server management and lease operations
  • TFTP Package: File serving and security validation
  • Handlers Package: HTTP API endpoint coverage
  • Routes Package: Router configuration and middleware
  • OSImage Package: Download management and file operations (22.6% coverage)
  • SYSLINUX Package: Boot file management and templates (4.3% coverage)
  • iPXE Package: Configuration generation and rendering (89.7% coverage)
  • VMTest Package: Integration testing framework (52.4% coverage)

🔗 Resources

  • Documentation: Complete architecture and API guides
  • Docker Hub: ghcr.io/chadleeshaw/ignite:v2.0.0
  • Binary Releases: Multi-platform downloads available
  • Integration Tests: QEMU-based validation framework
  • Screenshot Gallery: Visual feature documentation

Full Changelog: Complete testing infrastructure rewrite, comprehensive documentation updates, advanced OS image management, enhanced SYSLINUX capabilities, and production-ready quality improvements with Docker and CI/CD automation.

Initial Release

Choose a tag to compare

@chadleeshaw chadleeshaw released this 25 Feb 21:15

Initial Release