cd /home/myusername/docker
mkdir netbootxyz && cd "$_"
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
| 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
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
Edit startnet.cmd so it matches your setup
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
Visit http://YOUR_NETBOOTXYZ_IP:3000
Go to Menus > boot.cfg
Add or replace the following line set win_base_url http://YOUR_NETBOOTXYZ_SAMBA_IP:80/WinPE
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