github garybowers/bootimus v0.1.78

3 hours ago

The largest Bootimus release so far: provisioning workflows, lights-out management, imaging, new platforms, a hardened admin surface and three new kinds of automated test. Several features touch hardware that has only been exercised in virtual machines; they are marked below, and reports from real kit are very welcome.

Provisioning

  • Deployment profiles bundle an image, auto-install file, SAN target, bootloader set, disk image and a first-boot action, assigned to clients or groups and resolved at boot time, so editing a profile changes every member.
  • Auto-enrolment rules place newly discovered machines into a group and profile by MAC prefix, manufacturer, product, serial pattern, UUID or firmware, evaluated when the inventory arrives so the very first boot gets the right menu.
  • Install completion tracking for every installer: a per-install callback URL for kickstart, preseed, cloud-init and autounattend, with state on the client row, a timeout sweep and webhook events.
  • Auto-install templating with variables, preview and validation, plus openSUSE AutoYaST, Ignition and Proxmox VE formats, and AutoUnattend.xml delivered to WinPE through wimboot.
  • Client detail page with a merged timeline of boots, installs, disk jobs, proxyDHCP events and audit entries, hardware history with change highlighting, and the effective settings with their source.

Lights-out management and imaging

  • Remote console in the browser over Intel AMT Serial-over-LAN (native) and IPMI SOL via ipmitool, next to the existing power controls. Not yet verified on real hardware.
  • Disk capture and deploy with Clonezilla: capture a client's disk into an image store and deploy it to one client or a whole group, over a per-job writable NFS export. Not yet verified on real hardware.
  • iSCSI, AoE and HTTP SAN boot targets with CHAP, per client or group, as a menu entry, default or one-shot next boot. Not yet verified against a real target.
  • PXE Debug page showing every DHCP request the built-in proxyDHCP saw and what it decided, for the "why did my client not boot" conversation.
  • Boot menu preview per client, rendering exactly what that MAC would receive without side effects.

Platforms and images

  • WinPE and rescue media (Strelec, Active Boot and similar) boot through wimboot with a selector for which WIM to load.
  • OpenBSD and NetBSD netboot through their own PXE loaders served over TFTP. New, untested on real hardware; see the images guide for caveats.
  • Checksum verification of catalogue downloads and "update available" badges for installed images and tools, checked daily.
  • Multi-site: a read-only replica syncs clients, images, groups, targets, theme, tools and auto-install files from a primary using an API token and keeps serving when the primary is unreachable.

Admin surface

  • Scoped API tokens, TOTP two-factor authentication with recovery codes, login lockout after repeated failures, and HTTPS for the admin interface with an optional self-signed certificate.
  • Audit log of every change made through the admin API, with an optional webhook event.
  • Housekeeping with configurable retention for boot logs, inventory history, discovered clients and audit entries, and a data directory usage view.
  • Backup restore from the UI, staged and applied on the next start, now surviving a failed PostgreSQL restore instead of refusing to start.
  • OpenAPI document at /api/openapi.json and via bootimus openapi, driving the in-app API reference.
  • Per-client bootloader set overrides are now applied at boot, and the proxyDHCP start error explains a UDP/67 clash and the --bind-interface fix.

Also since 0.1.77

  • OpenID Connect single sign-on (Authentik, Keycloak, Microsoft Entra ID, Google and others) with admin rights mapped from groups, usernames or domains, and LDAP users provisioned locally with their source recorded.
  • Read-only role: non-admin users can view clients, images and boot activity without changing anything or seeing BMC passwords.
  • Unified kernel images detected, uploaded, downloaded and booted.
  • Intel AMT power control alongside Redfish, behind a BMC protocol abstraction.
  • proxyDHCP option 43 can be omitted globally or per client; client CSV import and export keep BMC settings, auto-install file and that option; a duplicate MAC answers 409; legacy Ubuntu ISOs use the netboot files they carry, with more architectures covered; smbd failing to start is detected and reported.

Testing

  • Every pull request now PXE boots BIOS and UEFI virtual machines in QEMU against a real Bootimus, runs the storage and backup suites against PostgreSQL, and drives the admin UI with Playwright, alongside the existing unit and OIDC tests.

Upgrade notes

  • The Docker image now includes postgresql-client (for backup and restore) and ipmitool (for the IPMI console).
  • New tables are created on first start. On PostgreSQL, databases migrated by earlier builds keep the old disk_jobs foreign-key constraint; deleting a disk image with job history on such a database needs the constraint recreated with ON DELETE SET NULL.
  • Documentation for every feature is available in English, German, Spanish, French, Russian and Simplified Chinese.

