For this, Fedora Server 41 is recommended. Future versions should be compatible. This cannot run on a LXC or Docker container, as it requires a complete OS to run. The recommended specs are:
Operating System: Fedora Server 41
CPU: 4 Cores
Memory: 8GB
Disk: 256GB - 1TB (Depending on how many ISO files you'd like to accomodate, these get duplicated and expanded)
Network: Static IPv4 Address
- Setup DHCP server
sudo dnf install dhcp-serversudo nano /etc/dhcp/dhcpd.conf# # DHCP Server Configuration file. # see /usr/share/doc/dhcp-server/dhcpd.conf.example # see dhcpd.conf(5) man page # subnet 10.0.0.0 netmask 255.255.255.0 { range 10.0.0.50 10.0.0.60; # DHCP lease range option routers 10.0.0.1; # Default gateway option domain-name-servers 10.0.0.1,8.8.8.8; # DNS server (You can specify your own DNS server here) option domain-name "cyber.lab"; # Domain name # PXE boot options next-server 10.0.0.44; # IP of the TFTP server filename "pxelinux.0"; # Bootloader file (e.g., pxelinux.0 for Syslinux) }sudo systemctl enable --now dhcpd
- Setup Loop Devices
sudo modprobe loop- If this fails,
sudo dnf install kernel-modules
- If this fails,
sudo nano /etc/modprobe.d/loop.confoptions loop max_loop=64sudo modprobe -r loopsudo modprobe loop
- Configure
tftpbootdirectorysudo mkdir /var/lib/tftpboot /var/lib/tftpboot/pxelinux.cfgsudo dnf install syslinux -ysudo cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
- Configure firewalld
sudo systemctl enable --now firewalldsudo firewall-cmd --zone=public --permanent --add-service=dhcpsudo firewall-cmd --zone=public --permanent --add-service=tftpsudo firewall-cmd --zone=public --permanent --add-port=8069/tcpsudo firewall-cmd --reload
- Configure selinux
- Reboot
- IPMI port should be the same as the PXE port, MAC is important
databasepackage permissions are relative to a booking (This user is an admin/user/viewer for this booking specifically)authLDAP permissions are relative to the entire program. Only administrators can add/remove/edit hosts, and manage other peoples' bookings.- Lists in the
.envfile are separated by|(KEY=val1|val2|val3)