96249d0c06354744fde1e30a55df4df3fac5ac84
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:
-
Copy
snippets/ipxeto your snippets directory -
Add to top of your Caddyfile:
import snippets/ipxe -
Add the
ipxe.nuc.lanblock (or paste the content fromipxe.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.
Description
Languages
Dockerfile
49.9%
Shell
41.8%
Vim Snippet
8.3%