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.jsonand viabootimus 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-interfacefix.
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) andipmitool(for the IPMI console). - New tables are created on first start. On PostgreSQL, databases migrated by earlier builds keep the old
disk_jobsforeign-key constraint; deleting a disk image with job history on such a database needs the constraint recreated withON 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
- @andreashaerter made their first contribution in #163
Full Changelog: v0.1.77...v0.1.78