Giter Site home page Giter Site logo

ara225 / node-js-pxe-server Goto Github PK

View Code? Open in Web Editor NEW
11.0 1.0 1.0 136 KB

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

Home Page: https://www.npmjs.com/package/pxe-server

License: MIT License

JavaScript 100.00%
pxe tftp dhcp javascript cli linux

node-js-pxe-server's Introduction

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.

node-js-pxe-server's People

Contributors

ara225 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

hertzg

node-js-pxe-server's Issues

cannot get dhcp leases...

I tried a bit your pxe-server, but I can't get dhcp release. To have a nice nodejs dhcp server is my old dream, I used years ago node-dhcp from infusion, but I had problems understanding dhcp proxy. I want a little tool who can work in a preexistent LAN.

Actually I have something running with dnsmasq, can be good enoughe, but in this way I need to install that package.

My idea is to made isos in same way autoserving on a LAN - I'm author of a remastering tools called penguins-eggs - and if it is possible to use nodejs for dhcp-proxy - will be possible to boot iso images from one computer and install them in another on the LAN,

Anyway I want to ask you if this repo in again active and if you are using it. Thanx a lot for your efforts

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.