Cloud gaming subscriptions keep raising prices, and services like GeForce NOW and Xbox Cloud Gaming still cap you to their own game libraries and server locations. If you already own a gaming PC, there’s a free alternative that routes your own hardware to any screen in the house, or anywhere with an internet connection: Sunshine paired with Moonlight. As of October 19, 2026, the project’s newest builds are Sunshine v2026.1010.172628 and Moonlight PC/Qt v6.2.0, both released in October 2026, and together they turn a single gaming PC into a private streaming server for every TV, laptop, phone, and handheld in your home.
This tutorial walks through the full setup from a cold install to a hardened, always-on background service, covering Windows, Linux, SteamOS, and Steam Deck hosts, plus Android, iOS, tvOS, and desktop clients. You’ll get 13 numbered steps, five-plus copy-paste code blocks, six data tables, a complete working project for a whole-house rig, and a troubleshooting section built from the most common failure points people hit when self-hosting game streaming in 2026.
Don't miss new tech stories on Google
Add Tech Insider once in the Google app and our stories appear in your news suggestions.
What Sunshine and Moonlight Actually Do
Sunshine is an open-source game-streaming host that runs on the PC doing the actual gaming. It captures the screen, encodes the video using your GPU’s hardware encoder, and sends that stream over the network. Moonlight is the client side: a free app that decodes the stream and displays it on whatever screen you’re using, whether that’s a TV, a phone, a laptop, or a handheld gaming device. The pairing exists because NVIDIA retired its original GameStream service, and the open-source community built Sunshine and Moonlight as the direct, actively maintained replacement under the LizardByte project umbrella.
The core appeal is ownership. You’re not paying a monthly fee to rent server time, you’re not limited to a vendor’s game catalog, and you’re not waiting in a queue behind other subscribers during peak hours. Every game you already own on Steam, Epic, GOG, Battle.net, or any other launcher becomes streamable the moment Sunshine is running. The tradeoff is that your host PC has to be powered on and your home network has to be configured correctly, which is exactly what this guide walks through step by step.
Moonlight ships official clients for Windows, macOS, and Linux desktops, plus Android, iOS, tvOS, and Linux-based handhelds such as Steam Deck. That breadth matters because it means a single Sunshine host can simultaneously serve a living-room Android TV box, a bedroom iPad, and a handheld PC, each getting its own independent stream tuned to its own screen and network conditions.
Why Self-Hosted Streaming Took Off in 2026
Self-hosted game streaming existed in a rougher form for years before it became a mainstream recommendation. The original driving force was NVIDIA’s GameStream, a first-party feature that let owners of GeForce GPUs stream to the NVIDIA Shield TV and a handful of supported mobile apps. When NVIDIA discontinued GameStream, the open-source community didn’t let the underlying idea die; it rebuilt the host side from scratch as Sunshine and kept Moonlight, the original open-source client, actively maintained and expanded to far more platforms than GameStream ever officially supported.
That history matters for a practical reason: unlike the original GameStream, Sunshine isn’t locked to a single GPU vendor. AMD and Intel hardware encoders work just as well as NVIDIA’s NVENC, which is why this guide treats all three encoder families as equally valid starting points rather than assuming everyone is running a GeForce card. The project’s rapid release cadence, with the host and client both shipping meaningful updates roughly every few weeks throughout 2026, reflects an active community rather than an abandoned side project, which is part of why it has become the default recommendation anywhere this topic comes up.
Sunshine + Moonlight vs Steam Link vs Parsec vs GeForce NOW
Before installing anything, it helps to see where this self-hosted approach sits next to the other streaming options people search for in 2026. Steam Link is Valve’s own first-party streaming client, limited to the Steam library and generally tied to a local network. Parsec is a polished freemium option originally built for remote desktop and co-op play. GeForce NOW is the subscription cloud-gaming route, where NVIDIA’s own servers run the game instead of your PC.
| Platform | Cost | Game Library | Hosts Your Own PC | Max Resolution | Open Source |
|---|---|---|---|---|---|
| Sunshine + Moonlight | Free | Any launcher you own | Yes | 4K, up to 120 fps | Yes |
| Steam Link | Free | Steam only | Yes | 4K, up to 60 fps | No |
| Parsec | Free tier / paid teams plan | Any launcher you own | Yes | 4K, up to 60 fps | Partial |
| GeForce NOW | Subscription tiers | NVIDIA-supported titles | No | Up to 4K on top tier | No |
| Xbox Cloud Gaming | Included with Game Pass Ultimate | Xbox Game Pass catalog | No | 1080p on most devices | No |
The practical difference is control. With Sunshine and Moonlight, there’s no subscription to cancel, no server queue, and no restriction on which games you can stream, because the stream is just a mirror of whatever is running on your own machine. The cost is setup time and the requirement that your PC stays on and reachable, which is why this guide spends so much time on the networking and background-service steps later on.
Prerequisites: Hardware, Software, and Versions You Need
Sunshine and Moonlight are both lightweight, but a handful of prerequisites determine whether the stream looks good or looks like a slideshow. Check each of these before starting the install.
| Requirement | Minimum | Recommended |
|---|---|---|
| Host software | Sunshine (latest stable) | Sunshine v2026.1010.172628 or newer |
| Client software | Moonlight (latest stable) | Moonlight PC/Qt v6.2.0 or newer, or the matching mobile/tvOS release |
| Host GPU | Any GPU with a hardware video encoder | NVIDIA RTX-series (NVENC), AMD RX-series (AMF/VCE), or Intel Arc/iGPU (QuickSync) |
| Host OS | Windows 10, a modern Linux distro, or SteamOS | Windows 11 or SteamOS 3.x with the latest GPU driver |
| Network | 802.11ac Wi-Fi on the client | Gigabit Ethernet on the host, Wi-Fi 6/6E or Ethernet on the client |
| Bandwidth | 10 Mbps for 1080p streaming | 30-50 Mbps for 4K HDR streaming |
| Client devices | Any Moonlight-supported device | Android TV box, smart TV with Android TV/Google TV, iPad, Steam Deck, or handheld PC |
Gigabit Ethernet on the host PC is the single highest-leverage upgrade you can make if you’re serious about 4K streaming. Wireless congestion on the client side is usually the next biggest source of stutter, which is why a 5 GHz or 6 GHz Wi-Fi band, or better yet a wired connection on the TV side too, consistently produces the cleanest result.
The Network Ports Sunshine Uses
Sunshine communicates over a small, fixed range of TCP and UDP ports for discovery, pairing, the web UI, and the actual video and audio stream. Knowing this range ahead of time makes both the firewall rule in Step 12 and any router configuration much easier to get right the first time, rather than guessing at which ports to open after something fails to connect.
| Port Range | Protocol | Purpose |
|---|---|---|
| 47984 | TCP | HTTPS pairing and handshake |
| 47989 | TCP | HTTP discovery and host info |
| 47990 | TCP | Sunshine web UI |
| 48010 | TCP | RTSP control stream |
| 47998-48000 | UDP | Video, audio, and control data |
| 48002 | UDP | Input (mouse, keyboard, controller) |
On a local network, none of these need any manual router configuration, since everything happens inside your home’s private IP range. They only become relevant if you’re choosing the port-forwarding route for remote play instead of a mesh VPN, in which case every port in this table needs to point at the host PC’s local IP address specifically, not left on “any device” forwarding rules.
Step 1: Confirm Your GPU Has a Hardware Encoder
Software encoding will work in a pinch, but it burns CPU cycles and introduces extra latency, so the first step is confirming your GPU can do the encoding in hardware. NVIDIA GPUs from the GTX 600 series onward support NVENC, AMD GPUs from the RX 400 series onward support AMF/VCE, and Intel GPUs from roughly the 7th-generation Core iGPU onward support QuickSync. If you’re running a dedicated RTX card released in the last few GPU generations, you’re already covered and can move straight to installation.
On Windows, open Task Manager’s Performance tab while a game is running later in this guide to confirm the “Video Encode” engine is active rather than sitting at 0%. On Linux, you can check for VAAPI or NVENC support directly from the terminal.
# Linux: check for VAAPI hardware acceleration support
vainfo
# Linux: check for NVIDIA NVENC support
nvidia-smi --query-gpu=name,driver_version,encoder.stats.sessionCount --format=csv
If vainfo lists H.264 and HEVC encode profiles, or nvidia-smi returns your GPU name without an error, your hardware encoder is ready and recognized by the driver stack that Sunshine will use.
Step 2: Download and Install Sunshine on Windows
On the PC that will host your games, download the Windows installer for the current Sunshine release, which as of this writing is v2026.1010.172628. Run the installer with administrator privileges, since Sunshine needs to register a Windows service and request firewall exceptions during setup. Accept the default install path unless you have a specific reason to change it, and make sure the installer’s option to install the virtual display driver and gamepad emulation components stays checked, since both are needed later for controller input and for streaming to a headless host with no monitor attached.
Once the installer finishes, Sunshine runs as a background service and exposes its configuration through a local web interface rather than a traditional desktop window. That’s intentional: it lets you manage the host remotely from any browser on the same network, which becomes useful once the PC is tucked away without a monitor connected.
Step 3: Install Sunshine on Linux, SteamOS, or a Steam Deck
Linux users have two clean install paths: a native package for traditional distros, or a Flatpak build that also works well on SteamOS and Steam Deck in Desktop Mode. The Flatpak route is the one most people should use on SteamOS, since it avoids touching the read-only system partition.
# Install Sunshine via Flatpak (works on SteamOS, Bazzite, and most desktop Linux distros)
flatpak install flathub dev.lizardbyte.app.Sunshine
# Launch it once to generate the initial config and certificates
flatpak run dev.lizardbyte.app.Sunshine
On a Steam Deck specifically, switch to Desktop Mode first, open the Discover store or a terminal, run the Flatpak command above, then switch back to Gaming Mode once setup is complete so the Deck can still be used as a portable Moonlight client elsewhere in the house when it isn’t hosting. If you’d rather compare whole alternate Linux handheld operating systems before committing a device to host duty, a recent three-way breakdown of Bazzite, SteamOS, and ChimeraOS is worth reading, since all three can run the Flatpak build of Sunshine.
Step 4: Complete the Sunshine Web UI First-Run Setup
With Sunshine installed, open a browser on the same PC and navigate to the local web UI, which listens on port 47990 by default.
# Open the Sunshine Web UI locally
https://localhost:47990
Your browser will flag the connection as untrusted because Sunshine generates a self-signed certificate on first launch; this is expected, and you can safely proceed past the warning on a local connection. The setup wizard will ask you to create a username and password for the web UI, which is separate from any pairing PIN you’ll use later for Moonlight clients. Set a strong password here, since this login controls host settings, application shortcuts, and in some configurations can be reached from outside your network if you enable remote access later.
Step 5: Install the Moonlight Client on Your TV, Phone, or Laptop
Moonlight has official builds for nearly every screen you’d want to stream to. For an Android TV box or a smart TV running Google TV, install Moonlight from the Google Play Store or the Android TV app store directly on the device. For iOS and tvOS, install it from the Apple App Store. For Windows, macOS, and Linux desktops, grab the PC/Qt client, currently at v6.2.0, from the official Moonlight site.
Handheld gaming PCs and Linux-based devices can also run Moonlight as a client rather than a host, which is a common second use case once a Steam Deck or similar device is already set up for emulation front ends. If you’re already running a handheld emulation frontend alongside Moonlight, the approach used by newer Android-focused frontends like Cartridge’s 3D interface shows how modern launchers increasingly treat streaming apps and emulators as entries in the same unified library, rather than separate silos.
Step 6: Pair Moonlight With Your Sunshine Host
Open Moonlight on the client device. It should automatically discover any Sunshine host on the same local network via mDNS and list it by the host PC’s name. Tap or click the discovered host, and Sunshine will generate a four-digit PIN. Enter that PIN back in the Sunshine web UI’s pairing screen within the short time window it’s valid, usually under a minute, and the pairing completes.
If auto-discovery doesn’t find your host, which happens most often on networks with client isolation enabled or VLANs separating devices, add the host manually by typing its local IP address into Moonlight instead. You can find that address in the host PC’s network settings or by checking your router’s connected-devices list.
Step 7: Add Games and Desktop Shortcuts as Stream Targets
By default, Sunshine streams your entire desktop, which works fine but means you’re navigating a full Windows or Linux desktop with a controller. For a cleaner experience, add individual applications in the Sunshine web UI’s Applications tab. Each entry needs a display name, an optional launch command that starts the game or launcher directly, and an optional image for the Moonlight tile.
A common pattern is to add Steam Big Picture Mode as one app entry, Epic Games Store as another, and any standalone game you play often as its own dedicated entry with the exact executable path. That way, Moonlight’s home screen on the TV becomes a simple grid of launch points instead of a full desktop you have to mouse around in with a gamepad’s virtual cursor.
Step 8: Tune Resolution, Bitrate, and Encoder Settings
Stream quality comes down to three numbers: resolution, frame rate, and bitrate, all of which are set from the Moonlight client side before you connect, not from the Sunshine host. Moonlight’s settings screen lets you pick a target resolution and frame rate, and bitrate scales automatically unless you override it manually.
| Target Resolution | Frame Rate | Suggested Bitrate | Minimum Network |
|---|---|---|---|
| 720p | 60 fps | 5-10 Mbps | Wi-Fi 5 (802.11ac) |
| 1080p | 60 fps | 15-20 Mbps | Wi-Fi 5 (802.11ac) |
| 1440p | 60 fps | 25-35 Mbps | Wi-Fi 6 or Ethernet |
| 4K | 60 fps | 40-60 Mbps | Gigabit Ethernet recommended |
| 4K | 120 fps | 80-100+ Mbps | Gigabit Ethernet required |
Pick HEVC (H.265) over H.264 when your client device supports it, since HEVC delivers noticeably better image quality at the same bitrate, which matters most at 4K. AV1 is available on newer GPUs and clients too and compresses even more efficiently, but compatibility is less universal across older Android TV boxes, so H.264 remains the safest fallback if you see decode errors on an older client.
Step 9: Configure HDR, Audio, and Controller Mapping
HDR streaming requires three things to line up: an HDR-capable game or Windows HDR mode enabled on the host, an HDR toggle switched on inside Moonlight’s display settings, and an HDR-capable panel on the client end, whether that’s a TV or monitor. If any one of those three is missing, Moonlight will either refuse to negotiate HDR or will display washed-out, grayish colors, which is one of the most common complaints in Sunshine’s community support channels.
For audio, Sunshine captures the host’s default playback device and streams it alongside the video, so route your game’s audio to whichever Windows or Linux output device Sunshine is configured to capture. For controllers, Moonlight emulates an Xbox 360 or Xbox One controller to the host PC by default, which covers the vast majority of PC games without any extra configuration. If you’re streaming to a device with its own native controller, such as a Steam Deck or an Xbox-style handheld, Moonlight passes that input straight through using the emulated gamepad layer that Sunshine’s installer set up back in Step 2.
Step 10: Test the Stream on Your Local Network First
Before touching any router settings for remote access, confirm the whole pipeline works on your home Wi-Fi or Ethernet. Launch a game from Moonlight, play for a few minutes, and watch for dropped frames, audio crackle, or input lag. Moonlight has an in-stream statistics overlay, usually toggled with a keyboard shortcut or a settings option, that shows real-time bitrate, frame time, and decode time, which is the fastest way to tell whether a problem is coming from the network, the host’s encoder, or the client’s decoder.
Testing locally first isolates variables. If local streaming is smooth, any problems that show up later with remote access are almost always a networking or bandwidth issue rather than a Sunshine or Moonlight configuration problem.
Step 11: Enable Secure Remote Play Outside Your Home Network
Streaming outside your home network is where most guides go wrong by recommending you forward Sunshine’s ports directly to the public internet. That works, but it exposes a game-streaming host with a video decoder attack surface directly to the open internet, which is not a good trade for the convenience. The safer, and now far more common, approach is to put the host and the remote client on the same private virtual network using a mesh VPN tool, then let Moonlight discover the host exactly as it would on a local network.
# Example: join a private mesh network with Tailscale on both the host and the remote client
# Run this on the Sunshine host PC and on the remote device running Moonlight
tailscale up
# Confirm both devices can see each other on the mesh network
tailscale status
With both devices on the same mesh VPN, Moonlight connects to the host’s mesh-assigned IP address exactly as if you were on the same Wi-Fi network at home, with the VPN handling authentication and encryption so you never need to open inbound ports on your home router at all.
Step 12: Harden Sunshine’s Security Settings
Whether or not you expose Sunshine beyond your home network, a few security settings are worth locking down regardless. Change the default web UI port and credentials from anything you used during testing, keep Sunshine updated to the current release rather than running an old build with known fixed issues, and if you do choose to forward ports directly instead of using a mesh VPN, restrict the firewall rule to specific source IP ranges rather than leaving it open to all addresses.
# Linux: only allow Sunshine's core ports through UFW, scoped to your LAN subnet
sudo ufw allow from 192.168.1.0/24 to any port 47984:47990 proto tcp
sudo ufw allow from 192.168.1.0/24 to any port 47998:48000 proto udp
sudo ufw reload
Adjust the subnet in the example above to match your own LAN’s actual IP range, which you can find from your router’s DHCP settings page. This keeps Sunshine’s ports closed to anything outside your trusted network while still letting every device on your home Wi-Fi reach the host normally.
Step 13: Run Sunshine as a Background Service on Boot
On Windows, the installer already registers Sunshine as a Windows service that starts automatically, so there’s nothing extra to configure unless you disabled that option during install. On Linux, if you installed via Flatpak and want Sunshine running the moment the machine boots, rather than only when you manually launch it, create a systemd user service that starts the Flatpak app automatically.
# ~/.config/systemd/user/sunshine.service
[Unit]
Description=Sunshine game streaming host
After=network-online.target
[Service]
ExecStart=/usr/bin/flatpak run dev.lizardbyte.app.Sunshine
Restart=on-failure
[Install]
WantedBy=default.target
Enable and start it with systemctl --user enable --now sunshine.service, and confirm it’s running with systemctl --user status sunshine.service. From this point forward, the host PC will have Sunshine ready the moment it powers on, with no need to manually launch anything before you can start streaming from another room.
Common Pitfalls When Setting Up Sunshine and Moonlight
- Skipping the hardware encoder check. Falling back to software encoding silently because a GPU driver is outdated causes high CPU usage on the host and visibly worse latency, and it’s easy to miss if you never check Task Manager’s encode engine graph.
- Forgetting the host needs to stay awake. Windows and Linux power plans will happily let a headless PC sleep after a period of inactivity, which kills the stream mid-session; disable sleep and USB selective suspend on the host specifically, not just hibernation.
- Pairing over the wrong network. Guest Wi-Fi networks and IoT VLANs commonly block the mDNS discovery traffic Moonlight relies on, which makes the host invisible even though both devices are technically online.
- Opening ports directly to the internet as a first option. Port forwarding Sunshine without a VPN layer works, but it’s unnecessary exposure for most home setups when a mesh VPN accomplishes the same remote access more safely.
- Ignoring HDR’s three-way requirement. Enabling HDR in only Windows, or only Moonlight, or only on the TV, without all three aligned, produces washed-out color rather than a clean failure message, which confuses a lot of first-time setups.
- Leaving default web UI credentials in place. Many people set a throwaway password during initial testing and never change it before exposing the host more broadly later on.
Troubleshooting Sunshine and Moonlight Streaming Problems
Even a correct setup can run into intermittent issues once real-world network conditions get involved. Here are the most common problems and their fixes.
| Symptom | Likely Cause | Fix |
|---|---|---|
| Black screen on connect | No display attached to a headless host, or virtual display driver not installed | Reinstall Sunshine with the virtual display component enabled, or attach a dummy HDMI plug |
| Host not found during pairing | mDNS blocked by client isolation or VLAN separation | Add the host manually by IP address inside Moonlight |
| Stuttering despite good Wi-Fi signal | 2.4 GHz band congestion or Wi-Fi power-saving mode on the client | Switch the client to 5 GHz/6 GHz or Ethernet, disable adapter power saving |
| Washed-out or dim HDR colors | HDR enabled on only one of host, Moonlight, or display | Verify HDR is toggled on in Windows display settings, Moonlight’s stream settings, and the TV’s input picture mode |
| Controller not responding in-game | Game doesn’t recognize Moonlight’s emulated Xbox controller profile | Switch the game’s input settings to Xbox controller mode, or reinstall Sunshine’s gamepad driver component |
| Audio missing or delayed | Wrong default playback device selected on host | Set the correct output device as default in the host OS sound settings |
| Stream disconnects after a few minutes | Host PC entering sleep or the network adapter entering a low-power state | Disable sleep and USB selective suspend in the host’s power plan |
| High latency only over remote play | Traffic routing through a VPN exit node far from either device | Choose a mesh VPN mode that negotiates a direct peer-to-peer connection instead of relaying |
| Certificate or “connection not private” warnings | Sunshine’s self-signed certificate, which is expected behavior | Proceed past the browser warning on trusted local connections; this is not a sign of compromise |
Advanced Tips for Power Users
Once the basic setup is stable, a few refinements noticeably improve the experience for people who stream daily rather than occasionally. First, if your host GPU and client both support AV1 decoding, switch to it for remote connections specifically, since the bandwidth savings matter most when you’re not on a local gigabit link. Second, create separate Sunshine application profiles with different resolution and frame-rate defaults for each client device, since a handheld’s small screen doesn’t need the same bitrate budget as a 65-inch TV.
Third, if multiple people in the house want to stream from the same host simultaneously, Sunshine supports multiple concurrent sessions, but each one competes for the same GPU encoder and network uplink, so test actual simultaneous performance rather than assuming it will scale linearly. Fourth, pair your setup with a wake-on-LAN configuration so the host PC can be powered on remotely from Moonlight itself before you even walk over to it, eliminating the need to leave the machine running around the clock just in case someone wants to stream later.
Finally, if you’re running a Linux host and want finer control over encoder parameters than the web UI exposes, Sunshine’s configuration file accepts direct FFmpeg-style encoder flags, letting you tune things like B-frames and rate control mode for a specific GPU generation rather than relying entirely on the defaults.
A Complete Working Project: A Whole-House Streaming Rig
Putting every step together, here’s a complete, realistic build: a single gaming PC with an RTX-class GPU and a wired gigabit connection acts as the Sunshine host, running headless in a closet with a dummy HDMI plug attached. Three client devices connect to it: an Android TV box in the living room streaming at 4K 60 fps over Ethernet, a Steam Deck in the bedroom streaming at 1080p 60 fps over 5 GHz Wi-Fi, and a phone running Moonlight over a Tailscale mesh connection for streaming from outside the house entirely.
The host runs Sunshine as a background service that starts on boot, with Steam Big Picture, Epic Games Store, and two standalone games configured as individual application entries so each client’s Moonlight home screen shows a clean grid rather than a bare desktop. Wake-on-LAN is configured so the host can be powered on from any client without a trip to the closet, and UFW firewall rules restrict Sunshine’s ports to the home LAN subnet, with the Tailscale mesh network handling authentication for the one remote client instead of any port forwarding.
This single setup replaces what would otherwise be three separate subscription services, one cloud-gaming plan per room, and instead uses hardware the household already owns, with every client getting access to the exact same full game library at whatever quality the local network can support.
Self-Hosted Streaming vs Subscription Cloud Gaming: The Real Cost Breakdown
The appeal of Sunshine and Moonlight is clearest when you line up the ongoing costs against subscription alternatives over a full year, factoring in that a self-hosted setup only requires a one-time hardware investment if you don’t already own a capable PC.
| Option | Monthly Cost | Annual Cost | Game Access |
|---|---|---|---|
| Sunshine + Moonlight (existing PC) | $0 | $0 | Everything you already own, no catalog limits |
| Sunshine + Moonlight (new budget host PC) | $0 after purchase | One-time hardware cost only | Everything you already own, no catalog limits |
| GeForce NOW subscription | Paid monthly tier | Billed monthly or annually | Limited to supported titles you separately own |
| Xbox Cloud Gaming (Game Pass Ultimate) | Bundled with Game Pass Ultimate | Billed monthly or annually | Game Pass catalog, titles rotate in and out |
| Parsec (paid team tier) | Paid monthly per seat for premium features | Billed monthly or annually | Everything you already own, no catalog limits |
For a household that already owns a capable gaming PC, Sunshine and Moonlight cost nothing beyond electricity, and the game library is simply whatever you’ve already purchased across every launcher, with no rotation and no regional catalog restrictions to work around.
Choosing the Right Client Device for Each Room
Not every room needs the same client hardware. A living room TV benefits most from a dedicated Android TV box or a TV with built-in Google TV, since Moonlight runs natively without needing a separate PC or console nearby. A bedroom setup often works better with a handheld PC or Steam Deck, which doubles as a portable gaming device when you’re not streaming. For a home office or a guest room, any laptop with the Moonlight PC client installed works without any extra hardware purchase at all.
If a client device is also going to double as a standalone emulation or retro-gaming machine when it’s not streaming, it’s worth checking how well that device’s frontend software handles mixed libraries. Reviews of Android-focused launchers such as the one covered in a recent breakdown of DroidDeck’s PC and Windows game support on Android are a useful reference point for judging whether a given Android device can comfortably run Moonlight alongside other gaming software without a jarring interface switch.
Running Sunshine and Moonlight on Handheld Gaming PCs
Handheld gaming PCs occupy an unusual dual role in a Sunshine and Moonlight setup: they’re powerful enough to act as a host in a pinch, but most owners use them as a Moonlight client instead, streaming from a more powerful desktop while the handheld handles only decoding and input. Devices like the Steam Deck, ROG Ally, and Legion Go all run Moonlight natively, either through their Linux-based OS’s app store or through a sideloaded APK on Windows-based handhelds running Android emulation layers.
The practical benefit is battery life. Decoding a video stream draws far less power than actually rendering a game locally, so a handheld streaming from a home server will typically last noticeably longer on a single charge than the same handheld running the game natively, especially for demanding titles that would otherwise push the handheld’s own GPU and fans hard. The tradeoff is that you’re now dependent on Wi-Fi quality wherever you are, which is why handheld-to-Sunshine setups tend to work best within the same home rather than out in public, unless you’ve already configured the mesh VPN layer from Step 11.
For handhelds running SteamOS or a SteamOS-like distribution, Moonlight is typically available directly from Discover or Flathub, installed the same way as any other Flatpak application. For handhelds running Windows, the PC/Qt build of Moonlight works exactly as it does on a desktop, though it’s worth binding Moonlight’s “quit stream” and “toggle stats overlay” hotkeys to the handheld’s back buttons if it has any, since reaching for a keyboard shortcut is awkward on a device with no keyboard attached.
Optimizing for Competitive, Low-Latency Play
Casual single-player streaming tolerates a bit of extra latency without anyone noticing, but competitive multiplayer titles make every extra millisecond obvious. A few settings specifically target latency rather than image quality. First, enable Sunshine’s low-latency or “performance” encoder preset if your GPU exposes one, which trades a small amount of compression efficiency for faster frame encoding. Second, cap Moonlight’s frame rate to match your display’s native refresh rate exactly rather than leaving it uncapped, since mismatched frame pacing between the stream and the display introduces its own stutter independent of network latency.
Third, wired Ethernet beats even the best Wi-Fi 6E connection for consistency, not necessarily raw throughput, since wireless connections introduce small amounts of jitter that a wired connection simply doesn’t have. If Ethernet isn’t an option for the client device, a Wi-Fi 6E connection on a largely uncongested 6 GHz band is the next best thing, since that band has far less interference from neighboring networks and other household devices than the crowded 2.4 GHz and even 5 GHz bands.
Finally, disable any Moonlight or Sunshine frame-smoothing or extra buffering options for competitive play specifically. These features reduce the visible impact of occasional network hiccups, which is great for a relaxed single-player session, but they add a small fixed amount of latency that competitive players would rather trade away in exchange for the most immediate possible response to input.
Maintaining Your Setup After Installation
Sunshine and Moonlight both ship frequent updates, and because this is open-source software with an active community rather than a static commercial product, new releases regularly fix codec bugs, add client platform support, or patch security issues. Check for updates on both the host and every client roughly once a month, and always update the host first, since Moonlight clients are generally built to stay backward compatible with slightly older Sunshine versions but not the other way around.
It’s also worth periodically reviewing the Sunshine web UI’s logs after a problematic session, since encoder errors, dropped-frame warnings, and client disconnect reasons are all logged there in plain language, often pointing directly at whether the issue was host-side, network-side, or client-side without needing to guess.
Using a Dedicated Mini PC Instead of Your Main Desktop as the Host
Not everyone wants to dedicate their main gaming desktop to host duty around the clock, especially in a household where someone else also wants to use that PC for local gaming or work at the same time someone else is streaming. A growing alternative is a small, dedicated mini PC or a repurposed older desktop, built specifically to run Sunshine full time, with the understanding that its own gaming performance is now the ceiling for every stream it serves.
This approach trades some raw performance for flexibility: the main household PC stays free for local use, the dedicated host can live somewhere more convenient for wiring, like a closet near the router, and multiple family members can stream from it independently without fighting over the same physical machine. A mid-range discrete GPU with a modern hardware encoder is normally enough for this role, since the hardware encoder does the heavy lifting rather than the GPU’s actual gaming performance, and a modest card handles 1080p and even 1440p streaming comfortably as long as the games themselves don’t exceed what that GPU can render.
If you go this route, repeat Steps 2 through 4 and Steps 11 through 13 on the dedicated machine specifically, since those are the installation, pairing, and hardening steps that matter regardless of which physical PC ends up as the host. The application-shortcut setup from Step 7 then becomes even more useful, since a dedicated host PC typically has a smaller, more curated game library than someone’s primary desktop.
Frequently Asked Questions
Is Sunshine and Moonlight completely free?
Yes. Both are open-source projects maintained by the LizardByte community, with no subscription fees, no account requirement to stream, and no paid tiers for core functionality.
Do I need a powerful gaming PC to host?
You need a GPU with a hardware video encoder, which covers the vast majority of GPUs sold in the last several years, including integrated graphics on many recent laptop and desktop CPUs. The PC’s actual gaming performance is separate from its ability to host a stream.
Can I stream to multiple devices at the same time?
Yes, Sunshine supports multiple concurrent client sessions, though each additional stream adds load to the host’s encoder and network connection, so performance scaling depends on your specific hardware and uplink.
What’s the difference between Sunshine/Moonlight and Steam Link?
Steam Link only streams games launched through Steam and is built and maintained by Valve. Sunshine and Moonlight stream your entire desktop or any individual application you configure, regardless of which launcher it came from.
Is it safe to use Sunshine over the public internet?
Direct port forwarding works but increases your exposure to the open internet. Using a mesh VPN tool to connect the host and remote client over a private network is the safer, and now more common, approach for remote play.
Why does my stream look blurry even on a fast connection?
Blurriness is usually a bitrate or codec issue rather than a raw speed issue. Raise the bitrate manually in Moonlight’s settings, and switch from H.264 to HEVC or AV1 if both your host and client support it, since those codecs hold detail better at the same data rate.
Can I use Sunshine on a laptop with a hybrid GPU?
Yes, but make sure the game and Sunshine’s capture component are both running on the dedicated GPU rather than the integrated one, since hybrid graphics switching can otherwise route the encode job to a weaker chip without any obvious warning.
Does Moonlight work on game consoles?
Moonlight does not have an official client for PlayStation or Xbox consoles, since both platforms restrict third-party app installation. It does support Android TV boxes, smart TVs running Google TV or Android TV, Apple TV via tvOS, and a wide range of Linux-based handhelds.





