Hi,
Didn't do it but to a minimum you will need a dedicated interface for HA check and either a remote controlled power strip or similar functionality on motherboard.
You can have a simple script that keeps the interfaces on the stand by unit down until a failure is detected on the active unit.
Once a failure is detected on active unit, reboot active unit (power recycle) and bring up interfaces on standby unit. Stand by unit become active unit.
On reboot the unit should bring up only the HA interface and check if there is already an active unit. If there is it should remain in stand by, if not it should become active by bringing up the other interfaces.

Hi,
On a HA design you basically needs to double all hardware. Here is an example:

Sorry I didn't spend much time on it but, you get an idea. ISP 1 and 2 are 2 modems each going to separate ISPs, each with 2 connections, preferable 2 IPs or one active one standby link. If your modems come with only one connection then you may need another pair of switches.

The idea is to have as many links always up as possible so lets say you can have
Physical LAN - 192.168.0.1 ( router 1 )
Physical LAN - 192.168.0.2 ( router 2 )

Virtual 192.168.0.3 ( on both router 1 and 2 ) . The virtual link should be the gateway on DHCP. Virtual link will be up on active and down on stand by) . In this way you can save 2 physical NICs and have all NICs up to be able to checked (ex a rodent can eat a cable)

The test script should check the status of the box ( active or standby), for this you can have a flag somewhere and at a minim should monitor if the physical link on master is up or other flag. (ex if 192.168.0.2 is stand-by then it can ping 192.168.0.1 ) . A better test would be to try to go on the internet using the gateway from the master and then using the local setup. If will not be able to go on the internet using the gateway (from active unit) but it can reach the internet using local interface then it can mark the master as failed, reboot master and switch on the virtual interface.
An even better then reboot would be if to be able to mark server as stand by, turn off virtual interface using ssh or other way and keep the reboot as a last resort. (ex os freeze)