Steam Link보다 손은 조금 더 가지만, 지연시간, 화질, HDR, 고주사율, 비Steam 게임까지 제대로 잡고 싶을 때 쓰는 조합이다. 이 가이드는 Windows 게이밍 PC를 기준으로 먼저 끝내고, Linux/macOS와 외부망 세팅은 필요한 만큼 확장하는 흐름으로 정리했다.
Host PC: Sunshine
게임 실행, 화면 캡처, 하드웨어 인코딩, 컨트롤러 입력 수신.
Client: Moonlight
PC, Steam Deck, Android TV, iPad, Apple TV, Xbox, webOS TV 등에서 재생.
처음이면 세부 옵션을 건드리지 말고, 같은 공유기 안에서 페어링까지 성공시키는 것이 먼저다.
Windows x64 PC라면 Sunshine 최신 릴리스의 Windows AMD64 installer를 받는다. 설치 후 재부팅이 필요할 수 있고, Windows 설치판은 서비스로 실행되는 흐름이 기본이다.
브라우저가 자동으로 열리지 않으면 아래 주소를 연다. 자체 서명 인증서라 보안 경고가 뜰 수 있는데, 로컬 설정 페이지라 계속 진행하면 된다.
https://localhost:47990/처음 만든 사용자명과 비밀번호는 잊지 말 것. 이 화면에 접근할 수 있는 사람은 새 클라이언트를 페어링할 수 있다.
PC, Android, iOS/tvOS, ChromeOS, Steam Link 하드웨어, Xbox 커뮤니티 포트 등 기기에 맞는 Moonlight를 설치한다. Android TV나 핸드헬드라면 스토어 버전부터 쓰는 편이 쉽다.
Moonlight를 열면 PC가 자동으로 보이는 경우가 많다. 안 보이면 PC의 내부 IP를 직접 추가한다. Moonlight에 표시된 PIN을 Sunshine Web UI의 PIN 화면에 입력하면 페어링이 끝난다.
Sunshine에는 Steam과 Desktop 항목이 기본으로 잡히는 경우가 많다. 먼저 Desktop으로 마우스/키보드/패드 입력과 오디오가 모두 들어오는지 확인하고, 그 다음 게임별 항목을 추가한다.
Sunshine은 게임이 실제로 돌아가는 호스트 PC에, Moonlight는 화면을 볼 기기에 설치한다.
Moonlight용 셀프호스팅 게임 스트림 서버다. AMD, Intel, NVIDIA GPU의 하드웨어 인코딩을 지원하고, 설정과 페어링은 Web UI에서 한다.
거실 TV, 핸드헬드, 태블릿, 노트북에서 PC 화면을 받아 재생한다. 공식 설명 기준 4K HDR, 120FPS 스트리밍을 지원한다.
처음에는 1080p, 60FPS, 25-40Mbps, HEVC 우선, V-Sync 켬으로 안정성을 확인한다. 이후 해상도와 주사율을 올린다.
| 대상 | 설치 선택 | 메모 |
|---|---|---|
| Windows 호스트 | Sunshine Windows AMD64 installer 또는 ARM64 installer | 컨트롤러 가상 입력이 안 되면 Web UI의 Troubleshooting 탭에서 ViGEmBus를 설치하고 재부팅한다. |
| Linux 호스트 | 배포판별 deb/rpm/AUR/Flatpak/AppImage | 공식 문서는 배포판 패키지를 우선 권장한다. AppImage/Flatpak은 KMS capture 제약이 있다. |
| macOS 호스트 | Sunshine macOS dmg | Sunshine의 macOS 호스트는 실험적 성격이 남아 있다. 첫 실행 때 화면 기록과 마이크 권한을 허용한다. |
| PC 클라이언트 | Moonlight PC installer, portable, dmg, Flatpak, Snap, AppImage | Moonlight PC 최신 안정 릴리스는 2026년 6월 확인 기준 v6.1.0이다. |
| 모바일/TV | Google Play, App Store, F-Droid, Amazon Appstore, Microsoft Store 등 | Android TV, Apple TV, Xbox, LG webOS 등은 기기별 입력 지연과 디코더 성능 차이가 크다. |
첫 페어링은 반드시 집 안 네트워크에서 먼저 성공시키는 편이 좋다. iOS/tvOS는 같은 네트워크에서 페어링해야 한다.
기본 주소는 https://localhost:47990이다. 다른 기기에서 접근해야 한다면 localhost 대신 호스트 PC의 내부 IP를 넣는다.
Moonlight에서 호스트를 누르면 PIN이 나온다. Sunshine Web UI에 로그인한 뒤 PIN 메뉴에서 그 숫자와 기기명을 넣는다.
Steam, Desktop이 있으면 그대로 테스트한다. Epic, Battle.net, Playnite, 개별 게임 실행 파일은 Sunshine Web UI의 Applications에서 추가한다.
게임 런처는 실행 후 바로 종료되는 명령으로 잡히면 스트림이 끊길 수 있다. 이 경우 detached 실행이나 Desktop 스트리밍 쪽이 더 안정적이다.
Windows에서 가상 게임패드가 필요하면 ViGEmBus가 필요하다. Sunshine을 서비스 또는 관리자 권한으로 실행한 상태에서 Web UI의 Troubleshooting 탭으로 설치할 수 있다.
Moonlight의 Add PC에 호스트 PC의 내부 IP를 넣는다. 그래도 안 되면 Windows 방화벽, 공유기 AP isolation, Sunshine 서비스 실행 상태를 확인한다.
좋은 값은 기기 조합마다 다르다. 아래 표에서 시작한 뒤 Moonlight 성능 오버레이로 dropped frame, decode time, network latency를 보며 조정한다.
호스트 PC는 가능하면 유선 LAN, TV는 게임 모드, 클라이언트는 5GHz/6GHz Wi-Fi 또는 유선. 호스트 디스플레이 주사율과 Moonlight FPS를 맞추고, 필요할 때만 V-Sync 끄기를 테스트한다.
H.264는 호환성, HEVC는 효율, AV1은 지원 GPU/클라이언트가 있을 때 고화질에 유리하다. AV1이 끊기면 HEVC로 바로 내려서 비교한다.
호스트 OS에서 HDR을 켜고, Moonlight 클라이언트 설정에서도 HDR을 켜야 한다. Windows 호스트는 HEVC Main 10 또는 AV1 10-bit 인코딩을 지원하는 Intel, AMD, NVIDIA GPU가 필요하다.
헤드리스 PC나 TV와 다른 해상도로 스트리밍하려면 가상 디스플레이 드라이버 또는 HDMI 더미 플러그가 필요할 수 있다. eGPU 캡처는 표시 장치가 연결된 GPU 제약을 확인한다.
집 밖에서 접속하려면 먼저 집 안에서 페어링을 끝낸 뒤, 네트워크 방식을 하나만 선택해서 단순하게 운영한다.
| 방식 | 난이도 | 언제 쓰나 | 주의점 |
|---|---|---|---|
| Tailscale/ZeroTier/Meshnet | 중간 | 포트포워딩 없이 내 기기끼리만 연결하고 싶을 때 | 양쪽 기기가 같은 가상 네트워크에 있어야 하고, 릴레이 경유 시 지연이 늘 수 있다. |
| Sunshine UPnP | 쉬움 | 공유기가 UPnP를 잘 지원하고 빠르게 열어보고 싶을 때 | 공유기/ISP 환경에 따라 실패한다. 보안 정책상 UPnP를 꺼두는 집도 많다. |
| 수동 포트포워딩 | 어려움 | 고정적으로 외부 접속 품질을 맞추고 싶을 때 | 호스트 PC의 DHCP 예약이 필요하다. CGNAT 환경이면 공인 IPv4 포워딩이 안 될 수 있다. |
| IPv6 | 어려움 | 호스트와 클라이언트 모두 네이티브 IPv6가 안정적일 때 | 라우터 IPv6 방화벽에서 포트를 허용해야 할 수 있다. 네트워크 지식이 필요하다. |
Sunshine과 Windows 방화벽이 자동 규칙을 만들지 못했을 때만 관리자 PowerShell/명령 프롬프트에서 실행한다.
netsh advfirewall firewall add rule name="GameStream UDP" dir=in protocol=udp localport=5353,47998-48010 action=allownetsh advfirewall firewall add rule name="GameStream TCP" dir=in protocol=tcp localport=47984,47989,48010 action=allowLinux 호스트에서 사용자 서비스로 Sunshine을 켜고 부팅 시 자동 시작하려면 아래 명령을 쓴다.
systemctl --user --now enable app-dev.lizardbyte.app.Sunshine증상별로 하나씩만 바꿔가며 테스트한다. 여러 설정을 동시에 바꾸면 원인을 찾기 어렵다.
소프트웨어 설치 정보는 변할 수 있어서 공식 문서와 릴리스 페이지를 우선했다.