v1.x · apache 2.0 go · iPXE · sqlite/postgres

Boot PXE,
sans prise de tête.

Serveur de boot PXE et HTTP autonome. Un seul binaire. Zéro config. proxyDHCP intégré, tu ne touches jamais à ton routeur. 50+ distros détectées automatiquement.

pts/0
bootimus — démarrage rapide
# Pull, run, PXE boots. Thirty seconds.
$ docker run -d --name bootimus \
    --cap-add NET_BIND_SERVICE \
    -p 67:67/udp -p 69:69/udp \
    -p 8080:8080/tcp -p 8081:8081/tcp \
    -v $(pwd)/data:/data \
    garybowers/bootimus:latest

$ docker logs bootimus | grep Password
admin: Password: 7f3a-plum-swift-echo

$ open http://localhost:8081
50+
distros détectées
1
binaire, zéro dépendance
0
DHCP à reconfigurer
2
arch : amd64 · arm64
// fonctionnalités

Tout ce qu'un setup netboot moderne doit être.

Pas un fork de scripts Perl vieux de 15 ans. Pas un wrapper autour de dnsmasq. Un vrai serveur, écrit en Go, batteries incluses.

[01]

Un seul binaire

Binaire Go avec iPXE embarqué, UI web, SQLite et tous les assets. Aucune dépendance à l'exécution. scp et go.

[02]

proxyDHCP intégré

Répond au PXE sur UDP/67 sans toucher à ton DHCP existant. Zéro reconfiguration du routeur. Plug & play sur n'importe quel LAN.

[03]

50+ distros

Extraction automatique du kernel/initrd pour Ubuntu, Debian, Arch, Fedora, NixOS, Alpine, FreeBSD, Windows (wimboot) et plus.

[04]

ACL par MAC

Assigne des images spécifiques par MAC. Les nouveaux clients sont auto-détectés au premier PXE. Passe les leases en statique quand c'est prêt.

[05]

Outils en un clic

GParted, Clonezilla, Memtest86+, SystemRescue, ShredOS, netboot.xyz. Active-les depuis l'UI, ils apparaissent dans le menu.

[06]

JWT + LDAP

Auth par token avec bcrypt. Backend LDAP/AD optionnel avec admin par groupes. Les comptes locaux restent en fallback.

[07]

API REST

Tout ce que fait l'UI passe par un appel API. Assignations de boot scriptables, scans, WoL. Flux de logs live en SSE.

[08]

Tourne partout

Docker multi-arch (amd64/arm64), binaire statique, ou une image appliance Alpine de 2 Go à flasher sur USB.

[09]

Installations sans surveillance

Déposez autounattend.xml, kickstart, preseed ou cloud-init. Attachez à une image par défaut, surchargez par client. Bootimus l'injecte au boot — zéro clic, zéro assistant.

// fonctionnement

Le cycle de vie d'un boot PXE.

Le client envoie un DHCPDISCOVER. Bootimus répond avec les détails PXE via proxyDHCP pendant que ton DHCP habituel distribue toujours l'IP. iPXE charge via TFTP, chain vers HTTP, récupère le menu. L'utilisateur choisit une image. Kernel et initrd streament depuis le serveur. Fin.

pts/0
pxe boot trace — ubuntu-24.04
# Client boots, sends DHCPDISCOVER broadcast
[dhcp]   DHCPDISCOVER from b4:2e:99:01:5f:a3 (no PXE options from primary DHCP)
[proxy]  DHCPOFFER-PXE: next-server=bootimus, filename=ipxe.efi
[tftp]   RRQ ipxe.efi  (198 KiB, 14 ms)

# iPXE loads, chains to HTTP menu
[http]   GET /menu.ipxe  200  2.1 KiB
[menu]  17 images · 3 groups · 6 tools
[menu]  user selected: ubuntu-24.04-live-server

# Kernel + initrd stream over HTTP
[http]   GET /iso/ubuntu-24.04/vmlinuz  200  14 MiB · 612 MB/s
[http]   GET /iso/ubuntu-24.04/initrd   200  76 MiB · 598 MB/s
[boot]  handoff ok · client booting
// transparence

100% ouvert. Auditable de bout en bout.

