NodeJS helper Application for managing local deployments of netboot.xyz
  • JavaScript 67.8%
  • EJS 27.6%
  • Shell 3.4%
  • Dockerfile 1.2%
Find a file
Antony Messerli 53bb84527a
Merge pull request #133 from netbootxyz/fix/isbinaryfile-esm-mock
Fix ESM parse error for isbinaryfile mock in tests
2026-03-15 16:06:21 -05:00
.github Merge pull request #128 from netbootxyz/renovate/docker-build-push-action-7.x 2026-03-15 16:00:24 -05:00
lib Update lib/utils.js 2025-06-07 13:38:30 -05:00
public Add dark mode support to webapp UI 2025-06-11 23:22:58 -05:00
root Update root to align with docker-netbootxyz 2023-10-21 15:47:29 -05:00
tests Use manual mock factory for isbinaryfile to avoid ESM parse error 2026-03-15 16:03:12 -05:00
.gitignore initial skeleton app to establish development container 2019-12-02 20:42:41 -08:00
app.js Incomplete URL substring sanitization 2025-02-12 22:11:30 -06:00
Dockerfile Update alpine Docker tag to v3.23.3 2026-03-15 20:40:21 +00:00
jest.config.js Add comprehensive test suite and CI integration 2025-06-07 13:24:31 -05:00
LICENSE initial skeleton app to establish development container 2019-12-02 20:42:41 -08:00
package.json Merge pull request #113 from netbootxyz/renovate/systeminformation-5.x 2026-03-15 16:01:58 -05:00
README.md Enhance README with professional formatting and comprehensive documentation 2025-06-07 17:50:02 -05:00
renovate.json Migrate config renovate.json 2025-01-05 21:33:37 +00:00

netboot.xyz webapp

Build Status Test Coverage Node.js Version License

A modern web interface for editing iPXE boot menus and managing local asset mirrors for the netboot.xyz ecosystem.

Features

  • 🔧 Menu Editor: Visual interface for editing iPXE configuration files
  • 📦 Asset Management: Download and mirror boot assets locally for faster performance
  • 🔄 Real-time Updates: Live menu updates with WebSocket integration
  • 📊 System Monitoring: Track download progress and system status
  • 🐳 Docker Integration: Seamlessly integrated with docker-netbootxyz

🚀 Quick Start

Prerequisites

  • Node.js 18+ for development
  • Docker for containerized deployment

Development Setup

  1. Clone and setup:

    git clone https://github.com/netbootxyz/webapp
    cd webapp
    npm install
    
  2. Run tests:

    npm test              # Run unit tests
    npm run test:coverage # Run with coverage report
    npm run test:watch    # Watch mode for development
    
  3. Start development server:

    npm start             # Start the webapp
    

Building with Docker

git clone https://github.com/netbootxyz/webapp
cd webapp
git clone https://github.com/netbootxyz/docker-netbootxyz
docker build . -t netbootxyz-webapp

🐳 Docker Deployment

Running the Webapp

docker run -d \
  --name=netbootxyz-webapp \
  -e MENU_VERSION=2.0.84             # optional: specify menu version \
  -p 3000:3000                       # webapp interface \
  -p 69:69/udp                       # TFTP server \
  -p 8080:80                         # NGINX asset server \
  -v /local/path/to/config:/config   # optional: persistent config \
  -v /local/path/to/assets:/assets   # optional: asset cache \
  --restart unless-stopped \
  netbootxyz-webapp

Port Configuration

Port Service Description
3000 Webapp Main web interface for menu editing
8080 NGINX Static asset hosting and download cache
69/udp TFTP Serves iPXE boot files to network clients

Development Builds

For the latest development version with cutting-edge features:

docker run -d \
  --name=netbootxyz-webapp-dev \
  -e MENU_VERSION=2.0.84             # optional: specify menu version \
  -p 3000:3000                       # webapp interface \
  -p 69:69/udp                       # TFTP server \
  -p 8080:80                         # NGINX asset server \
  -v /local/path/to/config:/config   # optional: persistent config \
  -v /local/path/to/assets:/assets   # optional: asset cache \
  --restart unless-stopped \
  ghcr.io/netbootxyz/webapp-dev:latest

🧪 Testing

The webapp includes comprehensive test coverage (90%+ coverage):

# Available test commands
npm test                 # Run unit tests (fastest)
npm run test:all         # Run all tests including integration
npm run test:coverage    # Generate coverage report
npm run test:watch       # Watch mode for development
npm run test:integration # Integration tests only
npm run test:debug       # Debug mode with verbose output

Test Results

  • 62 test cases covering core functionality
  • 90% code coverage with branch coverage
  • Sub-second test execution for rapid development feedback

📊 Project Stats

Metric Value
Test Coverage 90%
Test Suites 5
Total Tests 62
Node.js Version 18+
License Apache 2.0

🤝 Contributing

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Run tests: npm test
  4. Commit changes: git commit -m 'Add amazing feature'
  5. Push to branch: git push origin feature/amazing-feature
  6. Open a Pull Request

📝 License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.