Files
ipxe-container/README.md
2026-02-02 21:50:03 +01:00

1.4 KiB

IPXE Boot server

Boot from ipxe.nuc.lan:8080

Files

File Purpose
ipxe-server.container Quadlet unit joining internal_caddy network
Containerfile Alpine + nginx serving boot assets on port 8080
snippets/ipxe Caddy snippet with reusable proxy directives
caddy/ipxe.caddyfile Site block for ipxe.nuc.lan (HTTP + HTTPS)
setup.sh Automated deployment script

Integration with existing Caddyfile:

  1. Copy snippets/ipxe to your snippets directory

  2. Add to top of your Caddyfile:

    import snippets/ipxe
    
  3. Add the ipxe.nuc.lan block (or paste the content from ipxe.caddyfile)

Or since you have *.nuc.lan already, add this matcher to your wildcard block:

@ipxe host ipxe.nuc.lan
handle @ipxe {
    reverse_proxy ipxe-server:8080
}

Quick deploy:

./setup.sh install   # Creates dirs, builds image, installs Quadlet
./setup.sh start     # Starts via systemd

# Add boot files
cp vmlinuz initrd.img ~/ipxe/boot/
cp squashfs.img ~/ipxe/images/fedora-42/

Note: HTTP is intentionally kept open for ipxe.nuc.lan:80 because most PXE ROMs chainload via HTTP before the full iPXE stack with HTTPS support is loaded. The local network restriction handles security.