Moonshine: Linux용 헤드리스 게임 스트리밍 서버
Moonshine: Linux용 헤드리스 게임 스트리밍 서버
Moonshine은 Linux에서 헤드리스, 격리된 게임 스트리밍을 가능하게 합니다
Moonshine은 Rust로 작성된 헤드리스 스트리밍 서버로, 사용자가 Linux PC에서 Moonlight 클라이언트를 실행하는 모든 장치로 게임을 스트리밍할 수 있게 해줍니다. 물리적 디스플레이를 미러링하는 기존 스트리밍 솔루션과 달리, Moonshine은 각 스트리밍 세션에 대해 자체적인 격리된 컴포지터(compositor)를 생성합니다. 이는 게임이 원격으로 스트리밍되는 동안 호스트 PC를 다른 작업에 완전히 사용할 수 있음을 의미합니다.
주요 기술적 특징
Moonshine은 물리적 모니터나 HDMI dummy plug가 필요 없는 가볍고 Linux 전용인 구현 방식에 집중함으로써 다른 스트리밍 호스트와 차별화됩니다.
격리된 스트리밍 세션
각 스트림은 호스트의 데스크톱 환경과 완전히 분리된 자체 컴포지터에서 실행됩니다. 이 아키텍처는 호스트 머신을 한 사람이 사용하는 동안 다른 사람이 동일한 하드웨어에서 게임을 스트리밍할 수 있는 멀티 시트(multi-seat)와 유사한 기능을 제공합니다.
헤드리스 운영 및 가상 디스플레이
Moonshine은 자체 컴포지터를 제어하므로, 물리적 모니터나 dummy plug 없이도 원하는 해상도나 재생률로 가상 디스플레이를 생성할 수 있습니다. 또한, 호스트에 연결된 물리적 모니터가 HDR을 지원하지 않더라도 즉시 HDR 지원(10-bit)이 가능합니다.
하드웨어 인코딩 및 성능
Moonshine은 낮은 지연 시간을 위해 Vulkan video encoding을 활용합니다. 다음을 지원합니다:
- Codecs: H.264, H.265, 그리고 AV1 (AV1은 현재 실험적 단계이며, driver version 595.44.3.0 미만인 NVIDIA GPU에서는 문제가 발생할 수 있습니다).
- Audio: 스테레오 및 서라운드 사운드(5.1/7.1)를 지원하는 저지연 Opus 인코딩.
- Input: 마우스, 키보드, 게임패드(haptics, touchpads, motion controls 포함)에 대한 완전한 지원.
시스템 요구 사항 및 설치
Moonshine은 Vulkan 인코딩을 지원하기 위한 특정 하드웨어 요구 사항을 갖춘 현대적인 Linux 환경을 위해 설계되었습니다.
요구 사항
- OS: Linux (Arch Linux에서 테스트됨).
- Init System: systemd (프로세스 관리를 위해 필요).
- GPU: Vulkan video encoding을 지원하는 GPU (NVIDIA RTX, AMD RDNA2+, 또는 Intel Arc).
- Client: Moonlight v6.0.0 이상.
Arch Linux에서의 설치
사용자는 AUR을 통해 Moonshine을 설치할 수 있습니다:
yay -S moonshine
서버가 활성 사용자 로그인 없이도 애플리케이션을 실행할 수 있도록 하려면, 사용자는 lingering을 활성화해야 합니다:
sudo loginctl enable-linger $USER
sudo systemctl enable --now moonshine@$USER
설정 및 애플리케이션 관리
Moonshine은 설정을 위해 config.toml 파일을 사용합니다. 수동 설정을 줄이기 위해 자동 스캐너를 포함하고 있습니다.
애플리케이션 추가
애플리케이션은 실행할 command와 함께 설정 파일에 정의됩니다. Moonshine은 또한 pre_command 및 post_command 배열을 지원하여, 사용자가 세션 전후에 환경 변화(예: 충돌하는 서비스 중지 또는 GPU 전력 상태 변경)를 스크립트로 제어할 수 있게 합니다.
애플리케이션 스캐너
설정을 간소화하기 위해 Moonshine은 내장된 스캐너를를 제공합니다:
- Steam Scanner: 설치된 Steam 게임을 자동으로 감지하여 Big Picture mode로 실행합니다.
- Desktop Scanner: 표준 시스템 및 사용자 디렉토리의
.desktop파일을 통해 애플리케이션을을 찾습니다.
Sunshine과 다른 도구와의 비교
Sunshine이 오픈 소스 GameStream 호스트의 업계 표준이지만, Moonshine은 헤드리스 서버를 위한 특정 아키텍처적 이점을 제공합니다.
Moonshine vs. Sunshine
Sunshine은 더 넓은 기능 세트를 가진 크로스 플랫폼 도구입니다. 하지만 Sunshine은 일반적으로 기존 데스크톱 세션션을을 미러링합니다. Moonshine의 격리된 컴포지터 사용은 실행 중인 데스크톱 환경에 의리지하지 않고 데스크톱 환경에 의존하지 않음을 의미하며, 이는 헤드리스 Linux 서버에 더 적합한 선택이 됩니다.
생태계 맥락
커뮤니티 논의에서는 Apollo와 Artemis 같은 포크(fork) 버전과 Games on Whales와 같은 프로젝트를 포함하여 스트리밍 도구의 복잡한 생태계가 언급됩니다. Moonshine의 제작자가 논의에서 언급했듯이:
"At its core it's similar to Sunshine but with one important difference: Moonshine creates its own compositor and does not rely on an existing desktop environment."
보안 경고
Moonshine은 공용 네트워크에서 사용하도록 설계되지 않았습니다. GameStream 프로토콜은 애플리케이션 수준의의 완전한 암호화를 제공하지 않습니다. 인터넷을 통해 스트리밍하는 사용자는 Tailscale, WireGuard, 또는 ZeroTier와 같은 안전한 터널을 사용해야 하며, Moonshine 포트를 직접 인터넷에 노출시키지 말아야 합니다.