← Wszystkie wpisy

iVentoy - Instalacja ISO przez PXE

Instalacja ISO przez sieć lokalną - iVentoy

Wprowadzenie

Instalacja systemów operacyjnych to codzienność w pracy administratorów IT. Ciągłe przygotowywanie nośników, pobieranie i przechowywanie obrazów ISO przez lata stanowiło spore wyzwanie, na które brakowało dobrego rozwiązania. W 2020 roku pojawił się Ventoy, który radykalnie uprościł ten proces. Dziś wystarczy skopiować kilka plików ISO na jeden nośnik, by podczas uruchamiania komputera wybrać interesujący nas system z czytelnego menu bootowania. Dzięki swoim zaletom Ventoy stał się niezwykle popularnym narzędziem - czy da się jednak ten proces usprawnić jeszcze bardziej?

Główne problemy

Ventoy, pomimo wielu swoich zalet, wciąż obarczony jest problemami. Nie wynikają one jednak z samego narzędzia, lecz ze specyfiki pracy administratora. Pomyśl, ile razy zapodziałeś gdzieś swojego pendrive'a z instalatorem na stanowisku testowym albo ile razy uruchamiałeś instalację i okazywało się, że brakuje Ci akurat tego systemu, który chciałeś zainstalować?

Zatem jak każdy inny nośnik Ventoy ma swoje problemy:

  • Ryzyko zgubienia nośnika
  • Brakujące lub nieaktualne obrazy
  • Konieczność ręcznego wgrywania plików ISO na partycję
  • Ograniczenie: często dysponujemy tylko jednym nośnikiem na kilka komputerów

Jaka jest więc alternatywa?

iVentoy - Instaluj przez sieć

Odpowiedzią na te problemy jest iVentoy - narzędzie pozwalające na instalację systemów bezpośrednio przez sieć. Po jego uruchomieniu otrzymujemy wygodny panel zarządzania w przeglądarce internetowej oraz menu PXE dostępne dla wszystkich komputerów w sieci lokalnej. Innymi słowy, jest to stary, dobry Ventoy, ale przeniesiony na centralny serwer, z poziomu którego możesz w jednym miejscu administrować wszystkimi obrazami ISO.

boot_ground Grafika z witryny iventoy.com

Zalety iVentoy

Do głównych zalet możemy zaliczyć:

  • Centralizacja: Jeden serwer przechowujący wszystkie pliki ISO.
  • Skalowalność: Możliwość jednoczesnego uruchamiania różnych instalatorów na wielu maszynach w tym samym czasie.
  • Prosta administracja: Wygodne zarządzanie z poziomu przeglądarki WWW.
  • Elastyczność sieciowa: Wsparcie dla wielu trybów pracy DHCP (w tym współpraca z istniejącymi routerami).
  • Kompleksowość „all-in-one”: Wbudowane serwery HTTP, PXE, TFTP oraz DHCP, które nie wymagają osobnej konfiguracji.
  • Automatyzacja: Możliwość przypisania skryptów automatyzacji do obrazów (np. plików odpowiedzi XML dla nienadzorowanej instalacji Windows).

Warto wspomnieć

Warto jednak pamiętać, że iVentoy - w przeciwieństwie do swojego starszego brata - nie jest w 100% projektem open-source. Niektóre jego elementy posiadają zamknięty kod źródłowy. Wiążą się z tym również pewne ograniczenia licencyjne. W przypadku korzystania z oprogramowania w celach komercyjnych jesteśmy zobowiązani do zakupu płatnej wersji Pro. Z kolei darmowa edycja posiada limit obsługi do 20 klientów jednocześnie. W przypadku domowego środowiska typu HomeLab jest to jednak wartość w zupełności wystarczająca.

Bezpieczeństwo - zanim zaczniesz!

Jako autor tego wpisu czuję się również w obowiązku wspomnieć o kontrowersjach oraz kwestiach związanych z bezpieczeństwem. Sam z powodzeniem używam iVentoy w domowym zaciszu do szybszego uruchamiania instalatorów przez PXE, jednak zanim wdrożysz to narzędzie u siebie - a tym bardziej w środowisku produkcyjnym - koniecznie przeczytaj poniższe ostrzeżenia.

Kontrowersje i problemy z iVentoy

