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
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.