Pull requests

  • Document Bearer token auth and the assign-images route by @andreashaerter in #163
  • OIDC single sign-on, read-only role and LDAP login fix by @garybowers in #164
  • Answer 409 when a client with the same MAC already exists by @andreashaerter in #162
  • Reject clients without a MAC and stop returning storage errors by @garybowers in #165
  • Use the netboot files that legacy Ubuntu ISOs carry by @andreashaerter in #161
  • Choose netboot files by detected distribution and cover more Ubuntu arches by @garybowers in #166
  • Detect and report smbd failing to start by @garybowers in #167
  • Translate the SMB data directory notes by @garybowers in #168
  • Add Intel AMT power control behind a BMC protocol abstraction by @garybowers in #170
  • Fix Chinese docs falling back to English on the website by @garybowers in #171
  • Apply per-client bootloader set overrides by @garybowers in #172
  • Apply per-client bootloader set overrides by @hcaldicott in #115
  • Commit the website manifest data module and anchor the data ignore rule by @garybowers in #173
  • Preview the boot menu a client would receive without side effects by @garybowers in #174
  • Lock out repeated failed logins per user and client address by @garybowers in #175
  • Restore backups from the admin UI by staging them for the next start by @garybowers in #176
  • Record proxyDHCP requests and show them on a PXE Debug page by @garybowers in #177
  • Record admin API changes in an audit log by @garybowers in #178
  • Add housekeeping with configurable retention for boot logs, inventory and discovered clients by @garybowers in #179
  • Serve an OpenAPI document and render the API reference from it by @garybowers in #180
  • Serve the admin interface over HTTPS with optional self-signed certificates by @garybowers in #182
  • Boot WinPE rescue media and choose which WIM a Windows image loads by @garybowers in #183
  • Boot clients from iSCSI, AoE and HTTP SAN targets by @garybowers in #184
  • Track unattended installs and accept completion callbacks from any distro by @garybowers in #185
  • Format the client model fields by @garybowers in #188
  • Add scoped API tokens for scripts and integrations by @garybowers in #181
  • Add TOTP two-factor authentication for local accounts by @garybowers in #187
  • Add a browser serial console over Intel AMT and IPMI Serial-over-LAN by @garybowers in #189
  • Verify catalogue downloads and flag newer releases of installed images and tools by @garybowers in #186
  • Netboot OpenBSD and NetBSD through their own PXE loaders over TFTP by @garybowers in #190
  • Capture and deploy disk images with Clonezilla by @garybowers in #191
  • Translate today's new documentation sections into Russian by @garybowers in #192
  • Translate today's new documentation sections into French by @garybowers in #193
  • Translate today's new documentation sections into Spanish by @garybowers in #194
  • Translate today's new documentation sections into German by @garybowers in #195
  • Translate the new feature documentation into Simplified Chinese by @garybowers in #196
  • Add read-only replicas that sync from a primary Bootimus by @garybowers in #197
  • Describe today's features in the README and on the website by @garybowers in #198
  • Deliver rendered AutoUnattend.xml to WinPE through wimboot by @garybowers in #199
  • Translate the disk imaging and multi-site documentation by @garybowers in #200
  • Auto-install templating: variables, preview and validation by @garybowers in #201
  • Broaden auto-install formats: openSUSE, Ignition and Proxmox VE by @garybowers in #202
  • Boot QEMU virtual machines against bootimus in an end-to-end test by @garybowers in #203
  • Add a client detail page with a merged activity timeline by @garybowers in #204
  • Add deployment profiles resolved at boot for clients and groups by @garybowers in #205
  • Enrol newly discovered clients into groups and profiles by rule by @garybowers in #206
  • Show the deployment profile, enrolment rule and effective settings on the client detail page by @garybowers in #207
  • Survive a failed PostgreSQL restore and drop newer-server settings from dumps by @garybowers in #208
  • Run the storage, server and admin tests against PostgreSQL in CI by @garybowers in #209
  • Add Playwright smoke tests for the admin UI by @garybowers in #210
  • Explain a UDP/67 address clash and point at --bind-interface by @garybowers in #211
  • Release v0.1.78 by @garybowers in #212

New Contributors

Full Changelog: v0.1.77...v0.1.78

Don't miss a new bootimus release

NewReleases is sending notifications on new releases.