Update:
I "fixed it" with https://mmonit.com/wiki/Monit/Installationmonit
Basically, each 60 seconds it will check if my "eth0" ethernet interface is up. If not, it tries to wake it up.
If for some reason, the port/board cannot wake up the ethernet interface... I have a secondary check (ping Google DNS IP 10 times in a row -> one per minute). If 10/10 failed, it reboots the board.
Is not ideal, but now I have a "hands free" board. This is in a countryside, so before this "patch", I had to take my car to manually power-cycle the board hahaha
Here you have, the config I used:
## Start Monit in the background (run as a daemon):
#
set daemon 60 # check services at 60 seconds intervals
with start delay 120 # optional: delay the first check by 2-minutes (by
# # default Monit check immediately after Monit start)
#
set log /var/log/monit.log
set idfile /var/lib/monit/id
set statefile /var/lib/monit/state
set eventqueue
basedir /var/lib/monit/events # set the base directory where events will be stored
slots 100 # optionally limit the queue size
###############################################################################
## Services
###############################################################################
##
check network eth0 with interface eth0
start program = "/sbin/ifconfig eth0 up"
stop program = "/sbin/ifconfig eth0 down"
if link down then restart
check host 8.8.8.8 with address 8.8.8.8
if failed ping count 10 size 128 with timeout 10 seconds then exec "/usr/sbin/reboot"
I hope this can be helpful to somebody.
Regards