Skip to content

A simple CLI JavaScript PXE server (server to boot computers/VMs over a network) implemented in JavaScript using node.js.

License

Notifications You must be signed in to change notification settings

Ara225/node-js-pxe-server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Overview

A simple JavaScript PXE server implemented with node.js. It's built on top of the the excellent dhcp and tftp npm modules. Feedback or contributions welcome.

See https://tools.ietf.org/html/rfc4578 for more details on the PXE sever protocol.

Features

  • No platform specific code - should run anywhere node.js can. Can be compiled to native code with pkg
  • A REST API for getting client PC details, can be disabled
  • JSON configuration files
  • Can configure a PXE Linux install
  • Run at CLI or import with require

Usage

Command line

Simply call the module (run node index.js or npx pxe-server if installed with npm) at the command line with a path to to an options file (see below) as the first and only argument.

JavaScript API

Start server

const pxeServer = require(pxe-server);
const options = require(PATH_TO_OPTIONS_JSON_FILE);
pxeServer.initialize(options);

Get clients

let clients = pxeServer.getClients();

Get IP Map

let IpMap = pxeServer.getIpMap();

REST API

  • /clients - Get list of client PCs
  • /ipmap - Get IP map

Options

This tool is designed to load options from a JSON file as there will be rather a lot of them, though of course you could construct a JS object any way you want if calling from a program. The options.json file supplied with the module is an complete, working example - you can just tweak the settings for your environment.

Option Name Required Description
apiEnabled Required Whether the REST API is enabled. Possible values: true or false
configurePxeLinux Required Whether it should configure pxeLinux config files. Possible values: true or false
tftpOptions Required Options to be passed to the tftp module. The ones used in options.json are the bare minium needed. See for more details
dhcpOptions Required Options to be passed to the dhcp module. The ones used in options.json are the bare minium needed. See for more details
apiOptions Required if API is enabled Currently supports only host (IP to bind to, optional) and port (port to bind to, optional)
pxeLinuxOptions Required if PXE Linux configuration is enabled Requires sub keys
* location - path to pxelinux.cfg folder
* configs - Defines PXELinux config files to create. Each key is a name of a configuration file to create. The header section defines the starting part of the file and bootOptions defines the available boot options
bindHost Optional Host (IP) for the DHCP server to bind to.

Troubleshooting

TFTP request aborted or file not found errors are relatively normal errors. Please note that this module needs to be run as root on Linux or as member of the Administrators group on Windows due to the need to bind to ports below 1024 for DHCP and TFTP.

Aside from this, most problems would be due to the underlying DHCP or TFTP modules.

About

A simple CLI JavaScript PXE server (server to boot computers/VMs over a network) implemented in JavaScript using node.js.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published