For the over-the-internet part, from Sunshine's own docs and source:
Easiest: put both devices on Tailscale or ZeroTier and add the host by its tailnet IP in Moonlight. Nothing gets exposed, and the Moonlight setup guide lists those as the fix when hotel or public Wi-Fi blocks streaming.
Port forwarding (default base port 47989):
TCP 47984, 47989, 48010
UDP 47998, 47999, 48000
Sunshine also has a upnp option (off by default) to open these for you. Don't forward 47990, that's the web UI.
Before you travel: pair while you're still at home, and lower the bitrate in Moonlight. Sunshine's troubleshooting page warns that a fast home upload feeding a slower path causes heavy packet loss. You can test the path with iperf3 on port 5201.
Sources: LizardByte Sunshine docs/configuration.md (port, upnp), src/nvhttp.h, stream.h and rtsp.h (port offsets), docs/troubleshooting.md, plus the moonlight-docs Setup Guide.
