ITGOIT - Wiki

Netbootxyz

cd /home/myusername/docker
mkdir netbootxyz && cd "$_"

nano docker-compose.yml

services:
  netbootxyz:
    image: lscr.io/linuxserver/netbootxyz:latest
    container_name: netbootxyz
    restart: unless-stopped
    environment:
      PUID: 1000
      PGID: 1000
      TZ: Etc/UTC
#      MENU_VERSION: 1.9.9 #optional unset is latest version
      PORT_RANGE: 30000:30010 #optional
      SUBFOLDER: / #optional
    volumes:
      - ./config:/config
      - ./assets:/assets
    ports:
      - 9170:3000
      - 9171:69/udp
      - 9172:80 #optional
    
  samba:
    image: servercontainers/samba:latest
#    image: ghcr.io/servercontainers/samba
    container_name: netbootxyz-samba
    restart: unless-stopped
    environment:
      MODEL: 'TimeCapsule'
      AVAHI_NAME: netbootsamba
      SAMBA_CONF_LOG_LEVEL: 3
      # uncomment to disable optional services
#      WSDD2_DISABLE: 1
#      AVAHI_DISABLE: 1
      GROUP_family: 1500
      ACCOUNT_netboot: netboot123
      UID_netboot: 1000
      GROUPS_netboot: family
      SAMBA_VOLUME_CONFIG_netbootonly: "[netboot]; path=/shares/netboot; valid users = netboot; guest ok = no; read only = no; browseable = yes"
      SAMBA_VOLUME_CONFIG_shared_home: "[Home]; path=/shares/homes/%U; valid users = netboot, guest ok = no; read only = no; browseable = yes"
      SAMBA_VOLUME_CONFIG_public: "[Public]; path=/shares/public; valid users = netboot, guest ok = no; read only = no; browseable = yes; force group = family"
      SAMBA_VOLUME_CONFIG_public_ro: "[Public ReadOnly]; path=/shares/public; guest ok = yes; read only = yes; browseable = yes; force group = family"
      SAMBA_VOLUME_CONFIG_timemachine: "[TimeMachine]; path=/shares/timemachine/%U; valid users = netboot, guest ok = no; read only = no; browseable = yes; fruit:time machine = yes; fruit:time machine max size = 500G"
    volumes:
      - /etc/avahi/services/:/external/avahi
      - ./samba/shares/netboot:/shares/netboot
      - ./samba/shares/public:/shares/public
      - ./samba/shares/homes:/shares/homes
      - ./samba/shares/timemachine:/shares/timemachine

Configure pxe Netbootxyz with Pi-hole

Requirements
- Pihole

Make sure the Pi-Hole DHCP server is enabled!!!
Settings -> DHCP

cd /home/myusername/docker/pihole/dnsmasq
nano 10-TFTP.conf
dhcp-match=set:bios,60,PXEClient:Arch:00000
dhcp-boot=tag:bios,netboot.xyz.kpxe,,YOUR_NETBOOTXYZ_IP
dhcp-match=set:efi32,60,PXEClient:Arch:00002
dhcp-boot=tag:efi32,netboot.xyz.efi,,YOUR_NETBOOTXYZ_IP
dhcp-match=set:efi32-1,60,PXEClient:Arch:00006
dhcp-boot=tag:efi32-1,netboot.xyz.efi,,YOUR_NETBOOTXYZ_IP
dhcp-match=set:efi64,60,PXEClient:Arch:00007
dhcp-boot=tag:efi64,netboot.xyz.efi,,YOUR_NETBOOTXYZ_IP
dhcp-match=set:efi64-1,60,PXEClient:Arch:00008
dhcp-boot=tag:efi64-1,netboot.xyz.efi,,YOUR_NETBOOTXYZ_IP
dhcp-match=set:efi64-2,60,PXEClient:Arch:00009
dhcp-boot=tag:efi64-2,netboot.xyz.efi,,YOUR_NETBOOTXYZ_IP

Configure Windows

  1. Download the following files make sure they are together in a folder:

https://github.com/deffcolony/ai-toolbox/blob/main/etc/windows/adk-launcher.bat
https://github.com/deffcolony/ai-toolbox/blob/main/etc/windows/adk/startnet.cmd
https://github.com/deffcolony/ai-toolbox/blob/main/etc/windows/adk/unattend.xml

  1. Edit startnet.cmd so it matches your setup

  2. Run adk-launcher.bat

cd /home/myusername/docker/netbootxyz/assets
mkdir -p ./winpe/x64 && 
cd /home/myusername/docker/netbootxyz/samba/shares/netboot/
mkdir -p ./assets/windows/{10,11}

Extract WinPE_amd64.iso then upload all files into x64 folder
Extract Windows 11 or 10 iso then upload all files into /assets/windows/11 or 10 folder

  1. Visit http://YOUR_NETBOOTXYZ_IP:3000

  2. Go to Menus > boot.cfg

  3. Add or replace the following line set win_base_url http://YOUR_NETBOOTXYZ_SAMBA_IP:80/WinPE

  4. Do a networkboot and go to Distributions: > Windows > Load Microsoft Windows Installer....

If Base URL is emty then set it manually:
http://YOUR_NETBOOTXYZ_SAMBA_IP/winpe