Zanim przejdziesz do konfiguracji, warto wiedzieć, że iVentoy nie jest narzędziem bez skazy. W zgłoszeniu na GitHubie (ventoy/PXE#106) wykazano, że podczas instalacji Windows przez sieć iVentoy instaluje w środowisku WinPE sterownik httpdisk_sig.sys, podpisany samopodpisanym, fałszywym certyfikatem root ("JemmyLoveJenny EV Root CA0") - techniką znaną z narzędzi omijających wymóg podpisywania sterowników jądra, wywodzącą się z kręgów cheat-software/malware. Certyfikat trafia do rejestru Windows jako zaufany root CA. Twórca projektu potwierdził ten fakt w tym samym wątku, zaznaczając, że dotyczy to wyłącznie środowiska instalacyjnego, a nie finalnie zainstalowanego systemu. Do tego dochodzi fakt, że część kodu iVentoy jest zamknięta, więc nie da się w pełni zweryfikować zawartości binarek. Dla mnie to akceptowalne ryzyko w izolowanym homelabie do testów i reinstalacji systemów. Na pytanie czy akceptujesz ryzyko, musisz już odpowiedzieć sobie sam. Pamiętaj też, że instalując to oprogramowanie w firmie, bierzesz odpowiedzialność za dane którymi administrujesz.

Obraz docker

Do uruchomienia iVentoy w Dockerze użyłem nieoficjalnego obrazu szabis/iventoy z Docker Hub. Warto zaznaczyć, że nie jest to oficjalny obraz projektu - zespół iVentoy/Ventoy nie publikuje własnego obrazu Dockera. To jeden z kilku społecznościowych obrazów (obok np. ziggyds/iventoy czy garybowers/iventoy), które pobierają oficjalne archiwum z repozytorium ventoy/PXE i pakują je w kontener. Nie znalazłem publicznego Dockerfile'a dla obrazu szabis/iventoy, więc nie mogłem zweryfikować dokładnego procesu budowania - jeśli zależy Ci na pełnej transparentności, rozważ alternatywę ziggyds/iventoy, która ma jawny, publiczny Dockerfile na GitHubie. Niezależnie od wybranego obrazu, wspomniane wcześniej ryzyka dotyczące samej binarki iVentoy pozostają takie same - wybór obrazu Dockera zmienia jedynie warstwę pakowania, nie zawartość samego narzędzia.

Poniżej znajdziesz instrukcję instalacji, ale upewnij się, że rozumiesz ryzyko i kwestie bezpieczeństwa o których wspominałem.

Instalacja

Projekt posiada oficjalną dokumentację, dlatego nie będę jej tutaj w całości powielał. Jeśli chcesz zainstalować iVentoy w klasyczny sposób, instrukcję twórcy znajdziesz pod tym linkiem: iVentoy - Doc

W tym wpisie chcę jednak pokazać Ci alternatywną metodę – wykorzystamy do tego Dockera, Docker Compose oraz obraz szabis/iventoy:latest. Zanim przejdziemy do właściwej konfiguracji, upewnij się, że spełniasz poniższe warunki.

Wymagania

  • System operacyjny: Maszyna z systemem Linux (w moim przypadku jest to Ubuntu Server 24.04 LTS).
  • Oprogramowanie: Zainstalowany i skonfigurowany Docker oraz wtyczka Docker Compose.
  • Sieć: Host z Dockerem musi znajdować się w tym samym VLAN-ie (tej samej domenie rozgłoszeniowej / broadcast domain), co komputery klienckie PXE.

Przygotowanie katalogów

Kontener iVentoy potrzebuje stałego miejsca na przechowywanie plików ISO, logów oraz danych konfiguracyjnych. Na samym początku przejdź do katalogu, w którym chcesz trzymać pliki projektu, a następnie utwórz strukturę podfolderów za pomocą poniższego polecenia:

mkdir -p data iso driver log user

Plik docker-compose.yml

W miejscu gdzie będziesz uruchamiał kontener i masz już przygotowane katalogi dodaj plik docker-compose.yml. Treść pliku znajdziesz poniżej:

services:
  iventoy:
    image: szabis/iventoy:latest
    container_name: iventoy
    hostname: iventoy
    network_mode: "host"
    privileged: true
    restart: unless-stopped
    environment:
      - AUTO_START_PXE=false
      - TZ=Europe/Warsaw
    volumes:
      - ./data:/opt/iventoy/data
      - ./iso:/opt/iventoy/iso
      - ./driver:/opt/iventoy/driver
      - ./log:/opt/iventoy/log
      - ./user:/opt/iventoy/user
    healthcheck:
      test: ["CMD", "curl", "--fail", "--silent", "--head", "http://localhost:26000/"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 2m

Pierwsze uruchomienie

Przy pierwszym starcie AUTO_START_PXE=true powoduje, że kontener zamyka usługę HTTP/PXE, bo nie ma jeszcze pliku data/config.dat (nie ma czego auto-uruchomić). Zatem zanim włączymy automatyczne uruchamianie PXE musimy skonfigurować system.

Uruchom kontener:

docker compose up -d

Sprawdź czy interfejs WEB nasłuchuje na porcie 26000:

ss -tlnp | grep 26000

Konfiguracja

Wejdź na http://IP_HOSTA:26000 i przejdź do zakładki "Configuration".

Ustaw DHCP Server Mode na tryb bez własnego DHCP:

  • ProxyNet - zalecany, gdy iVentoy i DHCP są w tej samej sieci, ale na różnych systemach.
  • Jeśli UI ma tylko uproszczony wybór Internal/External - wybierz External.

Po tej zmianie w zakładce "Boot Information" znikną pola Subnet Mask / Gateway / IP Pool (iVentoy przestaje rozdawać adresy IP).

Przejdź na zakładkę "Boot Information" i ustaw podane wartości:

Select Server IP - adres hosta w LAN. NIC Name - właściwy interfejs (np. ens18).

Teraz możesz uruchomić serwer klikając w zielony przycisk po prawej stronie.

Automatyczne uruchamianie

Teraz możemy w pliku docker-compose.yml zmienić wartość AUTO_START_PXE z false na true. Po zmianie stwórz kontener ponownie używając komendy poniżej:

docker compose up -d --force-recreate

To tyle z instalacji

Po instalacji możesz zacząć sprawdzać poszczególne funkcje serwera. Zacznij od zakładki "ISO Management" gdzie możesz dodać swoje pierwsze obrazy ISO. Po dodaniu obrazów możesz je uruchomić na komputerze docelowym przez menu PXE (Oczywiście po odpowiednich zmianach w BIOS / EFI komputera).