Media guide
Game streaming with Moonlight WebPlay from your gaming PC in any browser, from anywhere, with Sunshine and Moonlight Web.
You'll need
Everything happens in your browser except step 1.
Run this on the machine where Moonlight Web runs. The container connects out to Seawise.io, so you don't open any ports on your router.
On Docker Desktop for Mac or Windows, replace --network host with -p 8082:8082.
$ docker run -d --name seawise \ --restart unless-stopped \ --network host \ -v seawise-data:/config \ ghcr.io/seawise-io/seawise-client:latest
✓ Container started
On a computer at home, open http://your-server-ip:8082 and create a password for the container's page.
Give the server a name, click Connect, and approve it in the seawise.io tab that opens. Sign up for free there if you haven't yet.
Fill in the name, the address and the port Moonlight Web uses (8080 by default), then click Add.
--network host, use localhost. On Docker Desktop, use host.docker.internal. If Moonlight Web runs on another machine, use its local IP, like 192.168.1.20.Moonlight Web now shows on your Servers page at seawise.io. Click it from any browser, on any network, and you're in.
Go to Portals, create one (say, Family), and add Moonlight Web to it. Then open its sharing settings and add the email of everyone who should get in.
Skip this step if Moonlight Web is just for you.
Send them the portal link. They sign in with the email you added, using Google, GitHub or an email link, and tap Moonlight Web. Nothing to install, on any phone, tablet or laptop.
01
The first user to log in to Moonlight Web becomes the admin. Do that yourself on your local network before anyone else can reach it through Seawise.io.
02
Add a PC with the address localhost (or the gaming PC's LAN IP if Moonlight Web runs elsewhere) and click it to pair. Enter the code on the PIN page of Sunshine's web UI at https://localhost:47990.
03
The built-in STUN servers handle most home connections. If streams fail behind CGNAT or a strict firewall, add a TURN server such as coturn to ice_servers in config.json, or set WEBRTC_ICE_SERVER_0_URL, _USERNAME and _CREDENTIAL in Docker.
Seawise.io can't reach the web server. Run curl http://localhost:8080 on the server, and check bind_address (BIND_ADDRESS in Docker) if you changed it.
The page comes through Seawise.io, but video needs a direct WebRTC connection. In Docker, make sure WEBRTC_PORT_RANGE matches the UDP ports you mapped and WEBRTC_NAT_1TO1_HOST is the host's LAN IP; behind CGNAT, add a TURN server.
As a fallback, set the Data Transport option to Web Sockets. Video then travels through Seawise.io instead of peer to peer, so it counts toward your bandwidth.
If Moonlight Web runs in Docker bridge mode, localhost points at the container, not Sunshine. Add the PC by its LAN IP instead.
Gamepads and keyboard lock only work in a secure context. Your Seawise.io address is HTTPS, so they work there even though they don't on http://server-ip:8080.