Skip to main content

Command Palette

Search for a command to run...

Setting Up Remote Boot (PXE) at Home with iVentoy

Updated
•2 min read•View as Markdown
Setting Up Remote Boot (PXE) at Home with iVentoy

If you are familiar with Ventoy, you know it’s a game-changer for creating multiboot USB drives. You simply copy ISO files onto a flash drive, and the tool handles the rest.

iVentoy takes this concept to the next level: it allows you to boot and install operating systems on multiple machines over the network with virtually zero configuration. The workflow is just as simple—drop your ISO files into a folder and select PXE boot on the client machine.

Here is how I deployed iVentoy using Docker to streamline my home lab.

1. Router Configuration (OpenWrt)

To make PXE work, your network needs to know where the boot server is. I configured the dnsmasq DHCP server on my OpenWrt router to provide the necessary PXE parameters to all devices.

Add the following to your /etc/config/dhcp (or via LuCI):

config boot
    option servername 'server'
    option serveraddress '192.168.1.20' # IP of your iVentoy host
    option filename 'iventoy_loader_16000'

2. Crafting the Docker Image

I created a lightweight Docker image based on Debian to host the iVentoy binaries.

Dockerfile:

FROM debian:bookworm-slim
ARG IVENTOY_VER=1.0.19

# Download and extract iVentoy
ADD https://github.com/ventoy/PXE/releases/download/v$IVENTOY_VER/iventoy-$IVENTOY_VER-linux-free.tar.gz /tmp/iventoy.tar.gz
RUN tar -xf /tmp/iventoy.tar.gz -C /opt && \
    mv /opt/iventoy-$IVENTOY_VER /opt/iventoy

VOLUME /opt/iventoy/iso
# Ports for DHCP, TFTP, NBD, and Web UI
EXPOSE 68/udp 69/udp 10809/tcp 16000/tcp 26000/tcp

ENTRYPOINT ["bash", "-c", "cd /opt/iventoy && ./iventoy.sh -R start && sleep 5 && tail -f log/log.txt"]

3. Deployment with Docker Compose

Using docker-compose makes managing the volumes and network modes much easier. Note that network_mode: host is critical for PXE to intercept DHCP requests correctly.

docker-compose.yml:

version: "3.7"

services:
  iventoy:
    image: iventoy
    build: . # Path to the Dockerfile
    container_name: iventoy
    restart: unless-stopped
    privileged: true
    cap_add:
      - NET_ADMIN
    hostname: iventoy
    network_mode: host
    volumes:
      - /share/Boot-Images:/opt/iventoy/iso:ro
      - /share/container-data/iventoy/config.dat:/opt/iventoy/data/config.dat

4. Management and Testing

Once the container is running, the web interface is accessible at http://<your_ip>:26000. From there, you can customize the boot screen, manage ISOs, and adjust deployment settings.

I tested this setup by booting an openSUSE installation ISO on a Proxmox VM. The client picked up the IP, loaded the iVentoy menu, and started the installation flawlessly!

Conclusion

If you frequently reinstall operating systems or manage a home lab, iVentoy is a must-have. It eliminates the need for physical USB sticks and makes OS deployment as simple as copying a file.