Skip to content

Office Infrastructure Overview

Introduction

netboot.xyz lets you PXE boot various operating system installers or utilities from a single tool over the network. This lets you use one media for many types of operating systems or tools. The iPXE project is used to provide a user-friendly menu from within the BIOS that lets you easily choose the operating system you want along with any specific types of versions or bootable flags.

You can remotely attach the ISO to servers, set it up as a rescue option in Grub, or even set up your home network to boot to it by default so that it's always available.

Reference Documentation

Simple setup

Local instance with docker

docker run -d --name=netbootxyz ghcr.io/netbootxyz/netbootxyz\
    -e MENU_VERSION=2.0.76 \
    -e NGINX_PORT=80 \
    -e WEB_APP_PORT=3000 \
    -p 3000:3000 \
    -p 69:69/udp \
    -p 8080:80 \
    --restart unless-stopped
# To start the container:
docker start netbootxyz
# To stop the container:
docker stop netbootxyz

Info

This will bring up a "default" netboot.xyz setup, with a pretty generic menu (with many options available)
This menu needs to be configured and (at least) a new entry needs to be added for Ubuntu Server.

Reference Documentation

Router configuration (Fortigate)

config system dhcp server
    edit 2
        # ... (existing configurations for edit 2) ...
        set next-server 192.168.2.19
        set filename "netboot.xyz.efi"
        # ... (rest of the existing configurations for edit 2) ...
    next
end

To unset the above two variables, do this:

config system dhcp server
    edit 2
        unset next-server 
        unset filename
    next
end

Technical Tip: Configuring FortiGate for PXE Client booting

Warning

192.168.2.19 is the IP of the machine used in this POC (where the docker container with netboot.xyz was runing)
In a production environment this needs to be distinct machine, like the NUC or it could be the 'infra' machine that is already up and running.

Danger

Be careful when changing the router configuration, it may break the internet access.

🗒 TODO: Persistent "production-grade" configuration
🗒 TODO: Custom menu with "Ubuntu Server"
🗒 TODO: Local copy (cached) image for Ubuntu Server 22.04