Automated install via PXE not finding ISO file on Proxmox usually comes down to two things: the NFS share isn’t exported right, or the installer’s rootwait timeout is too short. Here’s how to fix both.

Walk the PXE chain
PXE boot goes like this: the client gets an IP from DHCP, pulls the bootloader from TFTP, the bootloader grabs the kernel and initrd, then the initrd mounts the ISO over NFS and runs the installer. If the ISO isn’t found, the break is almost always at the NFS mount step.
First, check the NFS export on your server. The Proxmox installer mounts the share as root, so the export needs no_root_squash. If you forget that, the mount fails and the installer says it can’t find the ISO even though the file is right there.
/srv/pxe/proxmox *(ro,sync,no_subtree_check,no_root_squash)
Then on the client side, the kernel command line needs the right NFS path. The Proxmox ISO expects the install directory to be at the root of the share. So if you extracted the ISO to /srv/pxe/proxmox, the root= parameter should point to that directory, not a subfolder.
root=/dev/nfs nfsroot=192.168.1.100:/srv/pxe/proxmox ip=dhcp

The rootwait trap
Even if NFS is set up correctly, the installer can still fail because it gives up too soon. The Proxmox initrd waits for the root device to appear, but NFS mounts can be slow on a busy network. Add rootwait to the kernel command line to make it wait indefinitely instead of timing out.
root=/dev/nfs nfsroot=192.168.1.100:/srv/pxe/proxmox ip=dhcp rootwait
That single parameter fixes a lot of “ISO not found” errors, especially on gigabit networks with cheap switches.
Test it without reinstalling
You can test the NFS mount from any Linux box before you even try PXE booting. Just mount the share manually:
mount -t nfs 192.168.1.100:/srv/pxe/proxmox /mnt
If that fails, the installer will fail too. Fix the export first.
For more on Proxmox boot issues, check out Proxmox Stuck at ‘Loading Initial Ramdisk’.