Pas de blobs propriétaires. Pas de télémétrie. Pas de firmware binaire planqué dans un vendor/. Tout le stack est sur GitHub sous Apache 2.0 — clone, audite, fork, auto-héberge.

  • Un seul binaire Go · lié statiquement, ldd renvoie "not a dynamic executable". Builds reproductibles via make release.
  • Zéro blob propriétaire · l'iPXE embarqué est du FOSS upstream (GPL-2.0). Aucun firmware closed-source embarqué.
  • Aucune télémétrie, jamais · zéro call-home. Zéro analytics. Zéro "stats d'usage anonymes". Compatible air-gap.
  • Apache 2.0 · licence permissive. Utilise-le en commercial, distribue-le en interne, forke-le sans contraintes.
  • Dépendances vendored, toutes FOSS · chaque dépendance Go transitive est open source. go mod why sur n'importe quel package.
  • Apporte ton propre bootloader · pas confiance dans l'iPXE embarqué ? Dépose tes binaires signés. Voir plus bas.
pts/0
bootimus version --verbose
$ bootimus version --verbose
bootimus      1.0.0
commit       8e87824 (clean)
go           1.23.4 linux/amd64
build        static · reproducible
licence      Apache-2.0

embedded
  ipxe        1.21.1+upstream  GPL-2.0
  proprietary 0 blobs
  telemetry   disabled (compile-time)

$ ldd ./bootimus
not a dynamic executable

$ sha256sum ./bootimus
7f3a9b0c…  bootimus
// bootloaders

Remplace iPXE par ce qu'il te faut.

Bootimus embarque iPXE pour chaque architecture courante. Besoin de binaires signés Microsoft pour Secure Boot, d'un iPXE customisé, de GRUB, syslinux, ou de ton loader signé par ta CA interne ? Dépose un dossier dans data/bootloaders/, sélectionne-le dans l'UI, c'est fait. Les fichiers manquants basculent transparent sur le set embarqué — jamais un boot cassé.

iPXE · UEFI x86_64

ipxe.efi · la valeur par défaut. Buildé depuis upstream master, embarqué dans le binaire.

embarqué · fallback

iPXE · UEFI ARM64

ipxe-arm64.efi · pour les Raspberry Pi 4/5, les hôtes Apple Silicon, les serveurs ARM.

embarqué · fallback

iPXE · BIOS legacy

undionly.kpxe · pour le vieux matos qui ne veut rien savoir de l'UEFI. Toujours d'actualité en 2026.

embarqué · fallback

Shim signé Microsoft

Dépose un shimx64.efi + grubx64.efi signés pour les flottes en Secure Boot obligatoire. Pas besoin d'enrôlement MOK dans le firmware.

custom · BYO

iPXE customisé

Compile ton propre iPXE avec branding, couleurs de menu perso, scripts embarqués. Dépose le .efi.

custom · BYO

GRUB / syslinux / pxelinux

Pas d'iPXE ? Pas de souci. Tout ce qui parle TFTP et HTTP fonctionne. Bootimus sert juste des octets.

custom · BYO
pts/0
sets de bootloader — file fallthrough
$ tree /var/lib/bootimus/bootloaders
data/bootloaders
├── ipxe-builtin/          # embedded — always available
│   ├── ipxe.efi
│   ├── ipxe-arm64.efi
│   └── undionly.kpxe
├── ipxe-secureboot/       # your custom set
│   ├── shimx64.efi             (signed by Microsoft)
│   ├── grubx64.efi             (signed by Microsoft)
│   └── ipxe.efi                (signed by your CA)
└── ipxe-themed/
    └── ipxe.efi                (custom branding)

$ bootimus bootloaders use ipxe-secureboot
 active set: ipxe-secureboot
 falls back to ipxe-builtin for: ipxe-arm64.efi, undionly.kpxe

# PXE boot trace, Secure Boot client
[tftp] RRQ shimx64.efi      → ipxe-secureboot/shimx64.efi
[tftp] RRQ ipxe-arm64.efi   → ipxe-builtin/ipxe-arm64.efi (fallback)

Marre de babysitter tftpd ?

Docker, bare metal, ou USB flashable. Choisis ton poison.