iPXE Server
This commit is contained in:
48
README.md
Normal file
48
README.md
Normal file
@@ -0,0 +1,48 @@
|
||||
# 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:
|
||||
|
||||
```caddy
|
||||
@ipxe host ipxe.nuc.lan
|
||||
handle @ipxe {
|
||||
reverse_proxy ipxe-server:8080
|
||||
}
|
||||
```
|
||||
|
||||
**Quick deploy:**
|
||||
|
||||
```bash
|
||||
./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.
|
||||
|
||||
Reference in New Issue
Block a user