You have set LHOST to your internal LAN IP in your handler. This is wrong. The value needs to be the same as what you put in the payload. IE. Your public IP.
It doesn’t matter if it can’t bind to the public IP, it will fallback to 0.0.0.0, and will work anyway. The point is that LHOST must be the public IP, as this is the IP address that Meterpreter will try to callback to MSF on.