Annak érdekében, hogy a Netboot.xyz-t használhassuk rendelkeznünk kell egy alap Linux-os géppel. A számítógépnek fix IP-t kell állítanunk mindenképpen, hogy a PXE megtalálhassa őt. Ezt elvégezhetjük DHCP szerverünkön vagy magán a Linux-os rendszeren belül. Én kiindulásképpen egy Debian 12-vel telepített gépet fogok használni.
Személy szerint a docker-es változatot találtam a legegyszerűbbnek. Ehhez viszont telepítenünk kell a követkevező csomagot.
apt install docker.io
Illetve ezen kívül pár előkészítő lépést is el kell végeznünk. A következő parancsokkal létrehozzuk a megfelelő mappákat a konténernek, a megfelelő jogosultságokkal.
mkdir netbootxyz
mkdir netbootxyz/config
mkdir netbootxyz/assets
chmod 777 netbootxyz
chmod 777 netbootxyz/config
chmod 777 netbootxyz/assets
Ezt követően érdemes csak, lehúzni az image-t.
docker pull ghcr.io/netbootxyz/netbootxyz
Ha ezzel is megvagyunk, akkor pedig következő kóddal létrehozzuk a konténerünket:
docker run -d \
--name=netbootxyz \
-e NGINX_PORT=80 `# optional` \
-e WEB_APP_PORT=3000 `# optional` \
-p 3000:3000 `# sets web configuration interface port, destination should match ${WEB_APP_PORT} variable above.` \
-p 69:69/udp `# sets tftp port` \
-p 8080:80 `# optional, destination should match ${NGINX_PORT} variable above.` \
-v /root/netbootxyz/config:/config `# optional` \
-v /root/netbootxyz/assets:/assets `# optional` \
--restart unless-stopped \
ghcr.io/netbootxyz/netbootxyz
Az említett asset-eket, az assets mappába tudjuk elhelyezni, illetve, ha lokál asset-ek mellett döntünk, úgy azok, ide fognak letöltődni.
Ellenőrzésként pár parancsot érdemes lehet lefuttatni.
root@MGMT:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
65df23e1b4c3 ghcr.io/netbootxyz/netbootxyz "sh /start.sh" 5 seconds ago Up 5 seconds 0.0.0.0:69->69/udp, :::69->69/udp, 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp, 0.0.0.0:8080->80/tcp, :::8080->80/tcp netbootxyz
root@MGMT:~# docker logs netbootxyz
[netbootxyz-init] Downloading netboot.xyz at 2.0.82
2024-11-02 15:50:46,845 INFO Set uid to user 0 succeeded
2024-11-02 15:50:46,847 INFO supervisord started with pid 32
2024-11-02 15:50:47,849 INFO spawned: 'syslog-ng' with pid 33
2024-11-02 15:50:47,850 INFO spawned: 'nginx' with pid 34
2024-11-02 15:50:47,852 INFO spawned: 'webapp' with pid 35
2024-11-02 15:50:47,853 INFO spawned: 'dnsmasq' with pid 36
2024-11-02 15:50:47,859 INFO spawned: 'messages-log' with pid 37
2024-11-02 15:50:47,870 WARN exited: messages-log (exit status 1; not expected)
2024-11-02 15:50:49,113 INFO success: syslog-ng entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2024-11-02 15:50:49,113 INFO success: nginx entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2024-11-02 15:50:49,113 INFO success: webapp entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2024-11-02 15:50:49,113 INFO success: dnsmasq entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2024-11-02 15:50:49,114 INFO spawned: 'messages-log' with pid 50
2024-11-02 15:50:47 notice syslog-ng[33]: syslog-ng starting up; version='4.7.1'
2024-11-02 15:50:50,118 INFO success: messages-log entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
Ha mindent jól csináltunk, akkor a fenti két parancsban nem szabad hibát látnunk. A tool a TCP 3000-es, TCP 8080-as és UDP 69-es portokat használja. Ezeket akár "ss -lpn" paranccsal ellenőrizhetjük is.
A következő parancsok segítségünkre lehetnek, akkor, ha nem vagyunk annyira jártassak a docker-ban.
Letöltjük a legfrissebb image-t:
docker pull ghcr.io/netbootxyz/netbootxyz
Megállíthatjuk vele a netbootxyz létező konténerét:
docker stop netbootxyz
Törölhetjük vele a netbootxyz létező konténerét (előfeltétele, hogy leállítjuk a konténert):
docker rm netbootxyz
Elindíthatjuk vele a konténert:
docker run -d netbootxyz