Moonshine:Linux 無頭遊戲串流伺服器
Moonshine:Linux 無頭遊戲串流伺服器
Moonshine 讓 Linux 能夠無頭、隔離式的遊戲串流
Moonshine 是一個以 Rust 撰寫的無頭串流伺服器,讓使用者能將 Linux PC 上的遊戲串流至任何執行 Moonlight 客戶端的裝置。與傳統的串流解決方案會鏡射實體顯示器不同,Moonshine 為每個串流會話建立自己的隔離合成器,這意味著主機 PC 在遠端串流遊戲時仍可完整使用於其他工作。
主要技術特點
Moonshine 透過專注於精簡、僅限 Linux 的實作,省去實體螢幕或 HDMI 假接頭的需求,從而與其他串流主機區隔開來。
隔離式串流會話
每個串流都在其獨立的合成器中執行,與主機的桌面環境完全分離。此架構提供類似多座位的功能,讓一位使用者使用主機,另一位則可從同一硬體遠端串流遊戲。
無頭運作與虛擬顯示器
因為 Moonshine 控制自己的合成器,它可以在任意解析度或刷新率下產生虛擬顯示器,無需實體螢幕或假接頭。這也讓 HDR(10 位元)即插即用,即使連接於主機的實體螢幕不支援 HDR,也能正常運作。
硬體編碼與效能
Moonshine 採用 Vulkan 視訊編碼以達到低延遲效能。支援項目包括:
- 編解碼器:H.264、H.265 與 AV1(AV1 仍屬實驗性,於 NVIDIA GPU 上可能在驅動程式 595.44.3.0 之前出現問題)。
- 音訊:低延遲 Opus 編碼,支援立體聲與環繞聲(5.1/7.1)。
- 輸入:完整支援滑鼠、鍵盤與手把,包含觸覺回饋、觸控板與動作控制。
系統需求與安裝
Moonshine 為現代 Linux 環境設計,需具備特定硬體以支援 Vulkan 編碼。
需求
- 作業系統:Linux(已於 Arch Linux 測試)。
- Init 系統:systemd(用於程序管理,必須)。
- GPU:具 Vulkan 視訊編碼支援的顯示卡(NVIDIA RTX、AMD RDNA2+ 或 Intel Arc)。
- 客戶端:Moonlight v6.0.0 或更新版本。
在 Arch Linux 上安裝
使用者可透過 AUR 安裝 Moonshine:
yay -S moonshine
為確保伺服器能在未登入使用者的情況下啟動應用程式,請啟用 linger:
sudo loginctl enable-linger $USER
sudo systemctl enable --now moonshine@$USER
設定與應用程式管理
Moonshine 使用 config.toml 檔案進行設定,內建自動掃描器以減少手動配置。
新增應用程式
在設定檔中以 command 定義要執行的應用程式。Moonshine 亦支援 pre_command 與 post_command 陣列,讓使用者在會話前後撰寫腳本以變更環境(例如停止衝突服務或調整 GPU 電源狀態)。
應用程式掃描器
為簡化設定,Moonshine 內建以下掃描器:
- Steam 掃描器:自動偵測已安裝的 Steam 遊戲,並以 Big Picture 模式啟動。
- Desktop 掃描器:在系統與使用者的標準目錄中搜尋
.desktop檔案以找到應用程式。
與 Sunshine 及其他工具的比較
雖然 Sunshine 是開源 GameStream 主機的業界標準,Moonshine 在無頭伺服器上提供了特定的架構優勢。
Moonshine vs. Sunshine
Sunshine 為跨平台工具,功能較為廣泛。然而,Sunshine 通常會鏡射現有的桌面會話。Moonshine 使用隔離合成器,無需依賴正在執行的桌面環境,因而更適合無頭 Linux 伺服器。
生態系統背景
社群討論顯示串流工具的版圖相當複雜,包含 Apollo、Artemis 等分支,以及 Games on Whales 等專案。正如 Moonshine 的創作者在討論中所說:
"它的核心與 Sunshine 類似,但有一個重要差異:Moonshine 會自行建立合成器,且不依賴既有的桌面環境。"
安全警告
Moonshine 並非設計用於公共網路。GameStream 協定未提供完整的應用層加密。透過網際網路串流的使用者必須使用安全隧道(如 Tailscale、WireGuard 或 ZeroTier),且絕不可直接將 Moonshine 埠號暴露於網際網路上。