If your network does not allow incoming connections (i.e. there is a firewall you don't control which is blocking all incoming ports), then you will have to use an intermediate server (which is what teamviewer uses).
If you have SSH access to a remote computer you can set up an ssh reverse tunnel to make your local services available remotely.
Otherwise, if you don't mind the potential security risks, there are several online services which provide similar functionality: