-
v0.5.2 Pre-Release
released this
2026-05-31 16:11:59 -04:00 | 25 commits to main since this releaseOpenPXE v0.5.2
Builds on the v0.5.1 SAML SSO release with a FleetDM-style login, themable
branding, and a full unattended-install pipeline (Kickstart / Preseed /
Autoinstall / Windows answer files) wired through host pins and the queue.Pull into Unraid (host networking):
docker pull gitea.milesward.dev/mward4/openpxe:0.5.2 # or :latestAuthentication / login page
- FleetDM-style separation. The local username/password form is now a
self-contained block; when SSO is enabled, a distinct “Sign in with …”
button sits below an or divider (optionally with the IdP logo) instead of
the credential fields doubling as the SSO trigger. - The Settings → SSO copy now reflects that SAML is live (no more
“runtime pending” language).
Branding — three logo slots
Branding splits into three independent slots, all on one row in
Settings → Branding:- Light mode and Dark mode logos drive the top-left mark and the
sign-in page — whichever theme is active picks its variant (with
cross-theme fallback). Toggling the theme swaps the logo live. - Client logo is the raster painted above the PXE boot menu
(/branding/pxe-logo), seen by booting machines. - The favicon is now pinned to the bundled OpenPXE mark on its own
endpoint (/assets/favicon.svg) — it never follows custom branding, so the
browser-tab icon stays recognisably OpenPXE. - A pre-v0.5.2 single uploaded logo is migrated automatically into the
dark + client slots on first launch.
Unattended installs (Storage → Advanced)
- New Unattended file upload drop-zone: “Drop a Kickstart, Preseed,
Autoinstall, or Answer File here.” Accepts.ks,.cfg,.seed,
.yaml,.yml,.xml, anduser-data. Files are classified on upload
and stored in their own directory (/var/lib/openpxe/unattended) — never
the ISO listing or the PXE menu. - Use
{{HOSTNAME}},{{IP}},{{MAC}}placeholders in your answer file;
they are substituted per-host at boot.
Host pins + Queue profiles
- Hosts pin form gains Auto hostname (optional), Auto IP address
(optional), and an Unattended file dropdown next to Label; the table
shows an Auto-deploy summary per binding. - Queue positions gain a Profile button that prompts for the same
three fields per queued device. - On boot, a bound/queued MAC with an unattended file selected has the right
kernel argument injected automatically:- Kickstart →
inst.ks=… - Preseed →
auto=true priority=critical url=… - Autoinstall →
autoinstall ds=nocloud-net;s=…/(cloud-init NoCloud seed
dir, servinguser-data+meta-data) - The auto hostname/IP are templated into the served answer file. OpenPXE
remains a DHCP proxy — it does not assign leases; the values are
applied by the installer as static-network directives in the answer file.
- Kickstart →
Storage — Remote shares
- Default protocol is now NFS (no credential row, cleaner form).
- Updated copy: “Remote .iso libraries are read on demand — no local cache to
preserve disk usage. Support for NFS 3.0 and SMB. Ensure that the hosts IP
address is provisioned.”
Under the hood
- Still a single static
x86_64-unknown-linux-muslbinary — pure Rust, no
OpenSSL/C deps added. - Workspace: 235 tests green, clippy clean.
- New API surface:
POST/GET /api/unattended,DELETE /api/unattended/:id,
publicGET /unattended/:id(templated serve) + NoCloud seed dir;
POST/DELETE /api/branding/logo/:slot;PUT /api/queue/:id/profile;
host pin + queue entry carry an optional deployment profile.
Downloads
- FleetDM-style separation. The local username/password form is now a