Creating a Network Install Server on RHEL 8 allows administrators to provide operating system installation files over the network instead of relying on local ISO media. This approach is especially useful in virtualization environments where multiple virtual machines need to be deployed efficiently.
In this guide, we will demonstrate how to configure an HTTP-based Network Install Server using Apache (httpd) on Red Hat Enterprise Linux 8. The server will host the RHEL installation files and make them available for virtual machine installations managed through KVM and virt-manager.
If you’re using KVM with virt-manager to manage your virtual machines, there are basically two ways to install the Guest OS:
- Using a Local Media (ISO image or CD/DVD).
- Using a Network Install Server (via HTTP, HTTPS, or FTP).
We’ve written an article explaining all the necessary steps to install KVM on RHEL 8 – https://dpcvirtualtips.com/running-vms-on-rhel-8/.
Step-by-step to create the HTTP Server
1- Install Apache (httpd) and enable/start the httpd daemon:
dnf install -y httpd
systemctl enable --now httpd
systemctl status httpd

2- Add a firewall rule to allow external access to the httpd daemon:
firewall-cmd --permanent --add-service=http
firewall-cmd --reload
firewall-cmd --list-services

3- Create a local directory in /var/www/html to store all RHEL 8 installation files.
We need to mount the installation ISO and copy all content to the created directory. Let’s do that:
# Create the directory "rhel8-install":
cd /var/www/html/
mkdir rhel8-install
# Create a temp dir to mount the DVD ISO:
mkdir /mnt/ISO
mount -o loop /ISOs/rhel-8.10-x86_64-dvd.iso /mnt/ISO/
# Copy the entire content to the destination dir:
cp -r /mnt/ISO/.* /var/www/html/rhel8-install/
# Unmount the ISO:
umount /mnt/ISO
# Remove the httpd welcome file and restart the httpd daemon:
mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.old
systemctl restart httpd
4- The next step is to create a virtual host file for our Red Hat installation directory.
Create the configuration file “/etc/httpd/conf.d/rhel8-install.conf” and add the following content:
<VirtualHost *:80>
ServerAdmin webmaster@example.com
ServerName rhel8-install.lab.local
DocumentRoot /var/www/html/rhel8-install
<Directory /var/www/html/rhel8-install>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
ErrorLog /var/log/httpd/rhel8-install-error.log
CustomLog /var/log/httpd/rhel8-install-access.log combined
</VirtualHost>
Afterward, restart the httpd daemon:
systemctl restart httpd
5- Add a firewall rule allowing HTTP access through the NAT interface (192.168.122.1) used by the KVM:
firewall-cmd --zone=libvirt --add-service=http --permanent
firewall-cmd --reload
6- In the KVM hypervisor, open Firefox and access the http page using the IP 192.168.122.1:

7- Execute the virt-manager and create a new virtual machine:












That’s it for now 🙂
