What can you do if you are behind NAT but can't do port forwarding and don't want to pay for a virtual server with internet-facing IP? I read the answer to this question which suggests some tunneling software (e.g. ionide, pwnat) but those have to be installed on the target machine too and you can't use them with Meterpreter. That question is four years old so are there better alternatives now?
I think Meterpreter Bind Shells are what you want. They typically bind and listen on a specific port on the remote target, so no port forwarding is needed on your side. However, the target must have the ports Meterpreter uses open to the Internet, not only Local Area Network. Read more about Bind Shells here.