DEV Community

Cover image for Building Octofleet: A Week of Zero-Touch Server Deployments (Looking for Contributors! ๐Ÿ™)
Benedikt Schackenberg
Benedikt Schackenberg

Posted on

Building Octofleet: A Week of Zero-Touch Server Deployments (Looking for Contributors! ๐Ÿ™)

Hey dev.to!

This is just a hobby project I've been hacking on because it's mega fun - and I wanted to share what happened this week. Also: I'm looking for contributors! More on that at the end.

What is Octofleet?

Octofleet is an open-source endpoint management platform I've been building. Think of it as an octopus ๐Ÿ™ with 8 arms handling all your server tasks:

  • ๐Ÿ“Š Inventory - Track all your machines
  • ๐Ÿ”ง Patching - Keep systems updated
  • ๐Ÿ’ผ Job System - Run scripts remotely
  • ๐Ÿ“ฆ Packages - Deploy software
  • ๐Ÿ›ก๏ธ Vulnerability Tracking - Stay secure
  • ๐Ÿ–ฅ๏ธ Screen Sharing - See what's happening
  • โš™๏ธ Service Orchestration - Manage services across fleet
  • ๐Ÿš€ PXE Deployment - Zero-touch OS installs โ† NEW THIS WEEK!

This Week's Adventure: PXE Boot

I wanted to solve a problem: How do I deploy Windows Server to 10 VMs without touching each one?

The answer: PXE Boot + iPXE + WinPE + HTTP

The Goal

  1. Enter MAC address in Web UI
  2. Select OS (Windows Server 2025, Ubuntu, etc.)
  3. Click "Create Job"
  4. Power on server
  5. โ˜• Grab coffee
  6. Come back to a fully installed, domain-joined server

What I Built

Backend (FastAPI + PostgreSQL):

  • Provisioning API with CRUD for tasks, images, templates
  • Dynamic iPXE script generation per MAC address
  • Status callbacks so machines report their progress

Frontend (Next.js + Tailwind):

  • Provisioning dashboard with live task queue
  • "New Job" dialog with MAC/OS selection
  • Auto-refresh every 10 seconds

PXE Infrastructure:

  • dnsmasq for DHCP + TFTP
  • nginx serving boot files over HTTP
  • Custom WinPE image with curl.exe injected

The Fun Bugs ๐Ÿ›

Oh boy, where do I start...

Bug 1: "Bad CPIO magic" on Hyper-V

  • Turns out wimboot has issues with Hyper-V Gen1 (BIOS mode)
  • Fix: Use Gen2 (UEFI) - works perfectly!

Bug 2: SMB is too slow in WinPE

  • WinPE's SMB client waits forever for DNS
  • Fix: HTTP everything! Injected curl.exe into WinPE

Bug 3: DISM Error 87

  • Scripts weren't running...
  • Cause: Unix line endings (LF) instead of Windows (CRLF)
  • Fix: unix2dos startnet.cmd ๐Ÿคฆ

Bug 4: VirtIO disk not found

  • KVM VMs couldn't see their disks
  • Wrong driver: viostor.inf vs vioscsi.inf
  • SCSI needs vioscsi!

Current Status

โœ… Working:

  • Hyper-V Gen2 deployment
  • Windows Server 2025 (all editions)
  • Full unattend.xml automation
  • German locale & timezone
  • RDP enabled out of the box
  • Web UI connected to real API

๐Ÿšง In Progress:

  • Ubuntu/Linux support (Autoinstall)
  • Windows 11 client deployment
  • KVM/libvirt testing
  • Live status callbacks in UI

The Tech Stack

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚              Octofleet UI                   โ”‚
โ”‚         (Next.js + Tailwind CSS)            โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                  โ”‚ HTTP/REST
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚           Octofleet Backend                 โ”‚
โ”‚      (FastAPI + PostgreSQL + asyncpg)       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                  โ”‚
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚             PXE Server                      โ”‚
โ”‚   (dnsmasq + nginx + iPXE + WinPE)          โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
Enter fullscreen mode Exit fullscreen mode

Why I Love This Project

It's the perfect intersection of:

  • Networking (PXE, DHCP, TFTP, HTTP)
  • Windows internals (WinPE, DISM, BCD)
  • Linux (dnsmasq, Samba, nginx)
  • Modern web (React, FastAPI, WebSockets)
  • DevOps (automation, CI/CD, infrastructure as code)

Every day I learn something new. This week alone I learned:

  • How iPXE works internally
  • WinPE customization
  • The difference between BIOS and UEFI boot
  • Why SMB in WinPE is painful
  • How to inject files into a boot image

Looking for Contributors! ๐Ÿ™‹โ€โ™‚๏ธ

This is where you come in! I'm looking for people who want to:

  • Use it - Test it in your homelab, report bugs
  • Hack on it - Pick an issue, send a PR
  • Document - Help make the docs better
  • Design - The UI could always be prettier
  • Ideas - What features would YOU want?

No experience required! If you're learning and want a real project to contribute to, this is it. I'll help you get started.

Good First Issues

  • ๐Ÿง Add Ubuntu 24.04 support
  • ๐Ÿ“ Improve API documentation
  • ๐Ÿงช Write more tests
  • ๐ŸŽจ Dark mode improvements
  • ๐Ÿ“Š Dashboard widgets

How to Get Started

  1. Star the repo: github.com/BenediktSchackenberg/octofleet
  2. Check the issues: Look for good first issue labels
  3. Join the Discord: Link in the repo README
  4. Say hi! Drop a comment here or open a discussion

What's Next?

Next week I'm planning to:

  • Get Ubuntu autoinstall working
  • Add Windows 11 support
  • Build a "Systems Registry" to track provisioned machines
  • Maybe record a demo video?

Conclusion

Building Octofleet has been incredibly fun. There's something magical about:

  1. Clicking a button
  2. Watching a VM boot from the network
  3. Seeing Windows install itself
  4. Getting a notification "Server ready!"

All without touching a single USB stick or clicking through an installer.

If this sounds interesting to you - come join the fun! ๐Ÿ™


Links:

Happy deploying!

Top comments (0)