You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
netboot.xyz is a network boot (PXE) utility. It lets any machine on your network boot from a menu of operating systems and tools — without a USB stick, CD/DVD, or pre-downloaded ISO.
Think of it like a universal boot menu that loads over the network.
What your self-hosted container actually does
Your LXC container hosts only two things:
iPXE bootloader binaries (.efi, .kpxe files — a few hundred KB each)
iPXE menu files (plain text .ipxe scripts that define the menu structure)
That's it. The container serves ~80 MB of files total (bootloaders + menus).
When a machine PXE-boots, it:
Fetches the bootloader binary from your container (via TFTP or HTTP)
The bootloader loads the menu from your container
You pick an OS
The OS installer or live system loads directly from upstream internet mirrors at boot time
Your container is the signpost. The internet is the library.
Important: Clients need internet access to actually install/boot an OS. Your container itself does not need to store or proxy OS images.
Set boot order: Network first (or select once via boot menu, usually F11/F12)
Step 3 — Boot
Power on the machine. The iPXE bootloader loads from your container, shows the menu, and you navigate with arrow keys.
UEFI HTTP Boot (no DHCP changes)
Modern UEFI firmware supports booting directly from an HTTP URL — no DHCP options needed.
Load the bootloader directly in the UEFI shell:
http://<container-ip>/netboot.xyz.efi
Proxmox VMs: Set the VM network boot URL in the UEFI shell, or use iPXE chaining in the VM BIOS.
Available Bootloader Files
All files are served at http://<container-ip>/ and http://<container-ip>/ipxe/:
x86_64 UEFI
File
Use case
netboot.xyz.efi
Standard UEFI — recommended starting point
netboot.xyz.efi.dsk
Virtual floppy/disk image of the EFI bootloader
netboot.xyz-snp.efi
UEFI SNP — tries all network devices
netboot.xyz-snp.efi.dsk
Disk image of SNP EFI bootloader
netboot.xyz-snponly.efi
UEFI SNP — only boots from chained device
x86_64 UEFI Metal (Secure Boot / code-signed)
File
Use case
netboot.xyz-metal.efi
Secure Boot compatible UEFI bootloader
netboot.xyz-metal.efi.dsk
Disk image of metal EFI bootloader
netboot.xyz-metal-snp.efi
Secure Boot SNP — tries all network devices
netboot.xyz-metal-snp.efi.dsk
Disk image of metal SNP EFI bootloader
netboot.xyz-metal-snponly.efi
Secure Boot SNP — only chained device
x86_64 BIOS / Legacy
File
Use case
netboot.xyz.kpxe
BIOS PXE — built-in iPXE NIC drivers
netboot.xyz-undionly.kpxe
BIOS PXE fallback — use if NIC has driver issues
netboot.xyz-metal.kpxe
BIOS PXE — Secure Boot / code-signed variant
netboot.xyz.lkrn
Kernel module — load from GRUB/EXTLINUX
netboot.xyz-linux.bin
Linux binary — chainload from existing Linux boot
netboot.xyz.dsk
Virtual floppy disk for DRAC/iLO, VMware, etc.
netboot.xyz.pdsk
Padded virtual floppy disk
ARM64
File
Use case
netboot.xyz-arm64.efi
ARM64 UEFI — standard
netboot.xyz-arm64-snp.efi
ARM64 UEFI SNP — tries all network devices
netboot.xyz-arm64-snponly.efi
ARM64 UEFI SNP — only chained device
netboot.xyz-metal-arm64.efi
ARM64 Secure Boot UEFI
netboot.xyz-metal-arm64-snp.efi
ARM64 Secure Boot SNP
netboot.xyz-metal-arm64-snponly.efi
ARM64 Secure Boot SNP — only chained device
ISO / IMG (for media creation or virtual boot)
File
Use case
netboot.xyz.iso
x86_64 ISO — CD/DVD, virtual CD, DRAC/iLO, VMware
netboot.xyz.img
x86_64 IMG — USB key creation
netboot.xyz-arm64.iso
ARM64 ISO
netboot.xyz-arm64.img
ARM64 IMG — USB key creation
netboot.xyz-multiarch.iso
Combined x86_64 + ARM64 ISO
netboot.xyz-multiarch.img
Combined x86_64 + ARM64 IMG
Checksums
File
Use case
netboot.xyz-sha256-checksums.txt
SHA256 hashes for all files
BIOS vs UEFI: Use .efi for UEFI systems, .kpxe for legacy BIOS. Mixing them causes silent failures.
Secure Boot: Use the -metal- variants if your firmware enforces Secure Boot.
Customizing the Menu
Edit /var/www/html/boot.cfg inside the container:
# SSH into the container, then:
nano /var/www/html/boot.cfg
Changes take effect immediately — no service restart needed.
Common customizations:
# Set a default boot entry with 10-second timeout:set menu-timeout 10000
set menu-default linux
# Override the mirror used for Ubuntu:set mirror http://de.archive.ubuntu.com/ubuntu
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
What is netboot.xyz?
netboot.xyz is a network boot (PXE) utility. It lets any machine on your network boot from a menu of operating systems and tools — without a USB stick, CD/DVD, or pre-downloaded ISO.
Think of it like a universal boot menu that loads over the network.
What your self-hosted container actually does
Your LXC container hosts only two things:
.efi,.kpxefiles — a few hundred KB each).ipxescripts that define the menu structure)That's it. The container serves ~80 MB of files total (bootloaders + menus).
When a machine PXE-boots, it:
Your container is the signpost. The internet is the library.
What you can boot
Installation
Run on your Proxmox host:
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/ct/netboot-xyz.sh)"Creates a minimal Debian 13 LXC container:
After installation, the web interface is available at:
It shows a directory listing of all available bootloaders and menu files.
How to PXE Boot a Machine
Step 1 — Configure your DHCP server
Your DHCP server needs to tell PXE clients where to find the bootloader.
Required settings:
<container-ip>netboot.xyz.efinetboot.xyz.kpxeOPNsense / pfSense:
Services → DHCP Server → [interface] → Network Booting<container-ip>netboot.xyz.kpxenetboot.xyz.efidnsmasq (Pi-hole, AdGuard Home, OpenWrt):
ISC DHCP (
dhcpd.conf):Step 2 — Enable PXE boot on your client
In the machine's BIOS/UEFI:
Step 3 — Boot
Power on the machine. The iPXE bootloader loads from your container, shows the menu, and you navigate with arrow keys.
UEFI HTTP Boot (no DHCP changes)
Modern UEFI firmware supports booting directly from an HTTP URL — no DHCP options needed.
Load the bootloader directly in the UEFI shell:
Proxmox VMs: Set the VM network boot URL in the UEFI shell, or use iPXE chaining in the VM BIOS.
Available Bootloader Files
All files are served at
http://<container-ip>/andhttp://<container-ip>/ipxe/:x86_64 UEFI
netboot.xyz.efinetboot.xyz.efi.dsknetboot.xyz-snp.efinetboot.xyz-snp.efi.dsknetboot.xyz-snponly.efix86_64 UEFI Metal (Secure Boot / code-signed)
netboot.xyz-metal.efinetboot.xyz-metal.efi.dsknetboot.xyz-metal-snp.efinetboot.xyz-metal-snp.efi.dsknetboot.xyz-metal-snponly.efix86_64 BIOS / Legacy
netboot.xyz.kpxenetboot.xyz-undionly.kpxenetboot.xyz-metal.kpxenetboot.xyz.lkrnnetboot.xyz-linux.binnetboot.xyz.dsknetboot.xyz.pdskARM64
netboot.xyz-arm64.efinetboot.xyz-arm64-snp.efinetboot.xyz-arm64-snponly.efinetboot.xyz-metal-arm64.efinetboot.xyz-metal-arm64-snp.efinetboot.xyz-metal-arm64-snponly.efiISO / IMG (for media creation or virtual boot)
netboot.xyz.isonetboot.xyz.imgnetboot.xyz-arm64.isonetboot.xyz-arm64.imgnetboot.xyz-multiarch.isonetboot.xyz-multiarch.imgChecksums
netboot.xyz-sha256-checksums.txtCustomizing the Menu
Edit
/var/www/html/boot.cfginside the container:# SSH into the container, then: nano /var/www/html/boot.cfgChanges take effect immediately — no service restart needed.
Common customizations:
Full documentation: netboot.xyz/docs
Updating
The update script preserves your
boot.cfgcustomizations, updates menus and bootloaders to the latest release:bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/netboot-xyz.sh)"Troubleshooting
Client can't reach the container / TFTP timeout
Menu loads but OS download fails or is slow
Machine boots to local disk instead of PXE
UEFI machine ignores the boot filename
filenameoption to both BIOS and UEFI clients.efionly to UEFI clientsnetboot.xyz.kpxeworks butnetboot.xyz.efidoesn't (or vice versa)netboot.xyz.kpxeornetboot.xyz-undionly.kpxenetboot.xyz.efiornetboot.xyz-snp.efiAll reactions