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

Arranque PXE,
sin tanto lío.

Servidor de arranque PXE y HTTP autocontenido. Un solo binario. Cero configuración. proxyDHCP integrado: no vuelves a tocar tu router. 50+ distros detectadas automáticamente.

pts/0
bootimus — inicio rápido
# 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 detectadas
1
binario, cero dependencias
0
reconfiguraciones DHCP
2
arch: amd64 · arm64
// características

Todo lo que un setup netboot moderno debería ser.

No es un fork de scripts Perl de hace 15 años. No es un wrapper sobre dnsmasq. Un servidor de verdad, escrito en Go, con todo incluido.

[01]

Un solo binario

Binario Go con iPXE embebido, UI web, SQLite y todos los assets. Sin dependencias en runtime. scp y listo.

[02]

proxyDHCP integrado

Responde PXE en UDP/67 sin tocar tu DHCP actual. Cero reconfiguración del router. Enchufa y va en cualquier LAN.

[03]

50+ distros

Extracción automática de kernel/initrd para Ubuntu, Debian, Arch, Fedora, NixOS, Alpine, FreeBSD, Windows (wimboot) y más.

[04]

ACL por MAC

Asigna imágenes específicas por MAC. Los clientes nuevos se detectan solos en el primer PXE. Asciende leases a estáticos cuando quieras.

[05]

Tools en un clic

GParted, Clonezilla, Memtest86+, SystemRescue, ShredOS, netboot.xyz. Actívalos desde la UI y aparecen en el menú.

[06]

JWT + LDAP

Auth por token con bcrypt. Backend LDAP/AD opcional con admin basado en grupos. Las cuentas locales siguen como fallback.

[07]

API REST

Todo lo que hace la UI es una llamada a la API. Asignaciones de arranque scripteables, scans, triggers WoL. Stream de logs en vivo por SSE.

[08]

Corre en todos lados

Docker multi-arch (amd64/arm64), binario estático, o una imagen appliance basada en Alpine de 2 GB para flashear a USB.

[09]

Instalaciones desatendidas

Suelta autounattend.xml, kickstart, preseed o cloud-init. Adjúntalo a una imagen por defecto, sobreescríbelo por cliente. Bootimus lo inyecta al arrancar — sin clics, sin asistente.

// cómo funciona

El ciclo de vida de un arranque PXE.

El cliente manda un DHCPDISCOVER. Bootimus responde los detalles PXE vía proxyDHCP mientras tu DHCP normal sigue repartiendo IPs. iPXE carga por TFTP, encadena a HTTP, trae el menú. El usuario elige una imagen. Kernel e initrd stream desde el servidor. Listo.

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
// transparencia

100% abierto. Auditable de punta a punta.

Cero blobs propietarios. Cero telemetría. Cero firmware binario escondido en un vendor. El stack entero está en GitHub bajo Apache 2.0 — clona, audita, forkea, monta el tuyo.

  • Un solo binario Go · enlazado estáticamente, ldd dice "not a dynamic executable". Builds reproducibles desde make release.
  • Cero blobs propietarios · el iPXE embebido es FOSS upstream (GPL-2.0). Ningún firmware closed-source.
  • Cero telemetría, nunca · cero call-home. Cero analytics. Cero "estadísticas anónimas de uso". Apto para redes air-gapped.
  • Apache 2.0 · licencia permisiva. Úsalo en entornos comerciales, distribúyelo internamente, forkéalo sin ataduras.
  • Deps vendoreadas, todas FOSS · cada dependencia Go transitiva es open source. go mod why sobre cualquier paquete.
  • Trae tu propio bootloader · ¿no te fías del iPXE embebido? Mete tus propios binarios firmados. Mira abajo.
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

Cambia iPXE por lo que necesites.

Bootimus trae iPXE embebido para cada arquitectura común. ¿Necesitas binarios firmados por Microsoft para Secure Boot, un iPXE con branding propio, GRUB, syslinux, o tu loader firmado por tu CA interna? Mete una carpeta en data/bootloaders/, selecciónala en la UI, listo. Los archivos que falten vuelven transparente al set embebido — nunca un arranque roto.

iPXE · UEFI x86_64

ipxe.efi · el default. Compilado desde upstream master, embebido en el binario.

embebido · fallback

iPXE · UEFI ARM64

ipxe-arm64.efi · para Raspberry Pi 4/5, hosts Apple Silicon, servidores ARM.

embebido · fallback

iPXE · BIOS legacy

undionly.kpxe · para cacharros viejos que no quieren saber nada de UEFI. En 2026 todavía relevante.

embebido · fallback

Shim firmado por Microsoft

Mete un shimx64.efi + grubx64.efi firmados para flotas con Secure Boot obligatorio. No hace falta enrolar MOK en el firmware.

custom · BYO

iPXE con branding propio

Compila tu propio iPXE con branding, colores de menú a medida, scripts embebidos. Suelta el .efi y ya.

custom · BYO

GRUB / syslinux / pxelinux

¿No quieres iPXE? No problem. Cualquier cosa que hable TFTP y HTTP funciona. Bootimus solo sirve bytes.

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)

¿Harto de hacer de niñera de tftpd?

Docker, bare metal o USB flasheable. Elige tu veneno.